序列化包含熊猫数据框的字典(Python)

Posted

技术标签:

【中文标题】序列化包含熊猫数据框的字典(Python)【英文标题】:Serialize a dictionary containing pandas data-frames (Python) 【发布时间】:2013-07-28 06:20:54 【问题描述】:

我有一个包含几个 pandas Dataframe(由键标识)的 dict,任何有效序列化(并干净加载)它的建议。这是结构(pprint 显示输出)。每个 dict['method_x_']['meas_x_'] 都是一个熊猫数据框。目标是保存数据框以使用一些特定的绘图选项进行进一步绘图。

'方法1':

'meas1':

                          config1   config2
                   0      0.193647  0.204673
                   1      0.251833  0.284560
                   2      0.227573  0.220327,
'meas2':   
                          config1   config2
                   0      0.172787  0.147287
                   1      0.061560  0.094000
                   2      0.045133  0.034760,

'方法2':

'meas1':

                          congif1   config2
                   0      0.193647  0.204673
                   1      0.251833  0.284560
                   2      0.227573  0.220327,

'meas2':

                          config1   config2
                   0      0.172787  0.147287
                   1      0.061560  0.094000
                   2      0.045133  0.034760

【问题讨论】:

【参考方案1】:

使用pickle.dump(s) and pickle.load(s)。它确实有效。 Pandas DataFrames 也有自己的方法 df.save("filename") 可用于序列化单个 DataFrame...

【讨论】:

【参考方案2】:

在我的特定用例中,我尝试做一个简单的pickle.dump(all_df, open("all_df.p","wb"))

当它正确加载时> all_df = pickle.load(open("all_df.p","rb"))

当我重新启动我的 Jupiter 环境时,我会得到一个 UnpicklingError: invalid load key, '\xef'.

here 描述的方法之一表明我们可以使用HDF5 (pytables) 来完成这项工作。从他们的文档中:

HDFStore 是一个类似dict的对象,可以读写pandas

但您使用的tablesversion 似乎很挑剔。在pip install --upgrade tables 并重新启动运行时后,我让我的工作。

如果您需要关于如何使用它的总体思路:

#consider all_df as a list of dataframes
with pd.HDFStore('df_store.h5') as df_store:
    for i in all_df.keys():
        df_store[i] = all_df[i]

您应该有一个df_store.h5 文件,您可以使用相反的过程将其转换回来:

new_all_df = dict()
with pd.HDFStore('df_store.h5') as df_store:
    for i in df_store.keys():
        new_all_df[i] = df_store[i]

【讨论】:

谢谢。 h5py.org 文档是一场噩梦,但也许这仅仅是因为 hdf5 是一场噩梦。

以上是关于序列化包含熊猫数据框的字典(Python)的主要内容,如果未能解决你的问题,请参考以下文章

熊猫数据框的视觉探索[关闭]

绘制熊猫时间序列数据框的线性回归线的置信区间

如何按列绘制数据框的多个字典?蟒蛇熊猫

融化包含字典列的熊猫数据框,以便字典值也被融化

按行分组时如何合并熊猫数据框的字典

python,对大熊猫数据框的操作