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 |
🧩 二、核心思路
- 使用
pandas读取 Excel 文件; - 遍历数据列,用空值 (
NaN) 或表格末尾作为分组边界; - 对每组数字计算平均值;
- 将结果插入新列“平均值”,显示在每个分组的结尾行;
- 输出新的 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 | |
| 30 | 20 |
| (空) | 10 |
| 5 | |
| 15 | 10 |
| (空) | 250 |
| 100 | |
| 200 | |
| 300 | |
| 400 | 250 |
| (空) | 50 |
| 50 | 50 |
✅ 每个分组的平均值自动填充在分组末尾行,非常直观。
🧠 五、扩展思路
- 通用统计函数:可轻松改造成求和、最大值、最小值、计数等统计功能;
- 批量处理 Excel:利用
os模块批量处理文件夹内的多个 Excel 表格; - 数据可视化:将分组平均值绘制柱状图或折线图,直观展示趋势;
- 高亮结果行:结合
openpyxl或xlsxwriter给平均值单元格设置颜色。
🚀 六、小结
本文介绍了一种常见且高效的 Excel 自动化方法:
使用 pandas 结合空行划分分组,自动计算每组的平均值。
核心思路一句话总结:
“以空行为分组边界,按组计算平均值,并写回 Excel。”
这种技巧在实验数据统计、财务报表、能源数据分析等场景中非常实用。
🧭 关键词: Python Excel 分组平均值 | pandas 分组统计 | Excel 自动计算
