从Pickle打开大型Pandas DataFrame后会出现大延迟

问题描述 投票:0回答:1

要创建一个大型pandas DataFrame(其中数据框中的每个条目都是一个浮点数据,数据和数据帧大约为30,000行和数十列),可以通过调用以下内容在短时间内完成:

import pandas as pd
df = pd.DataFrame(my_dict)

这个df对象创建得非常快(大约0.05秒)。

此外,使用to_pickle和read_pickle保存和调用数据框可以快速完成。

df.to_pickle(save_path)  # takes ~2.5 seconds
reloaded_df = pd.read_pickle(save_path) # takes 0.1 seconds

但是,当我尝试对reloaded_df执行任何操作时,会花费不合理的时间和内存。例如,调用:

 reloaded_df.head()  # Takes many minutes to run and uses a lot of RAM.

为什么重新加载数据框如此之快,但对它进行操作需要这么长时间?另外,在重新加载数据框后,调用reloaded_df.head()会快速返回什么是解决方法?

问题How to store a dataframe using Pandas没有解决我的问题,因为他们没有讨论从pickle文件重新加载后使用pandas数据帧的延迟。

我使用的是python 3.5,pandas版本0.22和Windows 10。

python pandas dataframe
1个回答
0
投票

不确定,但这可能是因为pandas的整个目的是并非所有数据都会立即加载到内存中。此外,使用DataFrame IO操作时会涉及压缩。可能发生的事情是,pandas只是在文件上进行延迟加载,而不是在访问它之前将其读入内存。

© www.soinside.com 2019 - 2024. All rights reserved.