在Python Pandas中按组计算唯一值数
在数据处理过程中,经常需要对数据进行按组统计的操作。一个常见的统计指标是每个组中唯一值的数量。在Python Pandas中,可以使用groupby()
函数和一些简单的方法进行这样的计算。
数据准备
我们先使用以下代码生成一个包含学生姓名,性别和所在班级的数据集。
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella', 'Frank', 'Gina', 'Henry', 'Isabella', 'Jack'],
'Gender': ['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', 'F', 'M'],
'Class': ['A', 'B', 'B', 'C', 'A', 'C', 'C', 'B', 'A', 'B']}
df = pd.DataFrame(data)
这将生成一个包含10个学生的DataFrame,其中有3个班级,姓名和性别各不相同。
按班级统计唯一性别
我们的第一个任务是计算每个班级中唯一性别的数量。我们可以使用以下代码实现:
grouped = df.groupby(['Class']).agg({'Gender': pd.Series.nunique})
print(grouped)
这段代码首先调用了DataFrame的groupby()
函数,按班级对数据进行分组。然后,使用agg()
函数计算唯一性别个数,并将其保存到一个新的DataFrame中。最后,输出结果。
输出结果将显示每个班级中唯一性别的数量:
Gender
Class
A 2
B 3
C 2
按性别统计唯一姓名
现在,让我们计算每个性别中唯一姓名的数量。我们可以按照相同的方式使用groupby()
和agg()
函数,使用如下代码:
grouped = df.groupby(['Gender']).agg({'Name': pd.Series.nunique})
print(grouped)
这段代码先按性别对数据进行分组,计算每个性别中唯一姓名的数量,然后输出结果。
输出结果如下:
Name
Gender
F 4
M 6
这表明我们在这个小数据集中有4名女孩和6名男孩,他们的姓名各不相同。
按性别和班级统计唯一姓名
最后,我们可以组合班级和性别信息,计算每个班级和性别中的唯一姓名数量:
grouped = df.groupby(['Class', 'Gender']).agg({'Name': pd.Series.nunique})
print(grouped)
这段代码首先按照班级和性别组合分组数据,然后计算每个组内唯一姓名的数量,并输出结果。
输出结果将显示每个班级和性别组合中的唯一姓名数量:
Name
Class Gender
A F 2
M 1
B F 1
M 4
C F 1
M 1
这表明,在班级A中,有2个女孩和1个男孩的姓名唯一,班级B中有1个女孩和4个男孩的姓名唯一,班级C中有1个女孩和1个男孩的姓名唯一。
结论
在Python Pandas中按组计算唯一值数是非常容易的。我们只需要使用groupby()
和agg()
函数即可实现这个功能。无论是在数据科学领域还是其他领域,这个操作都可以帮助我们更好地理解数据。我们可以用这个技巧来回答各种有趣的问题,了解数据背后的信息。