Python 如何在同一绘图上轻松绘制两个不同的数据帧?

Python 如何在同一绘图上轻松绘制两个不同的数据帧?,python,pandas,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) 我可以很容易地在各自的绘图上绘制: microsof

让我们想象一下,我得到了特斯拉和微软的股票市场,我想打印出两者的收盘价

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)
或者我可以合并我的两个数据帧

# 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()
后一种解决方案似乎更好,因为我只是简单地绘制我想要的东西,但是合并过程似乎很麻烦


有更好的选择吗?

您可以直接从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()

好吧,你回答了我的问题,但这是一个X-Y答案:(我以股票为例,这不是我真正的用例…哦,好吧,我一开始不明白。如果问题只是图例,对于第一种情况,你可以使用
导入matplotlib.pyplot作为plt
plt.legend(['MSFT',TSLA']))
在绘图中添加图例。