← 返回首页

项目07: 时间序列分析

解析日期,按时间维度聚合,分析趋势与波动

📊 数据集预览

使用 sales_data 数据集,包含销售日期、销售额等产品销售时间信息。

sales_data.csv(前5行)

🎯 学习目标

  • 将字符串转换为日期格式
  • 提取年、月、日等时间信息
  • 按时间维度(日、月、年)聚合数据
  • 分析销售额随时间的变化趋势
  • 计算滚动统计量

💡 知识点1: 日期转换

在处理时间序列数据时,首先需要将日期字符串转换为 Pandas 的日期时间格式。

pd.to_datetime() 函数

将字符串、整数或浮点数转换为日期时间格式。

import pandas as pd

df = pd.read_csv('sales_data.csv')
df['sale_date'] = pd.to_datetime(df['sale_date'])
print(df.dtypes)
💡 小贴士:转换后的日期列 dtype 会变为 datetime64[ns],这允许我们使用 .dt 访问器提取各种时间组件。

💡 知识点2: 提取时间组件

使用 .dt 访问器可以从日期列中提取各种时间组件。

常用时间组件

  • .dt.year - 提取年份
  • .dt.month - 提取月份(1-12)
  • .dt.day - 提取日期(1-31)
  • .dt.dayofweek - 提取星期几(0=周一,6=周日)
  • .dt.quarter - 提取季度(1-4)
df['year'] = df['sale_date'].dt.year
df['month'] = df['sale_date'].dt.month
df['day'] = df['sale_date'].dt.day

print(df[['sale_date', 'year', 'month', 'day']].head())
⚠️ 注意:.dt 访问器只能用于日期时间类型的列,如果列是字符串类型,需要先使用 pd.to_datetime() 转换。

💡 知识点3: 按时间聚合

时间序列分析的核心是按不同时间维度聚合数据。

按月聚合

计算每个月的总销售额或平均销售额。

df['total'] = df['quantity'] * df['price']
monthly_sales = df.groupby('month')['total'].sum()
print(monthly_sales)

按年聚合

计算每年的总销售额。

yearly_sales = df.groupby('year')['total'].sum()
print(yearly_sales)
💡 小贴士:除了 .sum(),还可以使用 .mean()(平均值)、.count()(计数)、.max()(最大值)等聚合函数。

💡 知识点4: 数据排序与索引

时间序列数据必须按时间顺序排列才能进行正确的分析。

按日期排序

使用 sort_values() 方法确保数据按时间顺序排列。

df_sorted = df.sort_values('sale_date')
print(df_sorted.head())

设置日期索引

将日期列设置为索引,便于时间序列操作和切片。

df.set_index('sale_date', inplace=True)
print(df.head())
⚠️ 注意:inplace=True 会直接修改原数据框,如果需要保留原数据,请使用 df = df.set_index('sale_date') 或创建一个副本。

💻 代码运行框

代码编辑器
点击"运行代码"查看输出...

🚀 综合练习:完整时间序列分析

整合本项目的所有知识点,完成一个完整的时间序列分析流程。

总代码运行框
点击"运行代码"查看输出...