Pandas GroupBy 计算列中的出现次数

  • Post category:Python

首先,Pandas是一个强大的Python数据分析工具,GroupBy是其中最常用的功能之一,用于按照某些标准划分数据集,然后对每个子集进行计算处理。

在实现计算列中的出现次数时,我们可以利用GroupBy将数据分组,然后使用value_counts()函数来计算每个组中每个值出现的次数。

以下是一个例子:

假设我们有以下数据集,表示每个人喜欢的水果:

import pandas as pd

data = {"name": ["John", "Alice", "John", "Bob", "Bob", "Alice", "Alex"],
        "fruit": ["Apple", "Banana", "Orange", "Apple", "Banana", "Orange", "Apple"]}

df = pd.DataFrame(data)

现在我们想计算每个人喜欢的水果的出现次数,可以按照“name”列分组,然后对每个分组使用value_counts()。

result = df.groupby("name")["fruit"].value_counts()
print(result)

输出结果如下:

name    fruit 
Alex    Apple     1
Alice   Orange    1
        Banana    1
Bob     Banana    1
        Apple     1
John    Orange    1
        Apple     1
Name: fruit, dtype: int64

我们可以看出,每个人喜欢的水果出现的次数都被正确地计算出来了。

另外,如果我们想要将结果转换为DataFrame的形式,可以使用unstack()函数:

result = df.groupby("name")["fruit"].value_counts().unstack(fill_value=0)
print(result)

输出结果如下:

fruit   Apple  Banana  Orange
name                         
Alex        1       0       0
Alice       0       1       1
Bob         1       1       0
John        1       0       1

这样,我们就成功地计算了每个人喜欢的水果的出现次数,并将结果转换为了DataFrame的形式。