我有一系列有1000个站的数据系列,每个站都有4个功能(例如温度,风,CO2浓度,太阳辐射)。
所有功能都是按小时分辨率的时间序列。
我在Pandas的支持下在 .csv 文件中读取了这些数据。
现在我需要将它们保存并组织在一起以便更好地重复使用。
我创建了'sample_x,feature_y'标题的列。每列包含sample_x的feature_y的时间序列数据。
这种方法可行但不显示效率。因为我必须创建4000列具有长列名称。
有没有更好的方法来保存Python中的多维度数据。我想要一个简单的解决方案,可以帮助我直接评估和处理特定数据。
非常感谢任何建议或解决方案!
答案 0 :(得分:4)
我认为您可以使用MultiIndex
或Panel
,然后在必要时将数据保存到hdf5
。
函数concat
的参数keys
也会从MultiIndex
创建list of DataFrames
。
样品:
df1 = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5]})
print (df1)
A B C D
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5
df2 = df1 * 10
dfs = [df1, df2]
df3 = pd.concat(dfs, keys=['a','b'])
print (df3)
A B C D
a 0 1 4 7 1
1 2 5 8 3
2 3 6 9 5
b 0 10 40 70 10
1 20 50 80 30
2 30 60 90 50
print (df3.index)
MultiIndex(levels=[['a', 'b'], [0, 1, 2]],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
wp = pd.Panel({'a' : df1, 'b' : df2})
print (wp)
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: a to b
Major_axis axis: 0 to 2
Minor_axis axis: A to D
答案 1 :(得分:2)
您可能希望使用HDF,它是专为处理大量多维数据而设计的。
答案 2 :(得分:2)
最简单的答案可能只是创建一个sqlite3
数据库。
听起来你每小时有6个数据(电台,时间戳,feature1..feature4)乘以1000个电台,然而是很多小时。
这样的6000个数据项(例如,每个4个字节= 24k),24小时/天乘以365天/年(* 8760),或每年约200mb。根据您的回程距离,这对于db文件来说并不算太糟糕。 (如果你要做超过10年,那么是的,去做更大的事情,或者压缩数据或者按年或者某种方式进行分解......)