欢迎来到 Python 基础入门 Day22!在之前的课程中,我们学习了 Pandas 的高级功能,今天我们将探索 时间序列数据的处理与分析。时间序列是许多领域(如金融、气象和物联网)中最常见的数据类型之一,掌握其处理技巧非常重要。
目录
- 时间序列数据的基本概念
- 日期时间数据的处理
- 时间序列的索引与切片
- 时间序列数据的聚合与重采样
- 小结与练习
一、时间序列数据的基本概念
时间序列 是一组按时间顺序排列的数据点,例如:
- 每小时记录的温度。
- 每天的股票收盘价。
- 每月的销售额。
时间序列数据通常包含两部分:
- 时间戳(Timestamp):表示时间点。
- 值(Value):表示对应时间点的数据值。
二、日期时间数据的处理
在 Pandas 中,时间序列数据的处理基于 DatetimeIndex
,它支持灵活的日期操作。
2.1 将字符串转换为日期
使用 pd.to_datetime()
可以将字符串转换为日期时间格式。
import pandas as pd
# 示例数据
data = {"Date": ["2024-01-01", "2024-01-02", "2024-01-03"], "Value": [100, 200, 150]}
df = pd.DataFrame(data)
# 转换日期
df["Date"] = pd.to_datetime(df["Date"])
print(df)
2.2 设置时间为索引
将日期时间列设置为索引,便于时间序列操作。
# 设置日期为索引
df.set_index("Date", inplace=True)
print(df)
输出:
Value
Date
2024-01-01 100
2024-01-02 200
2024-01-03 150
2.3 生成时间序列
使用 pd.date_range()
快速生成时间序列。
# 按天生成日期范围
date_range = pd.date_range(start="2024-01-01", end="2024-01-07", freq="D")
print(date_range)
三、时间序列的索引与切片
时间序列可以通过日期进行索引和切片。
# 创建时间序列数据
ts = pd.Series([1, 2, 3, 4, 5, 6, 7], index=pd.date_range("2024-01-01", periods=7))
# 按日期索引
print(ts["2024-01-03"])
# 按日期范围切片
print(ts["2024-01-02":"2024-01-05"])
四、时间序列数据的聚合与重采样
4.1 重采样(Resampling)
重采样是时间序列处理中常见的操作,用于改变数据的时间频率。
- 向下采样(如从天到月):使用
resample()
。 - 向上采样(如从月到天):使用
asfreq()
。
# 向下采样:按周求和
weekly = ts.resample("W").sum()
print(weekly)
# 向上采样:按天填充缺失值
daily = ts.resample("D").asfreq()
print(daily)
4.2 滑动窗口操作
滑动窗口是一种常用的聚合操作,用于计算滑动平均值或总和。
# 计算3天滑动平均值
rolling_mean = ts.rolling(window=3).mean()
print(rolling_mean)
五、小结与练习
今天,我们学习了时间序列数据的基本概念与操作方法,包括:
- 日期时间数据的处理与索引。
- 时间序列的切片与筛选。
- 数据的重采样与滑动窗口操作。
今日练习题:
- 创建一个时间序列,表示从 2024-01-01 到 2024-01-31 的每日销售额数据。
- 将该时间序列按周重采样,并计算每周的总销售额。
- 使用滑动窗口计算 7 天的销售额滑动平均值。
- 绘制原始数据和滑动平均值的折线图(可使用 Matplotlib)。
下一节预告:在 Day23 中,我们将学习 Pandas 的 数据透视表结合时间序列操作,并探索时间序列的可视化方法。敬请期待!
希望今天的学习对你有所帮助!如有疑问,欢迎讨论 😊。