Pandas aggregate函数来对数据进行聚合后,统计唯一值的个数
在本文中,我们将介绍如何使用Pandas的aggregate函数来对数据进行聚合后,统计唯一值的个数。
阅读更多:Pandas 教程
聚合函数
在Pandas中,可以使用groupby函数对数据进行分组,然后使用聚合函数对每个分组的数据进行计算,例如求每组数据的平均值、最大值、最小值等。Pandas中的聚合函数包括count、mean、median、sum等。其中,count函数用于计算每组数据中的元素个数。
例如,我们有以下数据:
import pandas as pd
data = {
'Name': ['Tom', 'Tom', 'Ben', 'Ben', 'Alice', 'Bob'],
'Age': [20, 23, 25, 27, 22, 20],
'Gender': ['M', 'M', 'M', 'M', 'F', 'M'],
'Score': [80, 90, 85, 95, 88, 92]
}
df = pd.DataFrame(data)
我们可以使用groupby函数对数据按照Gender进行分组,然后对每组数据使用count函数统计元素个数:
df.groupby('Gender')['Name'].count()
输出结果为:
Gender
F 1
M 5
Name: Name, dtype: int64
可以看出,在Gender为F的分组中,数据有1个,Gender为M的分组中,数据有5个。
Pandas aggregate函数
Pandas中的aggregate函数可以对每个分组的数据应用多个聚合函数,将结果合并为一个DataFrame。
例如,我们仍然使用上述数据,但是需要统计每个分组中Age的平均值和最大值,以及Score的最小值:
df.groupby('Gender').agg({'Age': ['mean', 'max'], 'Score': 'min'})
输出结果为:
Age Score
mean max min
Gender
F 22.00 22 88
M 23.00 27 80
其中,Age的mean表示平均值,max表示最大值;Score的min表示最小值。
count distinct的实现
如果我们需要在每个分组中统计某一列中的唯一值个数,可以使用Pandas中的nunique函数。
例如,我们使用以下数据:
data = {
'Name': ['Tom', 'Tom', 'Ben', 'Ben', 'Alice', 'Bob'],
'Gender': ['M', 'M', 'M', 'M', 'F', 'M'],
'Fruit': ['Apple', 'Orange', 'Apple', 'Banana', 'Apple', 'Apple']
}
df = pd.DataFrame(data)
我们可以使用以下代码统计每个分组中Fruit这一列中唯一值的个数:
df.groupby('Gender')['Fruit'].nunique()
输出结果为:
Gender
F 1
M 3
Name: Fruit, dtype: int64
可以看出,Gender为F的分组中,Fruit这一列有1个唯一值,而Gender为M的分组中,Fruit这一列有3个唯一值。
条件筛选
在进行count distinct操作时,有时我们需要对数据进行条件筛选。这时,可以使用Pandas中的query方法。
例如,我们使用以下数据:
data = {
'Name': ['Tom', 'Tom', 'Ben', 'Ben', 'Alice', 'Bob'],
'Gender': ['M', 'M', 'M', 'M', 'F', 'M'],
'Fruit': ['Apple', 'Orange', 'Apple', 'Banana', 'Apple', 'Apple'],
'Price': [5, 3, 5, 7, 4, 3]
}
df = pd.DataFrame(data)
我们可以使用以下代码,筛选Gender为M且Fruit为Apple的数据,然后统计每个分组中Price这一列中唯一值的个数:
df.query('Gender == "M" & Fruit == "Apple"').groupby('Name')['Price'].nunique()
输出结果为:
Name
Ben 1
Tom 1
Name: Price, dtype: int64
可以看出,Gender为M且Fruit为Apple的数据中,Ben和Tom这两个Name所在的分组中,Price这一列有1个唯一值。
总结
Pandas的aggregate函数非常实用,可以对每个分组中多个列进行不同的聚合操作,而使用nunique函数可以统计每个分组中某一列中的唯一值个数。
同时,使用Pandas的query方法结合分组函数和唯一值计数函数,可以方便地对数据进行条件筛选和统计。
以上就是如何使用Pandas的aggregate函数进行count distinct的介绍,希望对您有帮助!
极客教程