如何计算Pandas列中特定值的出现次数

如何计算Pandas列中特定值的出现次数

在这篇文章中,我们将讨论如何在pandas列中计算一个特定列值的出现次数。

使用中的数据集。

如何计算Pandas列中特定值的出现次数?

我们可以通过使用value_counts()方法进行计数。这个函数用来计算整个数据框架中存在的数值,也可以计算某一列的数值。

语法 :

data['column_name'].value_counts()[value]

其中,

  • data是输入数据帧
  • value是指要计算的列中存在的字符串/整数值
  • column_name是数据框架中的列。

例子 :要计算一个特定值的出现次数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count values in name column
print(data['name'].value_counts()['sravan'])
 
# count values in subjects column
print(data['subjects'].value_counts()['php'])
 
# count values in marks column
print(data['marks'].value_counts()[89])

输出:

3
2
1

如果我们想计算某一列的所有数值,那么我们就不需要提到这个数值。

语法 :

data['column_name'].value_counts()

例子:要计算一个值在某一列中的出现次数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name column
print(data['name'].value_counts())
 
# count all values in subjects column
print(data['subjects'].value_counts())
 
# count all values in marks column
print(data['marks'].value_counts())
 
# count all values in age column
print(data['age'].value_counts())

输出:

如何计算Pandas列中特定值的出现次数?

如果我们想按顺序获得结果(如升序和降序),我们必须指定参数

语法:

升序:

data[‘column_name’].value_counts(ascending=True)

降序:

data[‘column_name’].value_counts(ascending=False)

例子:要以一种有序的方式获得结果

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name column in ascending order
print(data['name'].value_counts(ascending=True))
 
# count all values in subjects column in ascending order
print(data['subjects'].value_counts(ascending=True))
 
# count all values in marks column in descending order
print(data['marks'].value_counts(ascending=False))
 
# count all values in age column in descending order
print(data['age'].value_counts(ascending=False))

输出:

如何计算Pandas列中特定值的出现次数?

处理缺失值的问题

这里我们可以计算有无NA值的出现。通过使用dropna参数,如果设置为True,则包括NA值,如果设置为False,则不计算NA。

语法 :

包括 NA 值:

data[‘column_name’].value_counts(dropna=True)

不包括NA 值:

data[‘column_name’].value_counts(dropna=False)

例子:处理缺失值的问题

# import pandas module
import pandas as pd
 
#import numpy
import numpy
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith', 'gnanesh',
             'sravan', 'sravan', 'ojaswi', numpy.nan],
    'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css',
                 'python', 'R', numpy.nan],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90, numpy.nan],
    'age': [11, 23, 23, 21, 21, 21, 23, 21, numpy.nan]
})
 
# count all values in name column including NA
print(data['name'].value_counts(dropna=False))
 
# count all values in subjects column including NA
print(data['subjects'].value_counts(dropna=False))
 
# count all values in marks column excluding NA
print(data['marks'].value_counts(dropna=False))
 
# count all values in age column excluding NA
print(data['age'].value_counts(dropna=True))

输出:

如何计算Pandas列中特定值的出现次数?

具有相对频率的计数值

我们要添加normalize参数来获得重复数据的相对频率。它被设置为True。

语法:

data[‘column_name’].value_counts(normalize=True) 

例子:具有相对频率的计数值

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name  with relative frequencies
print(data['name'].value_counts(normalize=True))

输出:

sravan     0.375
ojaswi     0.125
ojsawi     0.125
bobby      0.125
rohith     0.125
gnanesh    0.125
Name: name, dtype: float64

获取详细信息

如果我们想获得计数、平均值、标准差、最小值、25%、50%、75%、最大值等详细信息,那么我们必须使用describe()方法。

语法 :

data['column_name'].describe()

示例:获得详细信息

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get about age
print(data['age'].describe())

输出:

count     8.000000
mean     20.500000
std       3.964125
min      11.000000
25%      21.000000
50%      21.000000
75%      23.000000
max      23.000000
Name: age, dtype: float64

使用size()和groupby()

在这里,这将返回某一列中所有出现的计数。

语法 :

data.groupby('column_name').size()

例子 :对某一列中所有出现的情况进行计数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get the size of name
print(data.groupby('name').size())

输出:

name
bobby      1
gnanesh    1
ojaswi     1
ojsawi     1
rohith     1
sravan     3
dtype: int64

使用count()和groupby()

在这里,这将返回所有列中某一列的所有出现的计数。

语法 :

data.groupby('column_name').count()

例子 :对某一列中所有出现的情况进行计数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get the count of name across all columns
print(data.groupby('name').count())

输出:

如何计算Pandas列中特定值的出现次数?

使用 bins

如果我们想得到某个特定范围内的计数,那么就应用bins参数。我们可以指定范围(bins)的数量。

语法:

(data['column_name'].value_counts(bins)

其中,

  • data是输入数据帧
  • column_name是要得到的列。
  • bins是指要指定的分选区总数

例子:在特定的数值范围内获取计数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get count of  age column with  6 bins
print(data['age'].value_counts(bins=6))
 
# get count of  age column with  4 bins
print(data['age'].value_counts(bins=4))

输出:

(19.0, 21.0]      4
(21.0, 23.0]      3
(10.987, 13.0]    1
(17.0, 19.0]      0
(15.0, 17.0]      0
(13.0, 15.0]      0
Name: age, dtype: int64
(20.0, 23.0]      7
(10.987, 14.0]    1
(17.0, 20.0]      0
(14.0, 17.0]      0
Name: age, dtype: int64

使用 apply()

如果我们想获得所有列的计数,那么我们必须使用apply()函数。在此,我们将使用value_counts()方法。

语法:

data.apply(pd.value_counts)

例子:获得所有列的计数,跨所有列的计数

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'bobby', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'html/css', 'python'],
    'marks': [98, 90, 78, 91, 87],
    'age': [11, 23, 23, 21, 21]
})
 
# get all count
data.apply(pd.value_counts)

输出:

如何计算Pandas列中特定值的出现次数?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程