Python+pandas实现Excel连续数据分组求平均值
作者:IT小本本
本文将介绍如何用 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 += 1
else:
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给平均值单元格设置颜色。
六、知识扩展
用 Python 实现连续数据分组求和并回写
1.思路分析
核心思路如下:
- 使用
pandas读取 Excel 文件; - 遍历数据列,用空值(
NaN)作为分组边界; - 每组内求和;
- 在分组结束行插入结果;
- 输出到新 Excel 文件。
2.完整代码实现
import pandas as pd
# === 1. 读取 Excel 文件 ===
# 请把 "data.xlsx" 改成你的文件名(路径也可以)
df = pd.read_excel("data.xlsx")
# 假设数据列名为 “数据”,若你的列名不同,请改成对应名字
data = df["数据"].tolist()
# === 2. 连续数字分组求和 ===
groups = []
group_sum = 0
for x in data:
if pd.isna(x): # 遇到空单元格 → 分组结束
groups.append(group_sum)
group_sum = 0
else:
group_sum += x
# 最后一组
if group_sum != 0 or (len(data) and pd.isna(data[-1])):
groups.append(group_sum)
# === 3. 将结果保存为新列 ===
# 为保持对应关系,插入空行方便对齐
result_list = []
i = 0
group_sum = 0
for x in data:
if pd.isna(x):
result_list.append(groups[i])
i += 1
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_with_result.xlsx"
df.to_excel(output_file, index=False)
print("✅ 已生成新文件:", output_file)
4.运行效果
执行完代码后,会在当前目录生成一个名为:
data_with_result.xlsx
七、小结
本文介绍了一种常见且高效的 Excel 自动化方法:使用 pandas 结合空行划分分组,自动计算每组的平均值。
核心思路一句话总结:“以空行为分组边界,按组计算平均值,并写回 Excel。”
这种技巧在实验数据统计、财务报表、能源数据分析等场景中非常实用。
以上就是Python+pandas实现Excel连续数据分组求平均值的详细内容,更多关于Python计算平均值的资料请关注脚本之家其它相关文章!
