一、简介
pandas_datareader是一个开源的Python库,可以轻松地从多个数据源获取金融市场数据,包括股票、指数、固定收益、基金、货币、商品、货币对等等。使用pandas_datareader可以方便地获取所需的金融数据,使得数据分析师能够更加集中于分析策略、对策的创建。
二、安装和导入
安装pandas_datareader的方法与pip安装其他Python库相同:
!pip install pandas_datareader
安装完成后,在Python脚本或Jupyter Notebook中,常用的导入方法为
import pandas_datareader as pdr
为方便使用,通常将其下列名设为“pdr”。
三、获取历史股票价格数据
使用pandas_datareader中的er_data.get_data_yahoo()命令,可以获取指定时间范围内指定证券的历史价格数据。
import pandas_datareader as pdr
start_date = '2021/01/01'
end_date = '2021/12/31'
data = pdr.get_data_yahoo('AAPL', start_date, end_date)
print(data.head())
这将获取Apple股票(ticker code: AAPL)的2021年1月1日至2021年12月31日的历史股价。输出的结果如下:
High Low ... Volume Adj Close
Date ...
2021-01-04 133.610001 126.760002 ... 143301900.0 130.814514
2021-01-05 131.740005 128.429993 ... 97664900.0 131.432465
2021-01-06 131.050003 126.379997 ... 155088000.0 126.007957
2021-01-07 131.630005 127.860001 ... 109578200.0 130.307755
2021-01-08 132.630005 130.229996 ... 105158200.0 131.432465
四、获取月或周或日的金融数据
许多策略依赖于获取给定周期汇总数据或具体期间的数据。例如视觉化市场技术分析将依赖于将每日价格数据转换为周或月的OHLC数据。
pandas_datareader的get_data_yahoo()函数取一个参数interval,其中W表示周,M表示月。
import pandas_datareader as pdr
start_date = '2021/01/01'
end_date = '2021/12/31'
data = pdr.get_data_yahoo('AAPL', start_date, end_date, interval='M')
print(data.head())
这将获取Apple股票每月的历史股价数据。输出的结果如下:
High Low ... Volume Adj Close
Date ...
2021-01-31 145.089996 126.260002 ... 1.465064e+09 131.2
2021-02-28 137.979996 122.230003 ... 1.236386e+09 121.2
2021-03-31 133.929993 118.860001 ... 1.383681e+09 122.1
2021-04-30 139.070007 122.769997 ... 1.429428e+09 131.5
2021-05-31 144.880005 124.849998 ... 1.117987e+09 124.6
五、获取股票数据指标
除历史价格数据之外,pandas_datareader还可以获取指标数据,例如:上证综指指数。
from pandas_datareader import data
import pandas_datareader.data as web
start_date = '2021/01/01'
end_date = '2021/12/31'
china_sse_index = web.DataReader("000001.SS", "yahoo", start_date, end_date)
print(china_sse_index.head())
这将获取上证综指指数的2021年1月1日至2021年12月31日的数据。输出的结果如下:
High Low ... Volume Adj Close
Date ...
2021-01-04 3587.340088 3450.570068 ... 0.00 NaN
2021-01-05 3567.080078 3483.310059 ... 0.00 NaN
2021-01-06 3558.090088 3459.600098 ... 0.00 NaN
2021-01-07 3558.962891 3486.685059 ... 0.00 NaN
2021-01-08 3564.739990 3483.689941 ... 0.00 NaN
六、获取其他金融数据资讯源
pandas_datareader支持多种数据源,包括亚马逊AWS, Alpha Vantage, European Central Bank, Nasdaq等。可以使用pandas_datareader.data源获取来自多种来源的财务数据。
例如,以下代码可以从IEX源获取美股的每日开盘和收盘时间。
import pandas_datareader.data as web
df = web.DataReader("^GSPC", "iex", start, end)
df.head()
七、获取美国国债数据
使用FRED API请求可以方便地获取财政、经济和民意数据。 以下代码能够获取美国国债的数据。
from pandas_datareader.data import FREDReader
start_date = '2021-01-01'
end_date = '2021-12-31'
ticker = 'DGS10'
fred = FREDReader(ticker, start_date, end_date)
data = fred.read().dropna()
print(data.head())
这将按日期顺序获取2021年1月1日至2021年12月31日之间的10年期美国国债收益率数据。
八、结论
pandas_datareader是一个非常方便的工具,用于在Python中获取金融数据。无论财务分析师、量化交易员还是股票选手,都可以在获取数据时受益。