Python时间序列分析:季节图绘制函数seasonal_plot详解
Python时间序列分析:季节图绘制函数seasonal_plot详解
在时间序列分析中,季节图是一种常用的可视化工具,用于展示数据在不同季节周期内的变化趋势。本文将介绍Python中用于绘制季节图的函数seasonal_plot,并详细解释其参数和功能。
函数seasonal_plot代码解读
# annotations: https://stackoverflow.com/a/49238256/5769929
def seasonal_plot(X, y, period, freq, ax=None):
if ax is None:
_, ax = plt.subplots()
palette = sns.color_palette('husl', n_colors=X[period].nunique(),)
ax = sns.lineplot(
x=freq,
y=y,
hue=period,
data=X,
ci=False,
ax=ax,
palette=palette,
legend=False,
)
ax.set_title(f'Seasonal Plot ({period}/{freq})')
for line, name in zip(ax.lines, X[period].unique()):
y_ = line.get_ydata()[-1]
ax.annotate(
name,
xy=(1, y_),
xytext=(6, 0),
color=line.get_color(),
xycoords=ax.get_yaxis_transform(),
textcoords='offset points',
size=14,
va='center',
)
return ax
该函数接收以下参数:
X: 数据集,通常是一个包含时间戳、季节周期和目标变量的DataFrame。y: 目标变量,表示要绘制的数值数据。period: 时间序列的季节周期,例如'Year'、'Month'、'Week'。freq: 时间轴上的单位,例如'D'(天)、'W'(周)、'M'(月)。ax: 可选参数,用于指定要绘制的坐标轴。如果未指定,则会创建一个新的坐标轴。
函数的功能如下:
- 创建坐标轴: 如果未指定
ax参数,则创建一个新的坐标轴。 - 绘制季节图: 使用
sns.lineplot函数绘制每个季节周期的不同颜色的线条,并根据freq参数设置时间轴的单位。 - 设置标题: 设置图形的标题,包含
period和freq信息。 - 添加图例: 在图例中显示每个季节周期的名称。
- 返回坐标轴: 返回绘制好的坐标轴,以便用户可以进一步进行自定义操作。
使用示例
假设我们有一个包含每日流量数据的DataFrame,并希望绘制其按月度变化的季节图。可以按照以下步骤使用seasonal_plot函数:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from pathlib import Path
data_dir = Path('../input/ts-course-data')
tunnel = pd.read_csv(data_dir / 'tunnel.csv', parse_dates=['Day'])
tunnel = tunnel.set_index('Day').to_period('D')
# 绘制季节图
ax = seasonal_plot(tunnel, tunnel['Traffic'], 'Month', 'D')
plt.show()
总结
seasonal_plot函数是绘制时间序列数据季节图的强大工具,可以帮助用户直观地观察不同季节周期之间的变化趋势,并提供对数据季节性的深刻见解。
原文地址: http://www.cveoy.top/t/topic/nUYO 著作权归作者所有。请勿转载和采集!