📜  Pandas GroupBy – 计算列中的出现次数(1)

📅  最后修改于: 2023-12-03 14:45:02.585000             🧑  作者: Mango

Pandas GroupBy – 计算列中的出现次数

在数据分析过程中,我们经常需要对数据集按照某一列进行分组,然后计算该列中各个值出现的次数。在 Pandas 中,可以通过 GroupBy(分组)方法以及 value_counts(计算出现次数)方法实现这一操作。

准备数据

我们将使用一个包含多个州(state)和颜色(color)的数据集作为示例。以下是我们要用到的 Python 代码:

import pandas as pd

# 创建数据帧
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'color': ['red', 'red', 'blue', 'blue', 'red', 'red']}
df = pd.DataFrame(data)
print(df)

输出结果:

    state color
0    Ohio   red
1    Ohio   red
2    Ohio  blue
3  Nevada  blue
4  Nevada   red
5  Nevada   red

数据集中包含州的名称和颜色,我们将按照州的名称对其进行分组,并计算各个颜色出现的次数。

分组计数

以下代码展示了如何先按照“state”列进行分组,然后计算每组中各个颜色出现的次数:

grouped = df.groupby(['state', 'color'])
count = grouped.size()
print(count)

输出结果:

state   color
Nevada  blue     1
        red      2
Ohio    blue     1
        red      2
dtype: int64

我们将数据集按照“state”列和“color”列进行分组,并使用 size() 方法计算了每组的大小。以上结果表明,Ohio 州有 2 个红色和 1 个蓝色汽车;Nevada 州有 2 个红色和 1 个蓝色汽车。

将计数添加到数据集

我们还可以将以上计数添加到原始数据集中。为此,我们可以使用 transform() 方法,该方法会返回一个带有同样数量行的数据帧,其中的值表示每个组的计数。

以下是如何将计数添加到原始数据集的示例:

grouped = df.groupby(['state', 'color'])
df['count'] = grouped['color'].transform('count')
print(df)

输出结果:

    state color  count
0    Ohio   red      2
1    Ohio   red      2
2    Ohio  blue      1
3  Nevada  blue      1
4  Nevada   red      2
5  Nevada   red      2

以上结果表明,每个州的每种颜色的出现次数均已计算,并添加到了“count”列中。

结论

Pandas GroupBy 可以轻松地对数据集按照某一列进行分组,并计算每组中各个值的出现次数。了解如何在 Pandas 中实现 GroupBy 及其相应的计数方法,将大大提高数据分析工作的效率。