要创建一个大型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。
答案 0 :(得分:0)
不确定,但这可能是因为pandas的全部目的在于并非所有数据都会立即加载到内存中。此外,使用DataFrame
IO操作时会涉及压缩。可能发生的事情是,pandas只是对文件进行了延迟加载,而不是在访问它之前将其读入内存。