pandas 日期数据处理:从类型转换到按周期统计实战
本文详解 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
以上内容即为本文的全部介绍,希望能为您的学习提供助力,也欢迎持续关注本站以获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













