插件窝 干货文章 如何用Pandas实现Excel大纲式的数据展示?

如何用Pandas实现Excel大纲式的数据展示?

Subcategory Value Category 使用 38    来源:    2025-03-16

在Pandas中,你可以使用groupbypivot_table等方法来模拟Excel中的大纲式(分组和汇总)数据展示。以下是一些常见的操作示例:

1. 使用 groupby 进行分组和汇总

groupby 方法允许你根据某一列或多列对数据进行分组,并对每个组进行汇总操作。

import pandas as pd

# 示例数据
data = {
    'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'Value': [10, 20, 30, 40, 50, 60]
}

df = pd.DataFrame(data)

# 按 Category 和 Subcategory 分组,并计算每个组的 Value 总和
grouped = df.groupby(['Category', 'Subcategory']).sum()

print(grouped)

输出结果:

                     Value
Category Subcategory       
A        X               60
         Y               20
B        X               30
         Y              100

2. 使用 pivot_table 进行透视表操作

pivot_table 方法可以创建类似Excel透视表的结构,允许你对数据进行多维度的汇总。

# 使用 pivot_table 进行汇总
pivot = pd.pivot_table(df, values='Value', index=['Category', 'Subcategory'], aggfunc='sum')

print(pivot)

输出结果与 groupby 类似:

                     Value
Category Subcategory       
A        X               60
         Y               20
B        X               30
         Y              100

3. 使用 unstack 进行层次化索引的展开

unstack 方法可以将层次化索引的某一层展开为列,使得数据展示更加直观。

# 使用 unstack 展开 Subcategory
unstacked = grouped.unstack()

print(unstacked)

输出结果:

          Value          
Subcategory    X    Y
Category             
A             60   20
B             30  100

4. 使用 stack 进行列的堆叠

stack 方法与 unstack 相反,它将列堆叠回层次化索引。

# 使用 stack 将列堆叠回层次化索引
stacked = unstacked.stack()

print(stacked)

输出结果与 groupby 相同:

                     Value
Category Subcategory       
A        X               60
         Y               20
B        X               30
         Y              100

5. 使用 melt 进行宽表变长表

melt 方法可以将宽表转换为长表,适合某些需要展开数据的场景。

# 使用 melt 进行宽表变长表
melted = pd.melt(df, id_vars=['Category', 'Subcategory'], value_vars=['Value'])

print(melted)

输出结果:

  Category Subcategory variable  value
0        A           X    Value     10
1        A           Y    Value     20
2        B           X    Value     30
3        B           Y    Value     40
4        A           X    Value     50
5        B           Y    Value     60

6. 使用 MultiIndex 创建多层次索引

你可以手动创建 MultiIndex 来实现更复杂的分组和汇总。

# 创建 MultiIndex
index = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')], names=['Category', 'Subcategory'])

# 创建 DataFrame
df_multiindex = pd.DataFrame({'Value': [60, 20, 30, 100]}, index=index)

print(df_multiindex)

输出结果:

                     Value
Category Subcategory       
A        X               60
         Y               20
B        X               30
         Y              100

总结

通过 groupbypivot_tableunstackstackmelt 等方法,你可以在 Pandas 中实现类似 Excel 大纲式的数据展示。这些方法可以帮助你对数据进行分组、汇总和透视,从而更好地理解和分析数据。