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

Written by

in

文章目录
  • 假设我们有以下 Excel 数据: 数据 10 20 30 (空) 5 15 (空) 100 200 300 400 (空) 50 我们的目标: 根据空行划分分组; 计算每组的 平均值; 将结果插入 Excel 对应的分组末尾行。 期望结果: 分组 平均值 第1组 20 第2组 10 第3组 250 第4组 50
  • 使用 pandas 读取 Excel 文件; 遍历数据列,用空值 (NaN) 或表格末尾作为分组边界; 对每组数字计算平均值; 将结果插入新列“平均值”,显示在每个分组的结尾行; 输出新的 Excel 文件。
  • 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计算平均值的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python实现为Excel中每个单元格计算其在文件中的平均值 Python读取大量Excel文件并跨文件批量计算平均值的方法 Python实现读取大量Excel文件并跨文件批量计算平均值 在Python中计算移动平均值的方法 Python 实现输入任意多个数,并计算其平均值的例子 Python简单计算数组元素平均值的方法示例 python计算一个序列的平均值的方法
  • 目录
    • 一、问题
    • 二、核心思路
    • 三、完整 Python 代码
    • 四、运行效果
    • 五、扩展思路
    • 六、知识扩展
    • 七、小结

    假设我们有以下 Excel 数据:

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

    我们的目标:

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

    期望结果:

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

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

    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 表格;
    • 数据可视化:将分组平均值绘制柱状图或折线图,直观展示趋势;
    • 高亮结果行:结合 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实现为Excel中每个单元格计算其在文件中的平均值
    • Python读取大量Excel文件并跨文件批量计算平均值的方法
    • Python实现读取大量Excel文件并跨文件批量计算平均值
    • 在Python中计算移动平均值的方法
    • Python 实现输入任意多个数,并计算其平均值的例子
    • Python简单计算数组元素平均值的方法示例
    • python计算一个序列的平均值的方法

    站内搜索