Python操作Excel数据分组的完整指南

 更新时间:2026年05月30日 09:48:35   作者:Eiceblue  
在日常数据处理工作中,Excel 数据分组是一项高频使用的功能,本文将系统介绍使用 Python代 码实现 Excel 数据分组的方法并提供完整代码示例,希望对大家有所帮助

在日常数据处理工作中,Excel 数据分组是一项高频使用的功能。当面对包含大量明细数据的表格时,仅靠原始数据视图往往难以快速把握整体结构和汇总信息。Excel 的分组功能允许用户将相邻的行或列组织为可折叠/展开的层级结构,从而在宏观汇总与微观明细之间灵活切换。典型的应用场景包括:

  • 销售报表按地区分组
  • 财务报表按月度分组
  • 库存报表按品类分组等。

无论是业务人员直接在 Excel 中手动操作,还是开发者通过代码批量处理,掌握数据分组功能背后的实现逻辑都至关重要。本文将系统介绍使用 Python代 码实现 Excel 数据分组的方法,提供完整代码示例。

一、Excel 内置数据分组功能

1.1 行分组与列分组

在 Excel 中,数据分组主要通过 “数据” 选项卡下的 “组合” 功能完成。用户可以选中连续的行或列,点击“分组”按钮后,Excel 会在行号左侧或列标上方自动生成 “—” 形状的控制按钮,单击该按钮即可折叠或展开分组区域。反向操作选择 “取消组合”,即可解除分组状态。

1.2 分类汇总

分类汇总是 Excel 中一个更高级的数据分组功能。当用户需要对某一列的数据按特定字段进行分组汇总时,可以通过“数据”→“分类汇总”菜单进入设置界面。在该界面中,用户需要指定:

  • 分类字段(按哪个列进行分组)
  • 汇总方式(求和、平均值、计数、最大值、最小值等)
  • 选定汇总项(对哪些列进行汇总计算)

Excel 自动为每个分组插入汇总行,并生成可折叠的数据层次结构。

1.3 不足之处

Excel 手动操作的局限在于缺乏自动化能力。当需要频繁生成分组报表,或需要将分组功能嵌入数据处理流程时,手动操作显然不能满足要求。这便是 Python 的价值所在。

二、Python 实现 Excel 数据分组

Free Spire.XLS for Python 是一个专门用于操作 Excel 文件的免费 Python 库,通过pip命令即可完成安装:

pip install Spire.XLS.Free

在数据分组功能方面,该库提供了以下核心能力:

  • 对连续行或列进行基础分组
  • 创建多级嵌套分组
  • 一键生成分类汇总(Subtotal
  • 取消已有分组

下文将逐一详细介绍这些功能的代码实现。

三、使用 Free Spire.XLS 创建基础行分组

最基础的分组操作是将指定连续区域的行或列分组。Worksheet 类提供了 GroupByRows()GroupByColumns() 方法来实现这一功能。

以下示例演示如何加载一个 Excel 文件,并对其中某个连续行区域进行分组:

from spire.xls import *
from spire.xls.common import *

# 创建Workbook对象
workbook = Workbook()
# 加载Excel文件
workbook.LoadFromFile("数据.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 对第2到第10行进行分组,False表示不折叠(即默认展开状态)
sheet.GroupByRows(2, 10, False)

# 保存结果文件
workbook.SaveToFile("行分组结果.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

GroupByRows() 方法的三个参数依次为:起始行索引、结束行索引、是否折叠分组。当第三个参数为True时,分组在打开时即处于折叠状态,所有明细行被隐藏,仅显示分组摘要行。

如需对列进行分组,可调用 GroupByColumns() 方法:

# 对第4到第7列进行分组
sheet.GroupByColumns(4, 7, False)

上述代码运行后,在生成的 Excel 文件中,行号左侧或列标上方会出现分组控制按钮,用户可以手动展开或折叠分组区域。

四、创建嵌套分组

在实际业务场景中,数据往往具有多层次结构。这种嵌套分组可以通过多次调用GroupByRows()方法实现:先创建外层分组,再在外层分组内创建内层分组。

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("数据.xlsx")
sheet = workbook.Worksheets[0]

# 创建外层分组:第2到第10行(
sheet.GroupByRows(2, 10, False)

# 在外层分组内部创建嵌套分组(第3到第7行)
sheet.GroupByRows(3, 7, False)

workbook.SaveToFile("嵌套分组.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

执行上述代码后,Excel 文件中将出现内外层两级分组控制按钮。这种结构化的数据组织方式极大地提升了数据查看和报告的交互性。

五、创建分类汇总

分类汇总(Subtotal)是比单纯行分组更高级的功能,它不仅自动生成分组结构,还在每个分组后插入汇总行,并根据指定的汇总方式计算数值。Worksheet.Subtotal()方法正是为此设计的。

假设有如下图所示的销售数据表格(示例数据结构):

行号地区销售人员销售额订单数量
1华东张三1250015
2华东李四980012
3华南王五1570018
4华南赵六1120014

按“地区”字段进行分组并对“销售额”求和,是典型的分类汇总需求。实现代码如下:

from spire.xls import *
from spire.xls.common import *

# 创建Workbook对象并加载Excel文件(假设该文件包含上述示例数据)
workbook = Workbook()
workbook.LoadFromFile("销售明细.xlsx")
sheet = workbook.Worksheets[0]

# 定义需要进行分类汇总的数据区域
# 区域为 A2 到 D5(仅数据行)
data_range = sheet.Range["A2:D5"]

# 调用完整参数的 Subtotal 方法
# 参数说明:
#   data_range        : 要处理的单元格区域,本例为 A1:D5
#   groupByIndex      : 分组列在区域内的索引(0-based),1 表示区域内的第2列(B列,即“地区”列)
#   totalFields       : 需要汇总的列索引列表(0-based),[3] 表示区域内的第4列(D列,即“销售额”列)
#   subtotalType      : 汇总类型,SubtotalTypes.Sum 表示求和
#   replace           : 是否替换现有的分类汇总,True 表示替换
#   addPageBreak      : 是否在每组后添加分页符,False 表示不添加
#   addsummaryBelowData : 是否将汇总行显示在数据下方,True 表示汇总行位于明细数据下方
sheet.Subtotal(data_range, 1, [3], SubtotalTypes.Sum, True, False, True)

workbook.SaveToFile("分类汇总结果.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

执行结果说明:

运行上述代码后,生成的 Excel 文件中的表格将被转换为以下结构:

六、取消分组

当需要移除现有分组时,可使用 UngroupByRows()UngroupByColumns() 方法:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("已分组文件.xlsx")
sheet = workbook.Worksheets[0]

# 取消第2到第10行的分组
sheet.UngroupByRows(2, 10)
# 取消第2到第4列的分组
sheet.UngroupByColumns(2, 4)

workbook.SaveToFile("取消分组后.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

UngroupByRows() 的参数只需指定起始行和结束行,方法会移除该范围内的所有分组,恢复到未分组状态。

小结

本文系统介绍了在 Python 中实现 Excel 数据分组功能的方法。通过 GroupByRows()GroupByColumns()Subtotal() 等方法,开发者可以以纯代码的方式完成行分组、列分组、嵌套分组以及分类汇总等常见数据处理任务,生成可直接交付使用的带有分组结构的 Excel 报表。

到此这篇关于Python操作Excel数据分组的完整指南的文章就介绍到这了,更多相关Python Excel数据分组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现绘制简单动图的示例详解

    基于Python实现绘制简单动图的示例详解

    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化,本文的主要介绍在Python中两种简单制作动图的方法,需要的可以了解下
    2023-10-10
  • python中Requests发送json格式的post请求方法

    python中Requests发送json格式的post请求方法

    这篇文章主要介绍了python中Requests发送json格式的post请求方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的朋友可以参考一下
    2022-09-09
  • python中__repr__与__str__方法详解

    python中__repr__与__str__方法详解

    本文主要介绍了python中__repr__与__str__方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • django 数据库返回queryset实现封装为字典

    django 数据库返回queryset实现封装为字典

    这篇文章主要介绍了django 数据库返回queryset实现封装为字典,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • pytorch自定义初始化权重的方法

    pytorch自定义初始化权重的方法

    今天小编就为大家分享一篇pytorch自定义初始化权重的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python面向对象之Web静态服务器

    Python面向对象之Web静态服务器

    这篇文章主要为大家详细介绍了Python面向对象之Web静态服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 如何用python复制粘贴excel指定单元格(可保留格式)

    如何用python复制粘贴excel指定单元格(可保留格式)

    这篇文章主要给大家介绍了关于如何用python复制粘贴excel指定单元格(可保留格式)的相关资料,利用python操作excel非常方便,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python机器学习pytorch自定义数据加载器

    python机器学习pytorch自定义数据加载器

    这篇文章主要为大家介绍了python机器学习pytorch自定义数据加载器使用示例学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 在Python的Flask框架下收发电子邮件的教程

    在Python的Flask框架下收发电子邮件的教程

    这篇文章主要介绍了在Python的Flask框架下收发电子邮件的教程,主要用到了Flask中的Flask-mail工具,需要的朋友可以参考下
    2015-04-04
  • Python中的闭包装饰器和深浅拷贝案例演示

    Python中的闭包装饰器和深浅拷贝案例演示

    本文给大家介绍Python中的闭包装饰器和深浅拷贝,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-09-09

最新评论