📜  在 pandas 系列中火热统计出现次数 - Python (1)

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

在pandas系列中火热统计出现次数 - Python

Pandas是一种基于NumPy的工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需的数据结构和函数。

Pandas中的value_counts()是一种非常常见的函数,它可以用来快速统计数据中某个列出现的次数。

使用value_counts()函数

value_counts()函数是一个Series函数,它可以应用于Series中的所有元素,并且返回一个对象表示唯一值的出现次数。下面是一个使用value_counts()函数的示例:

import pandas as pd

# 创建一个DataFrame对象
data = {
    'name': ['Alice', 'Bob', 'Cathy', 'Bob', 'David', 'David', 'Alice'],
    'age': [25, 30, 35, 30, 20, 25, 25],
    'gender': ['F', 'M', 'F', 'M', 'M', 'M', 'F']
}

df = pd.DataFrame(data)

# 统计name列中各个元素出现的次数
vc = df['name'].value_counts()

print(vc)

输出结果为:

Alice    2
David    2
Bob      2
Cathy    1
Name: name, dtype: int64

以上代码中,我们创建了一个DataFrame对象,并使用value_counts()函数统计了'name'列的出现次数。最终输出结果是一个Series对象,其中包含了每个元素出现的次数。

统计多个列的数据

value_counts()函数不仅可以统计单个列的数据,还可以统计多个列的数据。例如,我们可以使用下面的代码统计name和age列中各个元素出现的次数:

# 统计name和age列中各个元素出现的次数
vc = df[['name', 'age']].apply(lambda x: tuple(x), axis=1).value_counts()

print(vc)

输出结果为:

(Alice, 25)    2
(Bob, 30)      2
(David, 25)    1
(Bob, 20)      1
(Cathy, 35)    1
(David, 20)    1
Name: 0, dtype: int64

以上代码中,我们通过使用apply()函数和lambda表达式,将name和age两列合并成一个元组,并使用value_counts()函数进行统计。

将数据转化为百分比

如果需要将数据转换为百分比,可以使用normalize=True参数。例如,我们可以使用下面的代码将出现次数转换为百分比:

# 统计name列中各个元素出现的百分比
vc = df['name'].value_counts(normalize=True) * 100

print(vc)

输出结果为:

Alice    28.571429
David    28.571429
Bob      28.571429
Cathy    14.285714
Name: name, dtype: float64

以上代码中,我们将normalize设置为True,然后将结果乘以100,即可得到每个元素出现的百分比。

总结

使用value_counts()函数可以很方便地统计数据中某个列出现的次数,并且还可以统计多个列中各个元素的出现次数。如果需要将结果转化为百分比,可以使用normalize=True参数。