📅  最后修改于: 2023-12-03 14:51:03.942000             🧑  作者: Mango
Pandas是一种基于NumPy的工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需的数据结构和函数。
Pandas中的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参数。