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

Python 实现 Excel 连续数据分组求平均值

🧮 Python 实现 Excel 连续数据分组求平均值

本文将介绍如何用 Python + pandas 自动计算每组的平均值,并将结果写回 Excel 文件,适用于实验数据、财务分段统计、能源数据等场景。


📊 一、问题

假设我们有以下 Excel 数据:

数据
10
20
30
(空)
5
15
(空)
100
200
300
400
(空)
50

我们的目标:
在这里插入图片描述

  • 根据空行划分分组;
  • 计算每组的 平均值
  • 将结果插入 Excel 对应的分组末尾行。

期望结果:

分组平均值
第1组20
第2组10
第3组250
第4组50

🧩 二、核心思路

  1. 使用 pandas 读取 Excel 文件;
  2. 遍历数据列,用空值 (NaN) 或表格末尾作为分组边界;
  3. 对每组数字计算平均值;
  4. 将结果插入新列“平均值”,显示在每个分组的结尾行;
  5. 输出新的 Excel 文件。

⚙️ 三、完整 Python 代码

import pandas as pd# === 1. 读取 Excel 文件 ===
df = pd.read_excel("data.xlsx")
data = df["数据"].tolist()# === 2. 连续数字分组求平均值 ===
groups = []
current_group = []for x in data:if pd.isna(x):  # 遇到空行,计算当前组平均值if current_group:avg = sum(current_group) / len(current_group)groups.append(avg)current_group = []else:current_group.append(x)# 处理最后一组(末尾没有空行的情况)
if current_group:avg = sum(current_group) / len(current_group)groups.append(avg)# === 3. 将结果插入新列 ===
result_list = []
i = 0
current_group = []for x in data:if pd.isna(x) or x == data[-1]:  # 空行或最后一行if i < len(groups):           # 防止越界result_list.append(groups[i])i += 1else:result_list.append(None)else:result_list.append(None)# 处理最后一行是数字的情况
if len(result_list) < len(data):result_list.append(groups[-1])df["平均值"] = result_list[:len(df)]# === 4. 写入 Excel 文件 ===
output_file = "data_avg_result.xlsx"
df.to_excel(output_file, index=False)print("✅ 已生成新文件:", output_file)

📁 四、运行效果

运行后生成文件 data_avg_result.xlsx

数据平均值
10
20
3020
(空)10
5
1510
(空)250
100
200
300
400250
(空)50
5050

✅ 每个分组的平均值自动填充在分组末尾行,非常直观。


🧠 五、扩展思路

  • 通用统计函数:可轻松改造成求和、最大值、最小值、计数等统计功能;
  • 批量处理 Excel:利用 os 模块批量处理文件夹内的多个 Excel 表格;
  • 数据可视化:将分组平均值绘制柱状图或折线图,直观展示趋势;
  • 高亮结果行:结合 openpyxlxlsxwriter 给平均值单元格设置颜色。

🚀 六、小结

本文介绍了一种常见且高效的 Excel 自动化方法:
使用 pandas 结合空行划分分组,自动计算每组的平均值。

核心思路一句话总结:

“以空行为分组边界,按组计算平均值,并写回 Excel。”

这种技巧在实验数据统计、财务报表、能源数据分析等场景中非常实用。


🧭 关键词: Python Excel 分组平均值pandas 分组统计Excel 自动计算

http://www.dtcms.com/a/552972.html

相关文章:

  • 小红书获取笔记详情API接口运用指南
  • SQL 自连接详解:当数据表需要与自己对话(组织层级实战)
  • AI代码开发宝库系列:Text2SQL技术入门
  • 网站充值链接怎么做三亚做网站推广
  • 在Azure webapp中搭建 基于chroma的 RAG agent
  • 【春秋云境】CVE-2024-38856 Apache OFbiz从未授权到RCE
  • 货拉拉用户画像基于 Apache Doris 的数据模型设计与实践
  • JAR 包中替换依赖jar的正确姿势(Windows 环境)
  • linux驱动开发之pr_warn和pr_warning
  • Keil(MDK-ARM)和 STM32CubeIDE对比
  • Linux上使用Docker安装MinIO指南
  • Maven 依赖冲突:解决 jar 包版本不一致的 3 种方法
  • android集成react native组件踩坑笔记(Activity局部展示RN的组件)
  • 多语言网站思路十大h5页面制作工具
  • 汽车之家网站系统是什么做的防爆玻璃门网站建设
  • k8s——services资源+pod详解1
  • 基于深度学习的医疗器械分类编码映射系统:实现篇
  • [人工智能-大模型-122]:模型层 - RNN是通过神经元还是通过张量时间记录状态信息?时间状态信息是如何被更新的?
  • React 18.x 学习计划 - 第六天:React路由和导航
  • 逻辑回归正则化参数选择实验报告:贝叶斯优化与网格搜索的效率对比
  • 建设景区网站推文网站中了木马了怎么办
  • 【JAVA 进阶】重生之我要学会 JUC 并发编程
  • POST 数据提交注入测试sqlilabs less 11
  • 微服务高并发设计考虑要点
  • 解码LVGL Linux 系统(Ubuntu/WSL + 开发板)移植
  • 长春网站制作昆明君创网络科技有限公司
  • 把 CLI 搬上 Web:在内网打造“可二开”的 AI IDE,为什么这条路更现实?
  • iOS 上架应用市场全流程指南,App Store 审核机制、证书管理与跨平台免 Mac 上传发布方案(含开心上架实战)
  • 酒厂网站源码now9999网站提示建设中
  • iOS 中的引用计数