首页
/ Pandas时间序列数据处理完全指南

Pandas时间序列数据处理完全指南

2025-07-05 01:52:58作者:冯爽妲Honey

时间序列数据是数据分析中最常见的数据类型之一。本文将全面介绍如何使用pandas处理时间序列数据,从基础操作到高级技巧,帮助数据分析师高效处理时间相关的数据。

数据准备

我们使用空气质量数据作为示例,包含NO₂和PM2.5的测量值。数据来自三个监测站:巴黎的FR04014、安特卫普的BETR801和伦敦的London Westminster。

import pandas as pd
import matplotlib.pyplot as plt

air_quality = pd.read_csv("data/air_quality_no2_long.csv")
air_quality = air_quality.rename(columns={"date.utc": "datetime"})

时间戳转换基础

原始数据中的日期通常是字符串格式,我们需要将其转换为pandas的Timestamp对象才能进行时间相关的操作:

air_quality["datetime"] = pd.to_datetime(air_quality["datetime"])

转换后,datetime列变成了datetime64[ns, UTC]类型,这是pandas的Timestamp对象,类似于Python标准库中的datetime.datetime

专业提示:在读取数据时就可以直接转换日期列:

pd.read_csv("data/air_quality_no2_long.csv", parse_dates=["datetime"])

时间属性提取

转换为Timestamp后,我们可以轻松提取各种时间属性:

# 提取月份
air_quality["month"] = air_quality["datetime"].dt.month

# 获取时间范围
start_date = air_quality["datetime"].min()
end_date = air_quality["datetime"].max()
time_span = end_date - start_date  # 计算时间跨度

可用的时间属性包括:

  • year: 年份
  • month: 月份
  • day: 日
  • hour: 小时
  • minute: 分钟
  • second: 秒
  • weekday: 星期几(周一为0)
  • quarter: 季度

时间序列分组分析

利用时间属性可以进行高效的分组分析:

# 按星期几和地点分组计算NO₂平均值
weekday_avg = air_quality.groupby(
    [air_quality["datetime"].dt.weekday, "location"]
)["value"].mean()

# 按小时计算平均值并绘制柱状图
hourly_avg = air_quality.groupby(air_quality["datetime"].dt.hour)["value"].mean()
hourly_avg.plot(kind='bar', figsize=(12, 4))

使用DatetimeIndex

将时间列设为索引可以解锁更多强大功能:

no_2 = air_quality.pivot(index="datetime", columns="location", values="value")

设置时间索引后:

  • 可以直接通过索引访问时间属性:no_2.index.year
  • 支持时间范围的便捷切片:no_2["2019-05-20":"2019-05-21"]
  • 绘图时自动优化时间轴显示

时间重采样

重采样(resampling)是时间序列分析中的核心操作,可以改变数据频率:

# 按月重采样取最大值
monthly_max = no_2.resample("MS").max()

# 按日重采样取平均值并绘图
no_2.resample("D").mean().plot(style="-o", figsize=(10, 5))

常用重采样频率代码:

  • "D": 每日
  • "W": 每周
  • "M": 每月
  • "Q": 每季度
  • "A": 每年
  • "H": 每小时
  • "T"或"min": 每分钟
  • "S": 每秒

最佳实践总结

  1. 日期转换:尽早将日期字符串转换为Timestamp对象
  2. 属性提取:利用dt访问器获取丰富的时间属性
  3. 索引优化:将时间列设为索引以获得额外功能
  4. 智能切片:使用字符串直接切片时间范围
  5. 重采样:灵活改变数据频率满足分析需求

时间序列数据处理是数据分析的基础技能,掌握这些pandas技巧将显著提升你的工作效率和分析能力。在实际项目中,这些方法可以应用于金融数据、物联网传感器数据、日志分析等各种时间相关的数据分析场景。