Python 基础入门 Day22

欢迎来到 Python 基础入门 Day22!在之前的课程中,我们学习了 Pandas 的高级功能,今天我们将探索 时间序列数据的处理与分析。时间序列是许多领域(如金融、气象和物联网)中最常见的数据类型之一,掌握其处理技巧非常重要。


目录

  1. 时间序列数据的基本概念
  2. 日期时间数据的处理
  3. 时间序列的索引与切片
  4. 时间序列数据的聚合与重采样
  5. 小结与练习

一、时间序列数据的基本概念

时间序列 是一组按时间顺序排列的数据点,例如:

  • 每小时记录的温度。
  • 每天的股票收盘价。
  • 每月的销售额。

时间序列数据通常包含两部分:

  1. 时间戳(Timestamp):表示时间点。
  2. 值(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)


五、小结与练习

今天,我们学习了时间序列数据的基本概念与操作方法,包括:

  1. 日期时间数据的处理与索引。
  2. 时间序列的切片与筛选。
  3. 数据的重采样与滑动窗口操作。

今日练习题:

  1. 创建一个时间序列,表示从 2024-01-01 到 2024-01-31 的每日销售额数据。
  2. 将该时间序列按周重采样,并计算每周的总销售额。
  3. 使用滑动窗口计算 7 天的销售额滑动平均值。
  4. 绘制原始数据和滑动平均值的折线图(可使用 Matplotlib)。

下一节预告:在 Day23 中,我们将学习 Pandas 的 数据透视表结合时间序列操作,并探索时间序列的可视化方法。敬请期待!


希望今天的学习对你有所帮助!如有疑问,欢迎讨论 😊。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注