在其他文章中,我演示了如何在Python中使用quandl来查询时间序列数据,例如股票价格。在这篇文章中,我演示了如何从例如雅虎财务,在Python中使用pandas_datareader模块。
在下面的示例中,我导入pandas_datareader并查询2020-01-01至2020-09-29之间的宝洁股票价格数据:
#导入相关模块
import pandas_datareader.data as web
import datetime
#定义开始和结束日期的日期时间
start_date = datetime.datetime(2020, 1, 1)
end_date = datetime.datetime(2020, 9, 29)
#从开始日期到结束日期之间的给定时间段导入库存数据,形式为Yahoo Finance
df = web.DataReader("PG", "yahoo",start_date, end_date)
#显示返回的数据帧头
df.head()
| High | Low | Open | Close | Volume | Adj Close | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2020-01-02 | 124.730003 | 122.940002 | 124.500000 | 123.410004 | 8130800.0 | 121.104179 |
| 2020-01-03 | 123.529999 | 121.860001 | 122.160004 | 122.580002 | 7970500.0 | 120.289688 |
| 2020-01-06 | 123.190002 | 122.379997 | 122.570000 | 122.750000 | 6674400.0 | 120.456505 |
| 2020-01-07 | 123.209999 | 121.870003 | 122.879997 | 121.989998 | 7583400.0 | 119.710701 |
| 2020-01-08 | 123.430000 | 122.000000 | 122.190002 | 122.510002 | 5385100.0 | 120.220985 |
使用matplotlib.pyplot我可以通过例如可视化数据绘制每日收盘价。这是我在以下代码行中所做的:
#导入matplotlib.pyplot
import matplotlib.pyplot as plt
#创建图
plt.figure(figsize=(17.5,10))
#创建收盘价线图
plt.plot(df.index,df["Close"],color="red")
#添加剧情标题
plt.title("Procter & Gamble daily stock closing prices (src: Yahoo)",size=22)
#添加x轴标签
plt.xlabel("Date",size=16)
#添加y轴标签
plt.ylabel("Closing price [USD]",size=16)
Text(0, 0.5, 'Closing price [USD]')

在下面的另一个示例中,检索和可视化可追溯到2015年的股价数据:
#再次查询数据
df = web.DataReader("PG", "yahoo",datetime.datetime(2015,1,1), datetime.datetime(2020,9,29))
#创建图
plt.figure(figsize=(17.5,10))
#创建收盘价线图
plt.plot(df.index,df["Close"],color="red")
#添加剧情标题
plt.title("Procter & Gamble daily stock closing prices (src: Yahoo)",size=22)
#添加x轴标签
plt.xlabel("Date",size=16)
#添加y轴标签
plt.ylabel("Closing price [USD]",size=16)
Text(0, 0.5, 'Closing price [USD]')

最后还有一个可以追溯到2000年的例子:
#再次查询数据
df = web.DataReader("PG", "yahoo",datetime.datetime(2000,1,1), datetime.datetime(2020,9,29))
#创建图
plt.figure(figsize=(17.5,10))
#创建收盘价线图
plt.plot(df.index,df["Close"],color="red")
#添加剧情标题
plt.title("Procter & Gamble daily stock closing prices (src: Yahoo)",size=22)
#添加x轴标签
plt.xlabel("Date",size=16)
#添加y轴标签
plt.ylabel("Closing price [USD]",size=16)
Text(0, 0.5, 'Closing price [USD]')


专业领域为优化和仿真的工业工程师(R,Python,SQL,VBA)

Leave a Reply