有没有办法有效地保存和读取多维数据?

时间:2017-03-07 06:08:19

标签: python csv pandas multiple-columns

简介

  • 我有一系列有1000个站的数据系列,每个站都有4个功能(例如温度,风,CO2浓度,太阳辐射)。

  • 所有功能都是按小时分辨率的时间序列。

我在Pandas的支持下在 .csv 文件中读取了这些数据。

现在我需要将它们保存并组织在一起以便更好地重复使用。

我的解决方案

我创建了'sample_x,feature_y'标题的列。每列包含sample_x的feature_y的时间序列数据。

这种方法可行但不显示效率。因为我必须创建4000列具有长列名称。

我的问题

有没有更好的方法来保存Python中的多维度数据。我想要一个简单的解决方案,可以帮助我直接评估和处理特定数据。

非常感谢任何建议或解决方案!

3 个答案:

答案 0 :(得分:4)

我认为您可以使用MultiIndexPanel,然后在必要时将数据保存到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年,那么是的,去做更大的事情,或者压缩数据或者按年或者某种方式进行分解......)