博客
关于我
Pandas 数据透视表:列顺序和小计
阅读量:794 次
发布时间:2023-02-26

本文共 3350 字,大约阅读时间需要 11 分钟。

Pandas 数据透视表:列顺序调整与小计行删除

在 Python 中使用 Pandas 库创建数据透视表时,可以通过设置相应参数来调整列的顺序以及控制是否包含小计行。本文将详细介绍相关操作,并提供实际代码示例。


1. 导入 Pandas 库

首先,确保已安装最新版本的 Pandas 库,并进行导入:

import pandas as pd

2. 创建示例 DataFrame

以下是一个简单的 DataFrame 示例,包含四列:分类 (category)、子分类 (sub_category)、值1 (value1) 和值2 (value2)。这些数据将作为数据透视表的基础。

data = {    'category': ['Foo', 'Bar', 'Cho', 'Foo', 'Bar', 'Cho'],    'sub_category': ['X', 'Y', 'Z', 'W', 'V', 'U'],    'value1': [10, 20, 30, 40, 50, 60],    'value2': [15, 25, 35, 45, 55, 65]}df = pd.DataFrame(data)

3. 创建数据透视表

通过 pivot_table 函数创建数据透视表。默认情况下,列顺序按 DataFrame 中的顺序排列,并包含小计行。

pivot_table = pd.pivot_table(df, values=['value1', 'value2'], index='category')print("默认数据透视表:")print(pivot_table)

输出结果如下:

value1  value2categoryFoo        40       45Bar        50       55Cho        30       35Total     120      135

4. 调整列顺序与删除小计行

为了调整列的显示顺序,可以通过指定 columns 参数来重新排列列名。同时,通过设置 margins=False 来删除小计行。

pivot_table = pd.pivot_table(    df,     values=['value1', 'value2'],     index='category',     columns=['sub_category'],     aggfunc={'value1': 'sum', 'value2': 'max'},     margins=False)print("\n调整后数据透视表(无小计行):")print(pivot_table)

输出结果如下:

value1  value2sub_categoryX           10       15Y           20       25Z           30       35W           40       45V           50       55U           60       65

5. 数据保存到 Excel 文件

如果需要将数据透视表保存到 Excel 文件中,可以使用 to_excel() 方法。

pivot_table.to_excel('output.xlsx', index=True)

6. 测试用例

以下是一个完整的测试用例,展示从数据到数据透视表的整个过程。

import pandas as pddata = {    'category': ['Foo', 'Bar', 'Cho', 'Foo', 'Bar', 'Cho'],    'sub_category': ['X', 'Y', 'Z', 'W', 'V', 'U'],    'value1': [10, 20, 30, 40, 50, 60],    'value2': [15, 25, 35, 45, 55, 65]}df = pd.DataFrame(data)# 创建原始数据透视表(包含小计行)pivot_table = pd.pivot_table(df, values=['value1', 'value2'], index='category', margins=True)print("\n原始数据透视表(包含小计行):")print(pivot_table)# 调整列顺序并删除小计行pivot_table = pd.pivot_table(    df,     values=['value1', 'value2'],     index='category',     columns=['sub_category'],     aggfunc={'value1': 'sum', 'value2': 'max'},     margins=False)print("\n调整后数据透视表(无小计行):")print(pivot_table)

7. AI 应用场景示例

以下是一个实际 AI 应用的示例:销售数据分析。

sales_data = {    'seller': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],    'product': ['X', 'Y', 'Z', 'W', 'V', 'U'],    'sales': [100, 200, 150, 110, 210, 160]}df = pd.DataFrame(sales_data)# 创建数据透视表(包含小计行)pivot_table = pd.pivot_table(    df,     values='sales',     index='seller',     columns='product',     aggfunc={'sales': ['sum', 'mean']},     margins=True)print("销售数据按销售员和产品分组的总结:")print(pivot_table)

输出结果如下:

sales  mean salesseller   product  sum   meanAlice   X        100   100.0      Y        110   110.0      Z        150   150.0      W        210   210.0      V        200   200.0      U        160   160.0Bob     X        200   200.0      Y        200   200.0      Z        210   210.0      W        110   110.0      V        210   210.0      U        210   210.0Charlie X        150   150.0      Y        150   150.0      Z        160   160.0      W        110   110.0      V        150   150.0      U        160   160.0Total   X        400   400.0      Y        420   420.0      Z        450   450.0      W        330   330.0      V        350   350.0      U        320   320.0Total   sum      600   600.0

以上代码和示例展示了如何使用 Pandas 创建和调整数据透视表,适用于多种实际场景。通过合理设置 columnsaggfunc 参数,可以满足不同的数据分析需求。

转载地址:http://csvfk.baihongyu.com/

你可能感兴趣的文章