首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有有效保存和读取多维数据的方法?

有没有有效保存和读取多维数据的方法?
EN

Stack Overflow用户
提问于 2017-03-07 06:08:19
回答 3查看 119关注 0票数 0

引言

  • 我有1000个台站的一系列数据,每个台站都有4个特征(如温度、风、CO2浓度、太阳辐射)。
  • 所有的功能都是时间序列,每小时分辨率。

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

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

我的解决方案

我创建了名为“sample_x,feature”的列。每一列都包含feature_y for sample_x的时间序列数据。

这种方法是可行的,但没有显示出效率。因为我必须创建像4000列的长列名。

我的问题

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

如有任何建议或解决方案,敬请见谅!

EN

回答 3

Stack Overflow用户

发布于 2017-03-07 06:13:28

我认为您可以使用MultiIndexPanel,然后在必要时将数据保存到hdf5

函数concat也有参数keys,它从list of DataFrames创建MultiIndex

示例:

代码语言:javascript
运行
复制
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]])
代码语言:javascript
运行
复制
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
票数 4
EN

Stack Overflow用户

发布于 2017-03-07 06:10:39

您可能希望使用HDF,它是专门为处理大量多维数据而设计的。

票数 2
EN

Stack Overflow用户

发布于 2017-03-07 06:43:38

最简单的答案可能只是创建一个sqlite3数据库。

听起来你每小时有6个数据(站,时间戳,feature1..feature4)乘以1000个站点,但是很多小时。

也就是说,每年有6000条数据项(例如,4字节= 24k)、24小时/天乘以365天/年(* 8760)或大约200 at。这取决于您要返回多远,这对于db文件来说并不算太糟。(如果你要做10年以上的事情,那么是的,去做一些更大的事情,或者压缩数据,或者按年份来分解数据.)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42641335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档