是否有Python Pandas的实现,可以将数据缓存在磁盘上,以避免每次重新生成?
特别是对于财务中的get_yahoo_data
是否有缓存方法?
一个非常好的额外功能:
- 编写的代码行数很少
- 当从同一来源下载新数据时,可以集成持久化序列
是否有Python Pandas的实现,可以将数据缓存在磁盘上,以避免每次重新生成?
特别是对于财务中的get_yahoo_data
是否有缓存方法?
一个非常好的额外功能:
有许多方法可以实现这一点,但可能最简单的方法是使用内置的方法来编写和读取Python pickles。您可以使用pandas.DataFrame.to_pickle
将DataFrame存储到磁盘中,使用pandas.read_pickle
从磁盘中读取所存储的DataFrame。
以下是一个pandas.DataFrame
的示例:
# Store your DataFrame
df.to_pickle('cached_dataframe.pkl') # will be stored in current directory
# Read your DataFrame
df = pandas.read_pickle('cached_dataframe.pkl') # read from current directory
这些方法同样适用于pandas.Series
:
# Store your Series
series.to_pickle('cached_series.pkl') # will be stored in current directory
# Read your DataFrame
series = pandas.read_pickle('cached_series.pkl') # read from current directory
to/read
许多这些格式只需要一行代码即可完成双向转换。Python和Pandas已经尽可能地简化了代码,因此您可以不用太担心。如果您想每天更新股票价格并进行后续使用,我建议使用Pandas with SQL Queries,当然这将添加几行代码来设置数据库连接:
from sqlalchemy import create_engine
new_data = getting_daily_price()
# You can also choose other db drivers instead of `sqlalchemy`
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
new_data.to_sql('table_name', conn) # To Write
df = pd.read_sql_table('sql_query', conn) # To Read