📜  在 Pandas 聚合中计数不同(1)

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

在 Pandas 聚合中计数不同

在数据分析中,我们经常需要对数据进行聚合,并计算不同值的出现次数。Pandas提供了一个非常方便的方法来实现这一点。

1. 准备数据

我们先创建一个包含多个不同值的DataFrame:

import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Alice', 'Bob', 'Bob', 'Charlie', 'Charlie', 'David'],
                   'age': [25, 30, 35, 25, 25, 30, 30, 35, 35, 40],
                   'gender': ['F', 'M', 'M', 'F', 'F', 'M', 'M', 'M', 'F', 'M']})
2. 使用value_counts方法

使用value_counts方法可以方便地计算某一列中不同值的出现次数。例如,统计name列中不同名字的出现次数:

name_count = df['name'].value_counts()
print(name_count)

输出结果为:

Alice      3
Bob        3
Charlie    3
David      1
Name: name, dtype: int64
3. 利用groupby方法

我们也可以利用groupby方法对某一列分组,并计算组内不同值的出现次数。例如,统计gender列中不同性别在每个年龄组内的出现次数:

gender_count = df.groupby('age')['gender'].value_counts()
print(gender_count)

输出结果为:

age  gender
25   F         2
     M         1
30   M         2
     F         1
35   M         2
     F         1
40   M         1
Name: gender, dtype: int64
4. 对结果进行重塑

有时候我们需要将统计结果进行重塑,以便更好地进行分析。可以使用unstack方法将Series转换为DataFrame。例如,我们将上面的gender_count转换成一个包含行为年龄、列为性别、值为出现次数的DataFrame:

gender_count = gender_count.unstack()
print(gender_count)

输出结果为:

gender  F  M
age         
25      2  1
30      1  2
35      1  2
40    NaN  1
5. 按指定顺序排序

有时候我们需要按照指定顺序对结果进行排序。可以使用sort_values方法进行排序。例如,按照年龄从小到大的顺序对上面的gender_count进行排序:

gender_count = gender_count.sort_values(by=['age'])
print(gender_count)

输出结果为:

gender  F  M
age         
25      2  1
30      1  2
35      1  2
40    NaN  1
6. 填充缺失值

有时候我们需要填充缺失值。可以使用fillna方法填充缺失值。例如,使用0填充上面的gender_count中的缺失值:

gender_count = gender_count.fillna(0)
print(gender_count)

输出结果为:

gender  F  M
age         
25      2  1
30      1  2
35      1  2
40      0  1

通过以上步骤,我们可以方便地对数据进行聚合,并计算不同值的出现次数,从而更好地进行数据分析。