如何使用 Python 将时间序列转换为显示时间序列每个元素计数的两列数据框
How to transform a time series into a two-column dataframe showing the count for each element of the time series, using Python
我在一个文件中有一个数组列表形式的数据:每一行对应一个整数数组,每个数组(它是一个时间序列)的第一个元素对应一个索引。这是一个例子:
1 101 103 238 156 48 78
2 238 420 156 103 26
3 220 103 154 48 101 238 156 26 420
4 26 54 43 103 156 238 48
每一行中的元素数量不同,有些元素出现在多行中,而有些则不同。
我想使用 python 来转换数据,以便我有 2 列:第一列对应于原始数据集中出现的所有整数的列表,另一列是出现的次数。
即在给出的示例中:
26 3
43 1
48 3
54 1
78 1
101 2
103 4
154 1
156 4
220 1
238 4
420 2
谁能告诉我该怎么做?例如,使用 Pandas 或 Numpy 是否有一种直接的方法来做到这一点?
非常感谢!
import pandas as pd
array1 = [1, 101, 103, 238, 156, 48, 78]
array2 = [2, 238, 420, 156, 103, 26]
array3 = [3, 220, 103, 154, 48, 101, 238, 156, 26, 420]
array4 = [4, 26, 54, 43, 103, 156, 238, 48]
pd.Series(list(array1 + array2 + array3 + array4)).value_counts()
您要问的是如何从多个数组创建 ferquenzy 分布。这个问题有很多解决方案。你可以使用 numpy 解决它。
假设您有以下多维数组
time_series = numpy.array([[0,1,2],[3,4],[5,6,7,8]])
然后可以将多维列表拼接成一维数组,用numpy.unique
求频数分布。 numpy.unique
returns 两个数组,unique
和 counts
,使用 vstack 连接。
temp=numpy.concatenate(time_series).ravel().tolist()
distribution = pandas.DataFrame(data=numpy.vstack([numpy.unique(temp, return_counts=True)]).transpose())
我在一个文件中有一个数组列表形式的数据:每一行对应一个整数数组,每个数组(它是一个时间序列)的第一个元素对应一个索引。这是一个例子:
1 101 103 238 156 48 78
2 238 420 156 103 26
3 220 103 154 48 101 238 156 26 420
4 26 54 43 103 156 238 48
每一行中的元素数量不同,有些元素出现在多行中,而有些则不同。
我想使用 python 来转换数据,以便我有 2 列:第一列对应于原始数据集中出现的所有整数的列表,另一列是出现的次数。 即在给出的示例中:
26 3
43 1
48 3
54 1
78 1
101 2
103 4
154 1
156 4
220 1
238 4
420 2
谁能告诉我该怎么做?例如,使用 Pandas 或 Numpy 是否有一种直接的方法来做到这一点? 非常感谢!
import pandas as pd
array1 = [1, 101, 103, 238, 156, 48, 78]
array2 = [2, 238, 420, 156, 103, 26]
array3 = [3, 220, 103, 154, 48, 101, 238, 156, 26, 420]
array4 = [4, 26, 54, 43, 103, 156, 238, 48]
pd.Series(list(array1 + array2 + array3 + array4)).value_counts()
您要问的是如何从多个数组创建 ferquenzy 分布。这个问题有很多解决方案。你可以使用 numpy 解决它。 假设您有以下多维数组
time_series = numpy.array([[0,1,2],[3,4],[5,6,7,8]])
然后可以将多维列表拼接成一维数组,用numpy.unique
求频数分布。 numpy.unique
returns 两个数组,unique
和 counts
,使用 vstack 连接。
temp=numpy.concatenate(time_series).ravel().tolist()
distribution = pandas.DataFrame(data=numpy.vstack([numpy.unique(temp, return_counts=True)]).transpose())