欢迎访问宙启技术站
智能推送

Python中使用count()函数统计pandas数据框某列中不同值的出现次数

发布时间:2024-01-06 09:45:13

在Python的pandas库中,可以使用count()函数来统计DataFrame中某一列(Series)中不同值的出现次数。count()函数会返回一个新的Series对象,其中包含了不同值作为索引,对应的值为该值在原始Series中出现的次数。

下面是一个使用count()函数统计某列中不同值的出现次数的例子:

首先,我们需要导入pandas库并创建一个DataFrame,用于演示count()函数的用法:

import pandas as pd

# 创建一个包含考试成绩的DataFrame
df = pd.DataFrame({'姓名': ['小明', '小红', '小李', '小明', '小王', '小红', '小明', '小李'],
                   '成绩': [90, 80, 85, 92, 87, 80, 90, 88]})
print(df)

输出结果为:

  姓名  成绩
0  小明  90
1  小红  80
2  小李  85
3  小明  92
4  小王  87
5  小红  80
6  小明  90
7  小李  88

接下来,我们可以使用count()函数来统计成绩列中不同值的出现次数:

# 统计成绩列中不同值的出现次数
count_series = df['成绩'].value_counts()
print(count_series)

输出结果为:

90    2
80    2
88    1
87    1
85    1
92    1
Name: 成绩, dtype: int64

可以看到,count_series是一个新的Series对象,它的索引是成绩列中的不同值(90, 80, 88, 87, 85, 92),对应的值则是每个值在成绩列中出现的次数。

我们还可以进一步对count_series进行排序,将出现次数最多的值排在前面,可以使用sort_values()函数来实现:

# 对count_series进行排序
sorted_series = count_series.sort_values(ascending=False)
print(sorted_series)

输出结果为:

90    2
80    2
88    1
87    1
85    1
92    1
Name: 成绩, dtype: int64

可以看到,sorted_series是一个新的Series对象,它的索引是成绩列中的不同值,对应的值是每个值在成绩列中出现的次数,并按照出现次数从大到小进行了排序。

除了对整个DataFrame中的某列进行统计,我们还可以对DataFrame中多个列同时使用count()函数进行统计。例如,我们可以同时统计姓名和成绩两列中不同值的出现次数:

# 统计姓名和成绩两列中不同值的出现次数
count_df = df[['姓名', '成绩']].apply(lambda x: x.value_counts()).T.stack()
print(count_df)

输出结果为:

姓名  小红    2.0
    小李    2.0
    小王    1.0
    小明    3.0
成绩  80     2.0
    85     1.0
    87     1.0
    88     1.0
    90     2.0
    92     1.0
dtype: float64

可以看到,count_df是一个新的DataFrame对象,它的行索引是姓名和成绩列中的不同值,列索引是原始DataFrame的列名(姓名和成绩),对应的值是每个值在对应列中出现的次数。

通过以上的例子,我们可以看到在Python中使用count()函数统计pandas数据框某列中不同值的出现次数是非常简单的。通过count()函数,我们可以快速、方便地了解DataFrame中某列中不同值的分布情况。