引言
在Pandas的支持下,我在.csv文件中读取了这些数据。
现在我需要将它们保存起来,并组织起来,以便更好地重用它们。
我的解决方案
我创建了名为“sample_x,feature”的列。每一列都包含feature_y for sample_x的时间序列数据。
这种方法是可行的,但没有显示出效率。因为我必须创建像4000列的长列名。
我的问题
是否有更好的方法来保存Python中的多维数据。我想要一个简单的解决方案,可以帮助我直接评估和处理特定的数据。
如有任何建议或解决方案,敬请见谅!
发布于 2017-03-07 06:13:28
我认为您可以使用MultiIndex或Panel,然后在必要时将数据保存到hdf5。
函数concat也有参数keys,它从list of DataFrames创建MultiIndex。
示例:
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发布于 2017-03-07 06:10:39
您可能希望使用HDF,它是专门为处理大量多维数据而设计的。
发布于 2017-03-07 06:43:38
最简单的答案可能只是创建一个sqlite3数据库。
听起来你每小时有6个数据(站,时间戳,feature1..feature4)乘以1000个站点,但是很多小时。
也就是说,每年有6000条数据项(例如,4字节= 24k)、24小时/天乘以365天/年(* 8760)或大约200 at。这取决于您要返回多远,这对于db文件来说并不算太糟。(如果你要做10年以上的事情,那么是的,去做一些更大的事情,或者压缩数据,或者按年份来分解数据.)
https://stackoverflow.com/questions/42641335
复制相似问题