从拼花中读取的熊猫数据帧比从泡菜文件中读取慢

时间:2019-12-20 22:41:46

标签: pandas dataframe pickle parquet

根据https://towardsdatascience.com/the-best-format-to-save-pandas-data-414dca023e0d的基准 它使用分类列作为字符串,数字列作为浮点数, 从镶木地板文件加载时,熊猫数据帧的读取速度应比从泡菜文件读取的速度快。

在以下用例中,我碰巧总是看到相反的情况:我只有一列具有固定数量字符的字符串,其中所有字符都可能在一行到另一行之间变化,这是这些字符串的示例:< / p>

  

./ 20/10 // 12 / 2010-10-12T02:38:47.09Z_blah0.fixedword1.fixedword2

其中除“ fixedword1”和“ fixedword2”以外的所有字符都从一行更改为下一行(这些变化的字符是从2010年到2018年的日期和时间,大约以1秒为增量(增量不是恒定的)。 / p>

在此数据框中,我大约有 1.3亿行

数据帧由包含以下字符串的csv文件构造而成:

df = pd.read_csv(flist, names=['path_str'], dtype=object)

并另存为腌制和镶木地板文件:

parquet_f = os.path.join(parent_dir, 'df.parquet')
df.to_parquet(parquet_f, engine='pyarrow', compression=None)

pickle_f = os.path.join(parent_dir, 'df.pkl')
df.to_pickle(pickle_f)

为什么pickle的文件读取速度比parquet快了parquet 3亿行(具有此类字符串),却出现了相反的情况? 我通过设置相同的行数尝试了上面链接的基准测试,而{{1}}仍然持续更快。

0 个答案:

没有答案