如何在Matplotlib中将 Pandas dataframe 中的时间作为索引进行绘图?

如何在Matplotlib中将 Pandas dataframe 中的时间作为索引进行绘图?

在数据可视化中,一些常见的数据类型是时间序列数据。许多情况下,我们都需要使用时间作为横轴,并针对其他特征进行绘图。

在本文中,我们将重点关注如何在Matplotlib中将Pandas dataframe中的时间作为索引进行绘图。我们将介绍如何使用Pandas dataframe对时间序列数据进行处理和可视化的最佳实践。

为了说明该过程,我们将使用Pandas和Matplotlib库的示例。

所需环境

在开始之前,我们需要确保我们的环境中已经安装了以下库:

  • Pandas: 用于数据处理和数据分析;
  • Matplotlib: 用于数据可视化和绘图;

您可以通过使用pip install pandas matplotlib命令在终端中安装这些库。

Pandas dataframe 中的时间索引

Pandas dataframe有一个时间索引,用于提供更自然的方法来选择、切片和查询数据。如果您是一个时间序列数据的开发人员,那么时间索引会很重要,因为它不仅使数据更易于使用,还能提高代码的可读性。

时间索引通常是Pandas dataframe中的第一列,有时也被称为“时间戳”列。时间戳列的数据类型必须是Pandas中的datetime64或类似的类型。

创建一个有时间索引的Pandas dataframe

首先,我们将创建一个具有蓝莓销售数据的Pandas dataframe,并使用这个数据来演示如何在Matplotlib中将时间作为索引进行绘图。

import pandas as pd 
import numpy as np 

# 创建时间索引
dates = pd.date_range('20201001', periods=30) 

# 创建蓝莓销售数据 dataframe
df = pd.DataFrame(np.random.rand(30, 3), index=dates, columns=['蓝莓', '草莓', '树莓'])
print(df.head())

这将创建一个名为df的Pandas dataframe,其中包含蓝莓、草莓和树莓的销售数据,并使用日期作为索引。

输出结果应该是这样的:

                  蓝莓        草莓        树莓
2020-10-01  0.759298  0.974995  0.676512
2020-10-02  0.267034  0.001421  0.586945
2020-10-03  0.048402  0.082929  0.873120
2020-10-04  0.911702  0.723145  0.809207
2020-10-05  0.508286  0.711423  0.580089

将Pandas dataframe中的时间索引作为横轴进行绘图

使用Matplotlib,我们可以将时间作为横轴,并绘制蓝莓、草莓、树莓的销售数据。使用代码示例:

import matplotlib.pyplot as plt 

# 创建画布和坐标轴对象ax
fig, ax = plt.subplots()

# 将数据绘制到坐标轴上
df.plot(ax=ax)

# 调整x轴上标签的间距
fig.autofmt_xdate()

# 显示绘制结果
plt.show()

该代码将创建一个画布和一个坐标轴对象,并将DataFrame中的数据绘制到坐标轴对象上。

在Matplotlib中设置横轴为时间

Matplotlib中有许多选项可以设置横轴为时间。在下面的示例中,我们将演示几种最常见的方法。

方法1:使用plot_date()函数

使用plot_date()函数,可以将时间值放置在横轴上。该函数可以接受datetime对象列表作为参数,以及一个与时间列表对应的数值列表作为y轴数据。

import matplotlib.pyplot as plt 

# 创建画布和坐标轴对象ax
fig, ax = plt.subplots()

# 将时间和数据绘制到坐标轴上
ax.plot_date(df.index, df['蓝莓'], '-')

# 设置横轴为时间格式
ax.xaxis.set_major_locator(mdates.DayLocator(interval=5)) 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# 显示绘制结果
plt.show()

该代码将绘制一个折线图,其中横轴为时间。在使用plot_date()函数时,要注意日期格式必须为datetime.datetime对象。

方法2:使用set_xticks()和set_xticklabels()函数

如果您不希望使用plot_date()函数,可以使用set_xticks()和set_xticklabels()函数来更改刻度标签的格式。

import matplotlib.pyplot as plt 

# 创建画布和坐标轴对象ax
fig, ax = plt.subplots()

# 将数据绘制到坐标轴上
df.plot(ax=ax)

# 使用set_xticks()和set_xticklabels()函数更改横轴标签格式
ax.set_xticks(df.index)
ax.set_xticklabels(df.index.strftime("%Y-%m-%d"), rotation=45)

# 显示绘制结果
plt.show()

该代码将绘制一个折线图,其中横轴为时间。set_xticks()和set_xticklabels()函数允许我们自由选择x轴的刻度和标签。

方法3:使用plot()函数和格式化符号

Matplotlib还提供了许多格式化符号,可以将时间转换为日期格式。我们可以使用plot()函数和格式化符号来绘制数据,如下所示:

import matplotlib.pyplot as plt 

# 创建画布和坐标轴对象ax
fig, ax = plt.subplots()

# 将数据绘制到坐标轴上
ax.plot(df.index, df['蓝莓'], '-o')

# 使用format符号将时间转换为日期格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# 显示绘制结果
plt.show()

在这个例子中,我们使用了格式化符号将时间转换为日期格式,并使用-o标记绘制数据。

结论

在本文中,我们介绍了如何在Matplotlib中将Pandas dataframe中的时间作为索引进行绘图。我们演示了如何创建具有时间索引的Pandas dataframe,并使用三种方法来绘制时间序列数据。

使用这些技术,您现在应该能够更好地可视化和分析您的时间序列数据了。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程