当前位置: 首页 > news >正文

Pandas 中的 Period 对象

在 Pandas 中,Period 对象用于表示特定的时间区间(如某个月、某个季度),而不是时间点(后者用 Timestamp)。它是处理时间序列数据的重要工具,尤其适合需要按固定周期(如月度、季度)分析的场景。


核心概念

  1. 与 Timestamp 的区别

    • Timestamp 表示具体时刻(如 2023-01-01 00:00:00)。

    • Period 表示时间区间(如 2023年1月整月)。

  2. 关键属性

    • start_time:周期起始时间

    • end_time:周期结束时间

    • freq:周期频率(如 'M' 表示月)


创建 Period 对象

import pandas as pd# 创建单个 Period
p = pd.Period("2023-01", freq='M')  # 表示 2023年1月整月
print(p)
# 输出: 2023-01# 获取起止时间
print("Start:", p.start_time)  # 2023-01-01 00:00:00
print("End:  ", p.end_time)    # 2023-01-31 23:59:59.999999999

常用频率(freq)别名

别名含义示例
D2023-01-01
M2023-01
Q季度2023Q1 (1-3月)
A/Y2023
H小时2023-01-01 12
T/min分钟2023-01-01 12:30

周期运算

p = pd.Period("2023-01", freq='M')# 加减整数 → 移动周期
print(p + 1)  # 2023-02 (下个月)
print(p - 2)  # 2022-11 (两个月前)# 获取周期长度(天数)
print(p.days_in_month)  # 31 (1月有31天)# 周期差(同频率)
p2 = pd.Period("2023-03", freq='M')
print(p2 - p)  # 2 (相差2个月)

实际应用场景

1. 创建 Period 序列
# 生成月度周期序列
periods = pd.period_range("2023-01", "2023-06", freq='M')
print(periods)
# 输出: PeriodIndex(['2023-01', '2023-02', ..., '2023-06'], dtype='period[M]')
2. 时间序列重采样
# 将日数据聚合为月数据
ts = pd.Series(data=[10, 20, 15, 30],index=pd.date_range("2023-01-01", periods=4, freq='D')
)monthly = ts.resample('M').sum()  # 按月度周期求和
print(monthly.index)  # 自动转为 PeriodIndex
3. 周期转换
p = pd.Period("2023-01", freq='M')# 转换为不同频率
print(p.asfreq('Q'))  # 2023Q1 (所属季度)
print(p.asfreq('A'))  # 2023 (所属年份)

注意事项

  1. 频率一致性:不同频率的 Period 无法直接运算(需先统一频率)。

  2. 时区处理:用 tz 参数指定时区(如 freq='M', tz='Asia/Shanghai')。

  3. 边界精度end_time 包含该周期最后一刻(纳秒级精度)。

通过 Period,Pandas 提供了对时间区间的原生支持,极大简化了按固定周期汇总、分析数据的流程。结合 PeriodIndex 和重采样功能,可高效处理金融、经济等领域的周期性数据。

相关文章:

  • Android 中 解析 JSON 字符串的几种方式
  • man 的用法
  • 数据卷能管理两边,使其数据一致?——补充
  • 5G光网络新突破:<Light: Science Applications>报道可适应环境扰动的DRC实时校准技术
  • FPGA基础 -- Verilog行为建模之循环语句
  • WordPress用 Options Framework 创建一个自定义相册功能
  • linux内核调试
  • 【JUC】显示锁
  • 【计算机常识】--docker入门+docker desktop的使用(一)
  • 【JAVA】的SPI机制
  • 对象模型与LLM融合:人形机器人的智能革命与产业化路径
  • 基于Cookie和Session的模拟登录爬取实战:突破登录认证的高级技术
  • eps转pdf-2025年6月18日星期三
  • 【为什么在触发的事件中修改控件属性需要使用`Invoke`】
  • 轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
  • python实战项目75:爬取nature《自然》杂志论文信息
  • tomcat 配置规范
  • 【Python与生活】如何实现一个条形码检测算法?
  • 排序算法专题
  • mac镜像拉取失败,修改镜像源为国内
  • 创意网站建设策划方案/磁力搜索器 磁力猫在线
  • 网站开发实训新的体会/百度搜索下载安装
  • 网站建设公司3lue/2023新冠结束了吗
  • 做商城网站在哪里注册营业执照/凡科建站怎么用
  • slim编辑器Wordpress/保定seo排名
  • 安阳网站制作哪家好/电商运营入门基础知识