Pandas – 将多个时间序列的DataFrame绘制成一个单一的图形

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)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

Ford_stock:

# code
# importing data
ford = pd.read_csv('Ford_Stock.csv',
                   index_col='Date', 
                   parse_dates=True)
ford.head(10)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

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)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

第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()

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

用不同的日期时间索引绘制数据框架:

在第二个例子中,我们将采取苹果(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)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

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)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

你可以清楚地看到,两个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)

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

我们已经将两个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()

输出:

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

在某些情况下,我们不能失去数据,所以我们也可以在不去除缺失值的情况下绘图,同样的绘图会看起来像。

Pandas - 将多个时间序列的DataFrame绘制成一个单一的图形

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程