【发布时间】:2017-08-02 07:42:52
【问题描述】:
我正在尝试使用数据框绘制图表。
我正在使用“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)
所以在变量data中,有8列=['Date', 'Open', 'High' ,'Low' ,'Close' 'Volume', 'Adj Close','name']
我想要做的是绘制一个图表,将“日期”值作为 x-parameter , 'high' 作为 y 参数,多列作为 'name' 列值(=["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"] :我想要做什么。
结果如下:
【问题讨论】:
-
显示数据框的实际片段会有所帮助。您的原始代码片段没有解释数据框的组织方式,并且基本上是不相关的。
-
@DYZ 我更新了!谢谢你的帮助。
-
您应该使用原始数据框 (
sub_df)。它们每个都有Date和High,所以只需将它们都绘制在一个循环中:sub_df.plot(x='Date',y='High',label=ticker)。它们都将显示在同一个图表中。您可能想添加一个图例以查看哪个是哪个 (plt.legend())。 -
@DYZ 实际上,然后我得到了一个错误(“KeyError:'Date'”),'sub_df.plot(x='Date',y='High',label=ticker)'
-
看起来
Date实际上是一个索引。那你需要sub_df.reset_index().plot(...)。
标签: python pandas numpy plot yahoo-finance