如何轻松地在同一张图上绘制两个不同的 DataFrame?

时间:2021-05-15 20:22:31

标签: python pandas

假设我得到了特斯拉和微软的股票市场,我想打印两者的收盘价。

import pandas as pd
import yfinance as yf

start = '2010-01-01'
end = '2020-12-31'
tesla = yf.download('TSLA', start=start, end=end)
microsoft = yf.download('MSFT', start=start, end=end)

我可以轻松地在自己的图上绘制每个图:

microsoft.Close.plot()

或者使用轴在同一个情节上破解它们,但我没有得到图例:

ax = microsoft.Close.plot()
ax = tesla.Close.plot(ax=ax)

或者我可以合并我的两个 DataFrame

# Ugly but elegant...
frames = []
for u in ['microsoft', 'tesla']:
    df = globals()[u]
    df.columns = pd.MultiIndex.from_arrays([[u] * len(df.columns), list(df.columns.values)])
    frames.append(df)
df = pd.merge(*frames, on=["Date"])

df[[('tesla', 'Open'), ('microsoft', 'Open')]].plot()

后一种解决方案似乎更好,因为我只是在绘制我想要的任何内容,但合并过程似乎很麻烦。

还有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

您可以直接从yfinance下载两只股票的数据并绘制开放数据

import pandas as pd
import yfinance as yf

start = '2010-01-01'
end = '2020-12-31'
stocks = ['TSLA', 'MSFT']

data = yf.download(stocks, start=start, end=end)
data['Open'].plot()