如何使用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 ?提前感谢!

你问的是如何创建一个ferquenzy分布从多个数组。这个问题有很多解决办法。你可以用numpy来解它。假设您有以下多维数组

time_series = numpy.array([[0,1,2],[3,4],[5,6,7,8]])

则可以将多维列表连接成一维数组,并使用numpy.unique查找频率分布。numpy.unique返回两个数组,uniquecounts,使用vstack连接。

temp=numpy.concatenate(time_series).ravel().tolist()
distribution = pandas.DataFrame(data=numpy.vstack([numpy.unique(temp, return_counts=True)]).transpose())
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()

最新更新