使用Pandas(Matplotlib)将多个时间序列DataFrames绘制到单个图中

使用Pandas(Matplotlib)将多个时间序列DataFrames绘制到单个图中

案例介绍

本文将以一个转载的汽车销售数据集为例,在Python的Pandas(Matplotlib)中展示如何将多个时间序列DataFrames绘制到单个图中。这个数据集里有三个DataFrame,分别是:

  • 销售额(sales):代表每个州在某个时间内的总销售额。
  • 订单量(orders):代表每个州在某个时间内的订单数。
  • 商品量(quantity):代表每个州在某个时间内的商品销售量。

我们将使用Pandas(Matplotlib)将这三个数据框中的数据绘制到同一个图中,以更清晰地了解数据之间的关联和趋势。

开始

首先,我们需要安装必要的依赖。Pandas 和 Matplotlib 库可以直接在 Python 中通过 pip 进行安装。在终端或命令提示符中,输入以下命令即可完成安装:

!pip install pandas
!pip install matplotlib

准备工作完成后,我们开始加载数据。首先,先定义需要使用的库:

import pandas as pd
import matplotlib.pyplot as plt

然后,我们可以从一个CSV文件中加载数据:

sales_df = pd.read_csv('sales.csv')
orders_df = pd.read_csv('orders.csv')
quantity_df = pd.read_csv('quantity.csv')

要在一个图中绘制多个数据框,需要使它们的 index 和 columns 中保持相同的形状。下面我们对数据进行预处理以使它们的索引和列标签相同。

我们需要将每个 DataFrames 中的州名(state)设置为行索引,将时间戳(timestamp)设置为列标签。

sales_df = sales_df.pivot(index='state', columns='timestamp', values='sales')
orders_df = orders_df.pivot(index='state', columns='timestamp', values='orders')
quantity_df = quantity_df.pivot(index='state', columns='timestamp', values='quantity')

为了比较三个数据框, 我们首先创建一个 figure 和 subplots:

fig, ax = plt.subplots()

接下来,我们使用数据框的 .plot() 方法进行绘制。在 plot 方法中传递数据,指定绘制的线类型和颜色。

为了区分每个数据框的线条,我们使用不同的颜色进行绘制。这里我们使用了红色,绿色和蓝色。

sales_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['r'], lw=2)
orders_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['g'], lw=2)
quantity_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['b'], lw=2)

最后,我们将在 ax 对象上设置标题和标签。

ax.set_title('Sales, Orders and Quantity')
ax.set_xlabel('Timestamp')
ax.set_ylabel('Amount')

完整的代码:

import pandas as pd
import matplotlib.pyplot as plt

sales_df = pd.read_csv('sales.csv')
orders_df = pd.read_csv('orders.csv')
quantity_df = pd.read_csv('quantity.csv')

sales_df = sales_df.pivot(index='state', columns='timestamp', values='sales')
orders_df = orders_df.pivot(index='state', columns='timestamp', values='orders')
quantity_df = quantity_df.pivot(index='state', columns='timestamp', values='quantity')

fig, ax = plt.subplots()

sales_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['r'], lw=2)
orders_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['g'], lw=2)
quantity_df.plot(ax=ax, kind='line', figsize=(15,10), legend=True, color=['b'], lw=2)

ax.set_title('Sales, Orders and Quantity')
ax.set_xlabel('Timestamp')
ax.set_ylabel('Amount')

plt.show

结论

通过本文的介绍,我们已经学会了如何使用 Pandas(Matplotlib)将多个时间序列数据框绘制在一个图中。借助 Pandas 的强大功能,我们可以对数据进行不同的转换和变换,以达到更好的可视化效果。同时,Matplotlib 提供了丰富的绘图功能,可以满足各种需求。

在实际分析中,我们可以将多个数据框中的数据按需组合起来,以便更好地比较它们之间的趋势和关联。这种分析方法不仅可以帮助我们更好地理解数据,也可以为做出更准确的决策提供帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程