我正在尝试使用数据帧绘制图表。
我正在使用“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-参数,“高”作为 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"]
:这不是我想要的。
结果如下:
sub_df
)。每个数据框都有Date
和High
,所以只需在循环中绘制它们:sub_df.plot(x='Date',y='High',label=ticker)
。它们将全部显示在同一张图表中。您可能希望添加一个图例来查看哪个是哪个(plt.legend()
)。 - DYZDate
实际上是一个索引。那么你需要使用sub_df.reset_index().plot(...)
。 - DYZ