Pandas – 将多个时间序列的DataFrame绘制成一个单一的图形
在这篇文章中,我们将看到如何将多个时间序列Dataframe绘制成单一图表。
如果一个DataFrame中有多个时间序列,你仍然可以使用plot()方法来绘制所有时间序列的线形图。要将多个时间序列绘制成一个图,首先我们必须确保所有数据框架的索引是对齐的。因此,让我们举两个例子,一个是索引对齐的例子,另一个是在绘图前必须对齐所有DataFrames的索引的例子。
绘制具有相同日期时间索引的数据帧
第1步:导入库
# importing Libraries
# import pandas as pd
import pandas as pd
# importing matplotlib module
import matplotlib.pyplot as plt
plt.style.use('default')
# %matplotlib inline: only draw static
# images in the notebook
%matplotlib inline
第2步:导入数据
我们将绘制三只股票特斯拉、福特和通用汽车的开盘价,你可以从这里或yfinance库下载数据。
Tesla file:
# code
# importing Data
tesla = pd.read_csv('Tesla_Stock.csv',
index_col='Date',
parse_dates=True)
tesla.head(10)
输出:
Ford_stock:
# code
# importing data
ford = pd.read_csv('Ford_Stock.csv',
index_col='Date',
parse_dates=True)
ford.head(10)
输出:
GM_Stock:
# code
# importing data
gm = pd.read_csv('GM_Stock.csv',
index_col='Date',
parse_dates=True)
# printing 10 entries of the data
gm.head(10)
输出:
第3步:现在绘制股票的公开价格图
# code
# Visualizing The Open Price of all the stocks
# to set the plot size
plt.figure(figsize=(16, 8), dpi=150)
# using plot method to plot open prices.
# in plot method we set the label and color of the curve.
tesla['Open'].plot(label='Tesla', color='orange')
gm['Open'].plot(label='GM')
ford['Open'].plot(label='Ford')
# adding title to the plot
plt.title('Open Price Plot')
# adding Label to the x-axis
plt.xlabel('Years')
# adding legend to the curve
plt.legend()
输出:
用不同的日期时间索引绘制数据框架:
在第二个例子中,我们将采取苹果(AAPL)和微软(MSFT)不同时期的股票价格数据。我们在这里的第一个任务是重新索引任何一个数据框架,使其与另一个数据框架保持一致,然后我们可以将它们绘制在一个图中。
第1步:导入库
# importing Libraries
# import pandas as pd
import pandas as pd
# importing matplotlib module
import matplotlib.pyplot as plt
plt.style.use('default')
# %matplotlib inline: only draw static images in the notebook
%matplotlib inline
第2步:导入数据
# code
aapl = pd.read_csv('aapl.csv',
index_col='Date',
parse_dates=True)
# printing 10 entries of the data
aapl.head(10)
输出:
msft file:
# importing Data
msft = pd.read_csv('msft.csv',
index_col='Date',
parse_dates=True)
# printing 10 entries of the data
msft.head(10)
输出:
你可以清楚地看到,两个DataFrames的DateTime索引是不一样的,所以首先我们必须把它们对齐。当我们将msft的DateTime索引与所有的一样时,那么在2010-01-04到2012-01-02期间我们将有一些缺失的值,在绘制之前,去除缺失的值是非常重要的。
# Aligning index
aapl["MSFT"] = msft.MSFT
# removing Missing Values
aapl.dropna(inplace=True)
aapl.head(10)
输出:
我们已经将两个DataFrame合并成一个DataFrame,现在我们可以简单地绘制它。
# Visualizing The Price of the stocks
# to set the plot size
plt.figure(figsize=(16, 8), dpi=150)
# using .plot method to plot stock prices.
# we have passed colors as a list
aapl.plot(label='aapl', color=['orange', 'green'])
# adding title
plt.title('Price Plot')
# adding label to x-axis
plt.xlabel('Years')
# adding legend.
plt.legend()
输出:
在某些情况下,我们不能失去数据,所以我们也可以在不去除缺失值的情况下绘图,同样的绘图会看起来像。