推荐一种 Python 获取时间序列数据集的方式 pandas_dataloader
背景
来自真实世界场景的数据集对于构建和测试机器学习模型非常重要。如果想要一些时间序列数据来简单试验算法和评估模型但本地却没有测试数据,这种情况下就需要考虑如何拿到人工生成的或者真实的时序数据?
🧐之前都是通过接口自己来解析数据或者人工生成一些时序数据来测试,缺点是比较麻烦或者数据质量不高而且徒然增加自身工作量!作为调包侠这篇文章推荐一种 Python 数据获取库 —— pandas_datareader。
pandas-datareader
Pandas-datareader 是基于 Python 的专门从一系列的公开在线数据库获取数据的工具库,可以实时地从网络中提取想要的数据并将其组装成一个 Pandas DataFrame。该接口在 urllib3 库基础上实现了以客户端身份访问在线数据库的各类金融财经股票数据,包括从Yahoo Finance 获取金融市场数据,从世界银行获取全球发展数据,从圣路易斯联邦储备银行获取经济数据等。
由于网页数据源的限制,pandas_datareader 只支持从有限数量的数据源读取数据,这些数据源大多与金融和经济时间序列相关,支持的输入源如下:
- AlphaVantage
- Federal Reserve Economic Data (FRED)
- Fama-French Data (Ken French’s Data Library)
- Bank of Canada
- Econdb
- Enigma
- Eurostat
- The Investors Exchange (IEX)
- Moscow Exchange (MOEX)
- NASDAQ
- Naver Finance
- Organisation for Economic Co-operation and Development (OECD)
- Quandl
- Stooq.com
- Tiingo
- Thrift Savings Plan (TSP)
- World Bank
- Yahoo Finance
以下通过简单示例说明其效果。
安装及使用
可以直接通过 pip 安装库
1 | pip install pandas_datareader requests |
例如苹果的股票行情是 AAPL,所以我们可以从雅虎财经得到苹果股票的每日历史价格如下:
1 |
|
对应的 dataframe 结果如下:
1 |
|
也可以同时获取多家公司股票数据:
1 | companies = ['AAPL', 'MSFT', 'GE'] |
直接将对应的结果可视化如下
使用 panda-datreader 从另一个数据源读取数据的语法与此类似。例如,我们可以从美联储经济数据 (FRED) 中读取经济时间序列。FRED 中的每个时间序列都由一个符号来标识。例如,所有城市消费者的消费价格指数是 CPIAUCSL,除食品和能源以外的所有项目的消费价格指数是CPILFESL,个人消费支出是PCE,你可以在FRED的网页上搜索和查找符号。
1 | import pandas_datareader as pdr |
此处仅展示冰山一角,获取更多数据源方法可以参考官方文档:https://pydata.github.io/pandas-datareader/index.html