
本文详细介绍了如何使用pandas创建按半年(上半年h1/下半年h2)间隔聚合的数据透视表,而非传统的按年或季度聚合。通过结合年份和自定义的半年标识符作为数据透视表的索引,并演示了如何将生成的多级索引转换为标准的日期时间格式,以满足更精细的数据分析和可视化需求。
在数据分析中,我们经常需要对时间序列数据进行聚合,以便从不同的时间粒度审视数据趋势。Pandas的pivot_table函数是实现这一目标的核心工具。然而,当内置的年(dt.year)或季度(dt.quarter)聚合无法满足特定的业务需求时,例如需要按半年(每六个月)进行数据汇总,我们就需要采用更灵活的方法来定义时间分组。
首先,我们创建一个包含日期索引和随机数据的DataFrame,以模拟真实世界中的时间序列数据。为了与后续的数据透视表示例保持一致,我们还会添加一个“Vessel”列。
import pandas as pd
import numpy as np
# 创建日期范围,从2025年1月1日到2025年1月5日
date_rng = pd.date_range(start='2025-01-01', end='2025-01-05', freq='D')
# 生成随机数据
data = np.random.rand(len(date_rng), 3)
df = pd.DataFrame(data, columns=['Column1', 'Column2', 'Column3'], index=date_rng)
# 添加 'Vessel' 列,用于数据透视表的列
df['Vessel'] = np.random.randint(1, 5, size=len(date_rng))
print("原始DataFrame的前5行:")
print(df.head())实现按半年间隔聚合的关键在于为pivot_table的index参数提供一个包含年份和半年标识符的列表。我们可以通过以下步骤完成:
# 创建按半年聚合的数据透视表
pivot_df = pd.pivot_table(
df,
index=[df.index.year, np.where(df.index.month <= 6, "H1", "H2")], # 核心:自定义索引
columns="Vessel",
values=["Column1", "Column2", "Column3"],
aggfunc="nunique", # 聚合函数,这里计算唯一值的数量
)
print("\n按半年聚合的数据透视表:")
print(pivot_df)输出示例:
Column1 Column2 Column3
Vessel 1 2 3 4 1 2 3 4 1 2 3 4
2025 H1 39.0 41.0 59.0 42.0 39.0 41.0 59.0 42.0 39.0 41.0 59.0 42.0
H2 43.0 53.0 34.0 54.0 43.0 53.0 34.0 54.0 43.0 53.0 34.0 54.0
2025 H1 NaN 1.0 3.0 1.0 NaN 1.0 3.0 1.0 NaN 1.0 3.0 1.0从输出可以看出,数据透视表的索引现在是多级的,第一级是年份,第二级是半年标识符(H1/H2),清晰地展示了按半年聚合的结果。
AI建筑知识问答
用人工智能ChatGPT帮你解答所有建筑问题
172
查看详情
虽然多级索引在结构上清晰,但在某些情况下,例如进行时间序列绘图或与其他日期数据合并时,将其转换为单一的日期时间索引会更加方便。我们可以将“H1”映射到该年1月1日,将“H2”映射到该年7月1日。
# 将多级索引转换为日期时间格式
pivot_df.index = [
pd.to_datetime(f'{year}-{"01-01" if half == "H1" else "07-01"}') # 注意这里是07-01,不是06-01
for year, half in pivot_df.index
]
print("\n索引转换为日期格式后的数据透视表:")
print(pivot_df)输出示例:
Column1 Column2 Column3 Vessel 1 2 3 4 1 2 3 4 1 2 3 4 2025-01-01 48.0 44.0 43.0 46.0 48.0 44.0 43.0 46.0 48.0 44.0 43.0 46.0 2025-07-01 49.0 41.0 48.0 46.0 49.0 41.0 48.0 46.0 49.0 41.0 48.0 46.0 2025-01-01 1.0 1.0 NaN 3.0 1.0 1.0 NaN 3.0 1.0 1.0 NaN 3.0
现在,数据透视表的索引已经转换为标准的日期时间对象,代表了每个半年期的起始日期,这为后续的时间序列分析和可视化提供了便利。
Pandas为数据分析师提供了强大的工具集,不仅能够进行标准的时间序列聚合,还能通过灵活的索引定义实现高度定制化的时间分组。本文通过一个按半年间隔创建数据透视表的实例,展示了如何结合df.index属性和numpy.where来构建自定义的时间分组索引,并进一步将其转换为便于分析和可视化的日期时间格式。掌握这些技巧将极大地提升你在处理复杂时间序列数据时的效率和灵活性。
以上就是Pandas数据透视表:按半年间隔进行数据聚合的详细内容,更多请关注其它相关文章!
# 到该
# 开源网站建设工具
# 廊坊网站建设业务
# 谷歌seo更新
# 成都网站建设行业
# 低价建站seo
# 兼职seo怎么做seo顾问
# 发布app推广网站
# 孝感网站建设说明
# seo工作方案范文
# 韶关美食网站推广公司
# 工具
# 下半年
# 布尔
# 我们可以
# 将其
# 知识问答
# 多维
# 递归
# 转换为
# 自定义
# 聚合函数
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
感染了幽门螺杆菌一定会导致胃癌吗?蚂蚁庄园今日答案最新11.30
在Flask应用中安全高效地更新SQLAlchemy用户数据
RxJS中如何高效地在一个函数内处理和合并多个数据集合
使用Google服务账号实现Google Drive API无缝集成与文件访问
Python实战:高效处理实时数据流中的最小/最大值
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
《桃源记2》资源采集攻略
济南公交卡手机充值指南
TikTok搜索结果不显示怎么办 TikTok搜索刷新与优化方法
《随手记》关闭首页消息推送方法
钉钉任务无法提醒如何处理 钉钉任务提醒优化方法
win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】
Animex动漫社正版在线入口 Animex动漫社动漫官方观看网
如何查询国外邮政编码_国外邮政编码查询的多种有效途径
圆通快递官网入口查询单号 手机版官方查询入口
酷狗音乐多音轨设置教程
b站怎么用微信登录_b站微信登录方法
iphone16系列配置参数介绍
《爱南宁》认证电动车方法
使用CSS :has() 选择器实现父元素样式控制:从子元素反向应用样式
excel怎么制作考勤表 excel考勤模板与函数公式讲解
Windows 11怎么删除恢复分区_Windows 11使用Diskpart命令强行删除分区
windows10怎么开启卓越性能_windows10电源选项代码激活
mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法
Python中深度嵌套字典与列表的数据提取与条件过滤指南
PHP utf8_encode 字符编码转换陷阱与解决方案
《兴业银行》注册登录方法
苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤
《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐
嘀嗒顺风车如何开具电子发票
《波斯王子:失落的王冠》剑术大师打法攻略
AO3永久镜像入口开放_AO3最新网址兼容所有浏览器
J*aScript模块加载器_RequireJS原理分析
《红果免费短剧》下载观看方法
《微信》视频号原创声明开启方法
网页版网易云音乐入口_网易云音乐在线官网登录
Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能
百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法
汽水音乐网页版登录 汽水音乐网页端官方入口
键盘保修需要什么_键盘售后维修流程
tiktok国际版入口_tiktok官网网页版链接
Python对象引用与属性赋值:理解链表中的行为
《下一站江湖2》大雪山加入方法
天天漫画2025最新入口 天天漫画永久有效登录入口
QQ邮箱PC端登录页面_QQ邮箱网页版登录界面
Lar*el Socialite单设备登录策略:实现用户唯一会话管理
《edge浏览器》关闭翻译功能方法
铁路12306怎么申请退票_铁路12306退票申请操作流程
人教版电子教材在线获取指南
Django模型动态关联检查:高效管理复杂关系
2025-10-24
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。