LKM*_*LKM 5 python plot numpy yahoo-finance pandas
我正在尝试使用数据框绘制图表。
我正在使用“pandas_datareader”来获取数据。
所以我的代码如下:
tickers = ["AAPL","GOOG","MSFT","XOM","BRK-A","FB","JNJ","GE","AMZN","WFC"]
import pandas_datareader.data as web
import datetime as dt
end = dt.datetime.now().strftime("%Y-%m-%d")
start = (dt.datetime.now()-dt.timedelta(days=365*3)).strftime("%Y-%m-%d")
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
data = []
for ticker in tickers:
sub_df = web.get_data_yahoo(ticker, start, end)
sub_df["name"] = ticker
data.append(sub_df)
data = pd.concat(data)
Run Code Online (Sandbox Code Playgroud)
所以在变量 中data,有 8 列 =['Date', 'Open', 'High' ,'Low' ,'Close' 'Volume', 'Adj Close','name']
我想要做的是绘制一个图表,将“日期”值作为 x 参数,将“高”值作为 y 参数,将多列作为“名称”列值(=["AAPL","GOOG","MSFT" 、“XOM”、“BRK-A”、“FB”、“JNJ”、“GE”、“AMZN”、“WFC”])。
我怎样才能做到这一点?
当我执行时data.plot(),结果data很好地作为 x 参数,但有 5 列['open','high','low','close','volume','adj close']而不是 7 列["AAPL","GOOG","MSFT","XOM","BRK-A","FB","JNJ","GE","AMZN","WFC"]:我想要做什么。结果如下:

您需要重塑数据,使名称成为数据框的标题,因为您High只想绘图,所以可以提取High和name列,并将其转换为宽格式,然后进行绘图:
import matplotlib as mpl
mpl.rcParams['savefig.dpi'] = 120
high = data[["High", "name"]].set_index("name", append=True).High.unstack("name")
# notice here I scale down the BRK-A column so that it will be at the same scale as other columns
high['BRK-A'] = high['BRK-A']/1000
high.head()
Run Code Online (Sandbox Code Playgroud)
ax = high.plot(figsize = (16, 10))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21971 次 |
| 最近记录: |