pandas 日期数据处理:从类型转换到按周期统计实战

闻溪
闻溪
发布时间:2026-10-13| 3人浏览过
原创

本文详解 pandas 中日期类型数据的处理流程,涵盖 Timestamp 与 datetime 的转换、read_csv 中 parse_dates 的使用,以及利用 dt 属性提取年月日信息。重点介绍通过 strftime 和 to_period 方法生成格式化周期字段,并结合 pivot_table 实现按月份、季度及年度的 SKU 销售金额统计,提供完整的代码示例与数据透视表生成步骤。

pandas 日期类型概览

pandas 库中主要包含以下几类日期与时间数据类型:

Concept Scalar Class Array Class pandas Data Type Primary Creation Method
Date times Timestamp DatetimeIndex datetime64[ns] or datetime64[ns, tz] to_datetime or date_range
Time deltas Timedelta TimedeltaIndex timedelta64[ns] to_timedelta or timedelta_range
Time spans Period PeriodIndex period[freq] Period or period_range
Date offsets DateOffset None None DateOffset


本文聚焦于处理时点数(point in time)的常用技巧,沿用前文示例数据进行演示。在 pandas 中,Timestamp 用于表示具体的时点,其用法在绝大多数场景下与 Python 标准库中的 datetime 类型保持一致。

日期列的类型转换方法

第一步是加载数据,并将 DataFrame 中的 date 列转换为 datetime 类型:


df1 = pd.read_csv('https://raw.githubusercontent.com/stonewm/python-practice-projects/master/pandas%20sample%20data/sample-salesv3.csv')
df1['date'] = pd.to_datetime(df1['date']) # convert date column to datetime
df1.head()

另一种更高效的方式是在读取 CSV 文件时,通过 read_csv() 函数的 parse_dates 参数,直接将指定列转换为 datetime64 类型:


df1 = pd.read_csv('sample-salesv3.csv', parse_dates=['date'])

利用 dt 属性提取时间信息

基于上述销售数据,我们需要按月份和季度统计各 SKU 的销售金额。pandas 提供了 pandas.Series.dt 属性,用于提取日期或时间类型的详细信息,例如:


df1['date'].dt.year
df1['date'].dt.month
df1['date'].dt.quarter

上述方法返回的结果为整数类型(int),但在进行数据聚合统计时,我们通常更倾向于使用如 2014-04 这样的字符串格式。实现这一目标有两种常用方法:


# 方法 1
df1['year_month'] = df1['date'].apply(lambda x : x.strftime('%Y-%m'))

生成格式化周期字段与统计

第二种方法的具体实现如下:


df1['period'] = df1['date'].dt.to_period('M')

第二种方式操作更为简便。参数 'M' 代表月份,'Q' 代表季度,'A' 代表年度,'D' 代表按天统计,这些是日常处理中最常用的周期参数。生成新列后,即可构建数据透视表:


import numpy as np
pivot = pd.pivot_table(df1, index=['sku'], columns=['period'], values=['ext price'], aggfunc=np.sum)
pivot.head()

接下来,我们进一步生成按季度统计的数据透视表:


df1['quarter'] = df1['date'].dt.to_period('Q')
quarter_pivot = pd.pivot_table(df1, index=['sku'], columns=['quarter'], values=['ext price'], aggfunc=np.sum)

参考资源

Time Series / Date functionality

Extracting just Month and Year from Pandas Datetime column

以上内容即为本文的全部介绍,希望能为您的学习提供助力,也欢迎持续关注本站以获取更多技术分享。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。