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

 更新时间:2025年11月03日 08:38:05   作者: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
3020
(空)10
5
1510
(空)250
100
200
300
400250
(空)50
5050

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

五、扩展思路

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

六、知识扩展

用 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计算平均值的资料请关注脚本之家其它相关文章!

相关文章

  • Python类的详细定义与使用案例(实例讲解)

    Python类的详细定义与使用案例(实例讲解)

    这篇文章主要给大家介绍了关于Python类的详细定义与使用案例的相关资料,在Python中类表示具有相同属性和方法的对象的集合,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Python中处理乱码(Mojibake)问题的解决方法

    Python中处理乱码(Mojibake)问题的解决方法

    文章摘要:本文探讨了Python中处理乱码(Mojibake)问题的解决方法,乱码产生的原因是编码与解码规则不一致,作者介绍了通过分析二进制特征来识别编码的方法:UTF-8通常有3字节中文特征,GBK则为双字节结构,推荐使用charset-normalizer库自动检测编码,并提供了实战案例演示
    2026-02-02
  • python按综合、销量排序抓取100页的淘宝商品列表信息

    python按综合、销量排序抓取100页的淘宝商品列表信息

    这篇文章主要为大家详细介绍了python按综合、销量排序抓取100页的淘宝商品列表信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python Matplotlib简易教程(小白教程)

    Python Matplotlib简易教程(小白教程)

    这篇文章主要介绍了Python Matplotlib简易教程(小白教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 10个有用的Python字符串函数小结

    10个有用的Python字符串函数小结

    本文主要介绍了10个有用的Python字符串函数小结,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python访问本地deepseek示例【含deepseek本地部署】

    Python访问本地deepseek示例【含deepseek本地部署】

    这篇文章主要介绍了Python访问本地deepseek功能,结合实例形式分析了使用Ollama本地部署deepseek以及python访问本地deepseek的过程,需要的朋友可以参考下
    2018-06-06
  • 用smtplib和email封装python发送邮件模块类分享

    用smtplib和email封装python发送邮件模块类分享

    本文针对发邮件相关的操作进行了封装,包括发送文本、HTML、带附件的邮件,使用Python发邮件,主要用到smtplib和email两个模块,需要的朋友可以参考下
    2014-02-02
  • Python中rasterio库的实现

    Python中rasterio库的实现

    Rasterio是一个用于读写光栅数据的Python库,它专注于快速和可靠地处理大规模地理空间栅格数据,本文主要介绍了Python中rasterio库的实现,感兴趣的可以了解一下
    2025-04-04
  • Python open()文件处理使用介绍

    Python open()文件处理使用介绍

    这篇文章主要介绍了Python open()文件处理使用介绍,需要的朋友可以参考下
    2014-11-11
  • Python+Wordpress制作小说站

    Python+Wordpress制作小说站

    本文给大家讲解的是使用python实现采集并入库到WordPress小说站中,非常的简单使用,有需要的小伙伴可以参考下
    2017-04-04

最新评论