0
我现在有一个运行针对数据库的大型SQL查询,并返回一个数据框大熊猫的结果和图表值的脚本。我目前使用pickle
存储该数据帧,以便对其进行缓存以快速重新运行和调试代码。建议如何存储号码熊猫数据帧缓存
我现在必须开发它来运行20个查询并输出20个图。对于如何存储20个数据帧,从结果缓存的角度进行调试,有没有什么好的建议?
我现在有一个运行针对数据库的大型SQL查询,并返回一个数据框大熊猫的结果和图表值的脚本。我目前使用pickle
存储该数据帧,以便对其进行缓存以快速重新运行和调试代码。建议如何存储号码熊猫数据帧缓存
我现在必须开发它来运行20个查询并输出20个图。对于如何存储20个数据帧,从结果缓存的角度进行调试,有没有什么好的建议?
pickle
绝对是一个很好的路要走。如果你比较不同方法的性能和文件大小,你会看到pickle
是很确定(在IPython
使用%timeit
):
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('sqlite:////home/user/testdb.db')
ts = pd.Series(np.random.randn(1000000), index=range(1000000))
# pickle, file size 23 MB
%timeit ts.to_pickle('p.test')
1 loops, best of 3: 279 ms per loop
# sql via sqllite, file size 33 MB
%timeit ts.to_sql('ts1', engine, if_exists='replace')
1 loops, best of 3: 11.9 s per loop
# json, file size 22 MB
%timeit ts.to_json('p.json')
1 loops, best of 3: 261 ms per loop
的sqlite
开销使得它很慢,只是用于缓存你赢了没有好处(特别是如果你的数据在另一个SQL数据库中)。
你实际上可能会考虑你的目的测试json
,它具有大致相同的速度为pickle
,但你可以阅读其他程序(与d3
例如绘制)的json
编辑数据。