📜  Pandas – 多索引和 groupbys(1)

📅  最后修改于: 2023-12-03 15:33:23.943000             🧑  作者: Mango

Pandas – 多索引和 groupbys

Pandas 是 Python 数据分析库中的一员,在数据分析领域有着广泛的应用,其支持多种数据格式的读写并提供各种实用的数据操作功能。在 Pandas 中,多索引和 groupbys 是非常有用的功能,可以轻松地对数据进行聚合和分组操作。

多索引

在 Pandas 中,可以使用多个索引来表示数据结构中的多维数据。多索引可以用来处理多维数据集,从而可以进行各种复杂的数据操作。在 Pandas 中,有两种类型的多索引,分别为行多索引和列多索引。

行多索引

在 Pandas 中,可以使用多个索引来表示数据结构中的多维数据。多索引可以用来处理多维数据集,从而可以进行各种复杂的数据操作。在 Pandas 中,有两种类型的多索引,分别为行多索引和列多索引。行多索引可以使用 set_index() 方法在 DataFrame 中设置。下面是一个简单的例子:

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd'], 'B': ['x', 'y', 'z', 'w'], 'C': [1, 2, 3, 4]})

# 设置行多索引
df = df.set_index(['A', 'B'])

print(df)

输出结果:

     C
A B   
a x  1
b y  2
c z  3
d w  4
列多索引

与行多索引类似,列多索引可以用来处理多维数据集。在 Pandas 中,可以使用 MultiIndex 类来实现列多索引。下面是一个简单的例子:

import pandas as pd
import numpy as np

# 创建 DataFrame
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]

df = pd.DataFrame(np.random.randn(6, 8), index=['A', 'B', 'C', 'D', 'E', 'F'], columns=arrays)

print(df)

输出结果:

        bar                 baz                 foo                 qux          
        one       two       one       two       one       two       one       two
A -0.293377 -1.194068  0.595988  0.602897 -0.130435 -0.457330 -0.588327 -0.240699
B -1.038854 -1.048537  0.975462  1.333548  0.250734  0.318879 -0.133570  0.280765
C -1.193156 -0.145971 -0.031079  1.725091 -0.841629 -1.316279  0.596818 -1.759583
D  0.758662 -1.009945 -0.469242 -0.486047 -1.344478  0.603023 -2.004858  2.162077
E  1.388672 -0.206166  0.489461  0.720231 -1.010256 -0.763115 -0.466238 -0.932080
F  0.019917  0.785461  1.072226  1.104036 -0.590791  0.248911  0.634834  1.363619
groupbys

groupbys 是 Pandas 中的另一个强大功能,它可以将数据根据指定的标准分组,并对每个组进行聚合、变换和过滤操作,从而得到所需的结果。在 Pandas 中,可以使用 groupby() 方法进行分组。下面是一个简单的例子:

import pandas as pd

# 创建 DataFrame
data = {'Animal': ['Dog', 'Cat', 'Dog', 'Cat', 'Dog'],
        'Age': [4, 5, 2, 3, 6]}

df = pd.DataFrame(data)

# 按 Animal 分组
grouped = df.groupby(['Animal'])

# 统计每个分组的平均年龄
mean_age = grouped['Age'].mean()

print(mean_age)

输出结果:

Animal
Cat    4.0
Dog    4.0
Name: Age, dtype: float64

除了对每个分组进行统计之外,还可以对所有分组进行聚合操作。Pandas 中常用的聚合操作包括:sum、max、min、mean、count、size 等。下面是一个简单的例子:

import pandas as pd

# 创建 DataFrame
data = {'Animal': ['Dog', 'Cat', 'Dog', 'Cat', 'Dog'],
        'Age': [4, 5, 2, 3, 6]}

df = pd.DataFrame(data)

# 按 Animal 分组并统计每个分组的总年龄
sum_age = df.groupby(['Animal'])['Age'].sum()

print(sum_age)

输出结果:

Animal
Cat     8
Dog    12
Name: Age, dtype: int64
总结

多索引和 groupbys 是 Pandas 中非常实用的功能,它们可以帮助我们轻松地对数据进行聚合和分组操作。在实际的数据分析中,我们通常会用到这些功能。