Skip to content

Latest commit

 

History

History
192 lines (130 loc) · 5.34 KB

how-to-use-multiindex-for-hierarchical-data-organization-in-pandas.md

File metadata and controls

192 lines (130 loc) · 5.34 KB

如何在 Pandas 中使用 MultiIndex 进行层次数据组织

原文:www.kdnuggets.com/how-to-use-multiindex-for-hierarchical-data-organization-in-pandas

如何在 Pandas 中使用 MultiIndex 进行层次数据组织

图片由编辑提供 | Midjourney & Canva

让我们学习如何在 Pandas 中使用 MultiIndex 进行层次数据处理。


我们的前三个课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业。

2. 谷歌数据分析专业证书 - 提升你的数据分析能力

3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT 需求


准备

我们需要确保安装了 Pandas 包。你可以使用以下代码进行安装:

pip install pandas

然后,让我们学习如何在 Pandas 中处理 MultiIndex 数据。

在 Pandas 中使用 MultiIndex

Pandas 中的 MultiIndex 指的是在 DataFrame 或 Series 上进行多级索引。当我们在二维表格结构中处理更高维的数据时,这个过程很有帮助。通过 MultiIndex,我们可以用多个键来索引数据,并且更好地组织它们。让我们用一个数据集示例来更好地理解它们。

import pandas as pd

index = pd.MultiIndex.from_tuples(
    [('A', 1), ('A', 2), ('B', 1), ('B', 2)],
    names=['Category', 'Number']
)

df = pd.DataFrame({
    'Value': [10, 20, 30, 40]
}, index=index)

print(df)

输出:

 Value
Category Number       
A        1          10
         2          20
B        1          30
         2          40

如你所见,上面的 DataFrame 有一个包含类别和编号的两级索引。

也可以使用 DataFrame 中现有的列来设置 MultiIndex。

data = {
    'Category': ['A', 'A', 'B', 'B'],
    'Number': [1, 2, 1, 2],
    'Value': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
df.set_index(['Category', 'Number'], inplace=True)

print(df)

输出:

 Value
Category Number       
A        1          10
         2          20
B        1          30
         2          40

即使采用不同的方法,我们也能得到类似的结果。这就是为什么我们可以在 DataFrame 中使用 MultiIndex。

如果你已经有了 MultiIndex DataFrame,可以使用以下代码交换级别。

print(df.swaplevel())

输出:

 Value
Number Category       
1      A            10
2      A            20
1      B            30
2      B            40

当然,我们可以使用以下代码将 MultiIndex 返回为列:

print(df.reset_index())

输出:

 Category  Number  Value
0        A       1     10
1        A       2     20
2        B       1     30
3        B       2     40

那么,如何在 Pandas DataFrame 中访问 MultiIndex 数据呢?我们可以使用.loc方法。例如,我们访问 MultiIndex DataFrame 的第一级。

print(df.loc['A']) 

输出:

 Value
Number       
1          10
2          20

我们也可以使用元组访问数据值。

print(df.loc[('A', 1)])

输出:

Value    10
Name: (A, 1), dtype: int64

最后,我们可以使用.groupby方法对 MultiIndex 进行统计聚合。

print(df.groupby(level=['Category']).sum())

输出:

 Value
Category       
A            30
B            70

精通 Pandas 中的 MultiIndex 将帮助你深入了解层次数据。

额外资源

Cornellius Yudha Wijaya 是一名数据科学助理经理和数据撰写者。在全职工作于 Allianz Indonesia 的同时,他喜欢通过社交媒体和写作媒体分享 Python 和数据技巧。Cornellius 涉猎多种 AI 和机器学习主题。

更多相关内容