本文共 3350 字,大约阅读时间需要 11 分钟。
在 Python 中使用 Pandas 库创建数据透视表时,可以通过设置相应参数来调整列的顺序以及控制是否包含小计行。本文将详细介绍相关操作,并提供实际代码示例。
首先,确保已安装最新版本的 Pandas 库,并进行导入:
import pandas as pd
以下是一个简单的 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) 通过 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
为了调整列的显示顺序,可以通过指定 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
如果需要将数据透视表保存到 Excel 文件中,可以使用 to_excel() 方法。
pivot_table.to_excel('output.xlsx', index=True) 以下是一个完整的测试用例,展示从数据到数据透视表的整个过程。
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) 以下是一个实际 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 创建和调整数据透视表,适用于多种实际场景。通过合理设置 columns 和 aggfunc 参数,可以满足不同的数据分析需求。
转载地址:http://csvfk.baihongyu.com/