Python 如何制作带有滚动平均的时间序列图

Python 如何制作带有滚动平均的时间序列图

在本文中,我们将介绍两种使用滚动平均制作Python时间序列图的方法。这两种方法都利用了Matplotlib、Pandas和Seaborn等众所周知的库,这些库在数据操作和可视化方面具有强大的能力。遵循这些方法将能够高效地可视化具有滚动平均的时间序列数据,并了解其一般行为。

两种方法都使用了一系列类似的顺序步骤,包括加载数据、将日期列转换为DateTime对象、计算滚动平均值和生成图表。主要区别在于用于生成图表的库和函数的选择。您可以自由选择最适合您的知识和喜好的策略。

方法

  • 使用Pandas和Matplotlib。

  • 使用Seaborn和Pandas。

注意:下面是使用的数据示例 –

根据需要可以更改文件名。这里的文件名是dataS.csv。

date,value
2022-01-01,10
2022-01-02,15
2022-01-03,12
2022-01-04,18
2022-01-05,20
2022-01-06,17
2022-01-07,14
2022-01-08,16
2022-01-09,19

让我们来详细检查这两种策略−

方法1:使用Pandas和Matplotlib

这种方法使用Pandas和Matplotlib库绘制时间序列图。在流行的图表库Matplotlib中,有大量的工具可用于开发静态、动画和交互式可视化。另一方面,强大的数据操作库Pandas提供了用于处理结构化数据(包括时间序列数据)的有用数据结构和函数。

步骤

步骤1 −导入matplotlib.pyplot进行数据可视化以及导入pandas进行数据操作。

步骤2 −使用pd.read_csv()从CSV文件中加载时间序列数据。假设文件名为”dataS.csv”。

步骤3 −使用pd.to_datetime()将DataFrame的”date”列转换为DateTime对象。

步骤4 −使用data.set_index(‘date’, inplace=True)将列”date”作为DataFrame的索引。

步骤5 −确定滚动平均值计算的窗口大小。根据期望的窗口大小调整window_size变量。

步骤6 −使用data[‘value’].rolling(window=window_size).mean()计算”value”列的滚动平均值。

步骤7 −使用plt.figure()创建图形。根据需要调整figure的大小,例如figsize=(10, 6)。

步骤8 −使用plt.plot(data.index, data[‘value’], label=’Actual’)绘制实际值。

步骤9 −使用plt.plot(data.index, rolling_avg, label=’Rolling Average’)绘制滚动平均值。

步骤10 −使用plt.xlabel()和plt.ylabel()启用x轴和y轴的标签。

步骤11 −使用plt.title()启用图的标题。

步骤12 −使用plt.legend()显示绘制线的图例。

步骤13 −使用plt.grid(True)在图上显示网格。

步骤14 −使用plt.show()显示图。

程序

#pandas library is imported 
import pandas as pd
import matplotlib.pyplot as plt

# Load the time series data
data = pd.read_csv('dataS.csv')

# Transform the column date to a datetime object
data['date'] = pd.to_datetime(data['date'])

# Put the column date column as the index
data.set_index('date', inplace=True)

# Calculate the rolling average
window_size = 7  # Adjust the window size as per your requirement
rolling_avg = data['value'].rolling(window=window_size).mean()

#  Create the plot
plt.figure(figsize=(10, 6))  # Adjust the figure size as needed
plt.plot(data.index, data['value'], label='Actual')
plt.plot(data.index, rolling_avg, label='Rolling Average')
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Time Series Plot with Rolling Average')
plt.legend()
plt.grid(True)
plt.show()

输出

Python 如何制作带有滚动平均的时间序列图

方法2:利用Seaborn和Pandas

这介绍了使用Seaborn,一个基于Matplotlib的高级数据可视化框架。Seaborn是一个优秀的选择,用于开发外观吸引人的时间序列图,因为它提供了一个直观和吸引人的统计图形界面。

步骤1 − 导入seaborn,pandas以及matplotlib.pyplot库。

步骤2 − 使用pd.read_csv()函数从’dataS.csv’文件中获取时间序列数据,并将其存储在data变量中。

步骤3 − 使用pd.to_datetime()函数将数据DataFrame中的’date’列转换为datetime对象。

步骤4 − 使用set_index()方法将列date作为DataFrame的索引。

步骤5 − 为滚动平均计算定义窗口大小。根据需要调整window_size变量。

步骤6 − 使用数据DataFrame的’value’列上的rolling()函数和指定的窗口大小来计算滚动平均值。

步骤7 − 使用plt.figure(figsize=(10, 6))创建一个具有特定大小的新图。

步骤8 − 使用sns.lineplot()和数据DataFrame中的’value’列来绘制实际的时间序列数据。

步骤9 − 使用sns.lineplot()和rolling_avg变量来绘制滚动平均值。

步骤10 − 使用plt.xlabel()设置x轴标签。

步骤11 − 使用plt.ylabel()设置y轴标签。

步骤12 − 使用plt.title()设置图的标题。

步骤13 − 使用plt.legend()显示图例。

步骤14 − 使用plt.grid(True)在图上显示网格线。

步骤15 − 使用plt.show()显示图。

示例

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Step 1: Fill the time series data with the csv file provided
data = pd.read_csv('your_data.csv')

#  Transform the column date to the object of DateTime
data['date'] = pd.to_datetime(data['date'])

# Put the column data as the index
data.set_index('date', inplace=True)

# Adjust the window size as per your requirement
# and then compute the rolling average
window_size = 7  
# rolling_avg = data['value'].rolling(window=window_size).mean()

# Build the plot utilizing Seaborn
plt.figure(figsize=(10, 6))  
# Adjust the figure size as needed
sns.lineplot(data=data['value'], label='Actual')
sns.lineplot(data=rolling_avg, label='Rolling Average')
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Time Series Plot with Rolling Average')
plt.legend()
plt.grid(True)
plt.show()

输出

Python 如何制作带有滚动平均的时间序列图

结论

通过使用Python模块Pandas和Matplotlib,我们可以轻松制作滚动平均时间序列图。由于这些可视化图表,我们可以成功地分析时间相关的数据中的趋势和模式。清晰的代码概述了如何导入数据、转换日期列、计算滚动平均值以及可视化结果。这些方法使我们能够理解数据的行为并得出明智的结论。金融、经济和气候研究都使用时间序列分析和可视化作为有效工具。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程