如何在 Pandas Groupby 对象中统计唯一值?


在数据分析中,经常需要统计 Pandas Groupby 对象中唯一值的个数。Pandas Groupby 对象是一个强大的工具,可以根据一个或多个列对数据进行分组,并在每个分组上执行聚合函数。通过统计 Groupby 对象中唯一值的个数,我们可以深入了解每个分组内数据的多样性和分布情况。

要在 Pandas Groupby 对象中统计唯一值,我们需要使用 nunique() 方法。此方法返回 Groupby 对象每个分组中唯一值的个数。我们可以将此方法应用于 Groupby 对象的特定列或整个对象。

除了 nunique() 方法外,我们还可以使用 agg() 方法来统计 Pandas Groupby 对象中的唯一值。agg() 方法允许我们同时将多个聚合函数应用于 Groupby 对象,包括 nunique()。

现在让我们借助示例来使用可用的不同方法。

使用 nunique() 方法

在 Pandas Groupby 对象中统计唯一值的最简单方法是使用 nunique() 方法。此方法返回 Groupby 对象每个分组中唯一值的个数。

请考虑以下代码。

示例

import pandas as pd

# Load sample data
df = pd.read_csv('data.csv')

# Group data by column 'A' and count unique values in column 'B'
unique_count = df.groupby('A')['B'].nunique()

# Print the result
print(unique_count)

解释

在这个例子中,我们加载一个样本数据集,并按'A'列对数据进行分组。然后,我们使用 nunique() 方法统计每个分组中'B'列的唯一值个数。结果是一个 Pandas Series 对象,显示每个分组中'B'列的唯一值个数。

输出

A
1	2
2	1
3	3
Name: B, dtype: int64

使用 agg() 方法

我们还可以使用 agg() 方法来统计 Pandas Groupby 对象中的唯一值。此方法允许我们将多个聚合函数(包括 nunique())应用于 Groupby 对象。

请考虑以下代码。

示例

import pandas as pd

# Load sample data
df = pd.read_csv('data.csv')

# Group data by columns 'A' and 'C', and count unique values in column 'B'
unique_count = df.groupby(['A', 'C']).agg({'B': 'nunique'})

# Print the result
print(unique_count)

解释

在这个例子中,我们按'A'和'C'列对数据进行分组,并使用 nunique() 方法统计'B'列的唯一值个数。我们使用 agg() 方法将 nunique() 方法应用于'B'列,并传递一个字典来指定要分组的列和要应用的聚合函数。

结果是一个 Pandas DataFrame 对象,显示'A'和'C'列中每个值组合的'B'列唯一值个数。

输出

     B
A  C   
1   X  1
    Y  1
2   X  1
3   X  2
    Y  1

使用 unique() 方法和 len() 函数

统计 Pandas Groupby 对象中唯一值的另一种方法是使用 unique() 方法提取唯一值,并使用 len() 函数对其进行计数。

请考虑以下代码。

示例

import pandas as pd

# Load sample data
df = pd.read_csv('data.csv')

# Group data by column 'A' and extract unique values in column 'B'
unique_values = df.groupby('A')['B'].unique()

# Count the number of unique values in each group
unique_count = unique_values.apply(lambda x: len(x))

# Print the result
print(unique_count)

解释

在这个例子中,我们按'A'列对数据进行分组,并使用 unique() 方法提取'B'列的唯一值。然后,我们使用 len() 函数和 apply() 方法统计每个分组中唯一值的个数。结果是一个 Pandas Series 对象,显示每个分组中'B'列的唯一值个数。

输出

A
1	2
2	1
3	3
Name: B, dtype: int64

结论

总之,统计 Pandas Groupby 对象中的唯一值是数据分析中的一项常见任务,可以使用不同的方法来实现。

nunique() 方法是统计 Groupby 对象中唯一值的一种简单方法,而 agg() 方法允许我们将多个聚合函数(包括 nunique())应用于 Groupby 对象。

另一种方法是使用 unique() 方法提取唯一值,并使用 len() 函数对其进行计数。根据具体的用例,一种方法可能比另一种方法更合适。

通过理解这些不同的方法,我们可以有效地统计 Pandas Groupby 对象中的唯一值,并获得对数据的宝贵见解。

更新于:2023年8月3日

11K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告