Python Pandas 计算特定值的出现次数

2025-03-04 08:24:00
admin
原创
45
摘要:问题描述:我试图找出某个值在一列中出现的次数。我已经用data = pd.DataFrame.from_csv('data/DataSet2.csv')现在我想找出某项在列中出现的次数。该怎么做?我以为是下面的内容,我正在查看教育专栏并计算发生的次数?。下面的代码显示我正在尝试查找出现的次数9th,而错误是我...

问题描述:

我试图找出某个值在一列中出现的次数。

我已经用data = pd.DataFrame.from_csv('data/DataSet2.csv')

现在我想找出某项在列中出现的次数。该怎么做?

我以为是下面的内容,我正在查看教育专栏并计算发生的次数?

下面的代码显示我正在尝试查找出现的次数9th,而错误是我运行代码时得到的

代码

missing2 = df.education.value_counts()['9th']
print(missing2)

错误

KeyError: '9th'

解决方案 1:

您可以subset根据您的条件创建数据,然后使用shapelen

print df
  col1 education
0    a       9th
1    b       9th
2    c       8th

print df.education == '9th'
0     True
1     True
2    False
Name: education, dtype: bool

print df[df.education == '9th']
  col1 education
0    a       9th
1    b       9th

print df[df.education == '9th'].shape[0]
2
print len(df[df['education'] == '9th'])
2

性能很有趣,最快的解决方案是比较 numpy 数组和sum

Python Pandas 计算特定值的出现次数

代码

import perfplot, string
np.random.seed(123)


def shape(df):
    return df[df.education == 'a'].shape[0]

def len_df(df):
    return len(df[df['education'] == 'a'])

def query_count(df):
    return df.query('education == "a"').education.count()

def sum_mask(df):
    return (df.education == 'a').sum()

def sum_mask_numpy(df):
    return (df.education.values == 'a').sum()

def make_df(n):
    L = list(string.ascii_letters)
    df = pd.DataFrame(np.random.choice(L, size=n), columns=['education'])
    return df

perfplot.show(
    setup=make_df,
    kernels=[shape, len_df, query_count, sum_mask, sum_mask_numpy],
    n_range=[2**k for k in range(2, 25)],
    logx=True,
    logy=True,
    equality_check=False, 
    xlabel='len(df)')

解决方案 2:

count使用或的几种方法sum

In [338]: df
Out[338]:
  col1 education
0    a       9th
1    b       9th
2    c       8th

In [335]: df.loc[df.education == '9th', 'education'].count()
Out[335]: 2

In [336]: (df.education == '9th').sum()
Out[336]: 2

In [337]: df.query('education == "9th"').education.count()
Out[337]: 2

解决方案 3:

计算任意列中任意符号的出现次数的一种优雅方法是使用数据框对象的'?'内置函数。isin

假设我们已经将“汽车”数据集加载到df对象中。我们不知道哪些列包含缺失值('?'符号),因此让我们这样做:

df.isin(['?']).sum(axis=0)

DataFrame.isin(values)官方文件说:

它返回布尔 DataFrame,显示 DataFrame 中的每个元素是否包含在值中

请注意,isin接受可迭代作为输入,因此我们需要将包含目标符号的列表传递给此函数。df.isin(['?'])将返回如下布尔数据框。

    symboling   normalized-losses   make    fuel-type   aspiration-ratio ...
0   False       True                False   False       False
1   False       True                False   False       False
2   False       True                False   False       False
3   False       False               False   False       False
4   False       False               False   False       False
5   False       True                False   False       False
...

为了计算每列中目标符号的出现次数,让我们sum通过指示来接管上述数据框的所有行axis=0。最终(截断)结果显示了我们的预期:

symboling             0
normalized-losses    41
...
bore                  4
stroke                4
compression-ratio     0
horsepower            2
peak-rpm              2
city-mpg              0
highway-mpg           0
price                 4

解决方案 4:

尝试一下:

(df[education]=='9th').sum()

解决方案 5:

简单但不高效:

list(df.education).count('9th')

解决方案 6:

计算 Pandas 数据框中某一列出现次数(唯一值)的简单示例:

import pandas as pd

# URL to .csv file 
data_url = 'https://yoursite.com/Arrests.csv'
# Reading the data 
df = pd.read_csv(data_url, index_col=0)
# pandas count distinct values in column 
df['education'].value_counts()

输出:

Education        47516 
9th              41164 
8th              25510 
7th              25198 
6th              25047                       
...  
3rd                 2 
2nd                 2 
1st                 2 
Name: name, Length: 190, dtype: int64

解决方案 7:

要查找某一列的特定值,您可以使用以下代码

无论偏好如何,您都可以使用任何您喜欢的方法

df.col_name.value_counts().Value_you_are_looking_for

以泰坦尼克号数据集为例

df.Sex.value_counts().male

这样就可以统计船上所有男性的数量,但是如果你想要统计数值数据,那么你就不能使用上面的方法,因为 value_counts() 只用于系列类型的数据,因此会失败,因此你可以使用第二种方法示例

第二种方法是

#this is an example method of counting on a data frame
df[(df['Survived']==1)&(df['Sex']=='male')].counts()

这不像 value_counts() 那么有效,但如果你想计算数据框的值,它肯定会有所帮助,希望这会有所帮助

编辑--如果你想寻找中间有空格的东西

你可以使用

df.country.count('united states')
我相信这应该能解决问题

解决方案 8:

我认为这可能是一个更简单的解决方案。假设您有以下数据框。

DATE        LANG        POSTS
2008-07-01  c#          3
2008-08-01  assembly    8
2008-08-01  javascript  2
2008-08-01  c           85
2008-08-01  python      11
2008-07-01  c#          3
2008-08-01  assembly    8
2008-08-01  javascript  62
2008-08-01  c           85
2008-08-01  python      14

您可以像这样找到 LANG 项的出现次数总和

df.groupby('LANG').sum()

你将得到每种语言的总数

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1911  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1430  
  在制造业数字化转型的进程中,PLM(产品生命周期管理)系统、ERP(企业资源计划)系统、MES(制造执行系统)以及 CAD(计算机辅助设计)软件都扮演着至关重要的角色。然而,这些系统和软件各自独立运行时,往往难以发挥出最大的协同效应。实现 PLM 系统与 ERP、MES、CAD 的有效集成,成为提升企业整体竞争力、优化...
plm系统的主要功能模块   22  
  产品生命周期管理(PLM)作为一种先进的管理理念和技术,在电子与半导体行业正发挥着日益重要的作用。随着电子与半导体行业的快速发展,产品更新换代速度加快,市场竞争愈发激烈,企业面临着诸多挑战,如缩短产品上市时间、提高产品质量、降低成本等。而PLM的应用为企业应对这些挑战提供了有效的解决方案,展现出巨大的应用价值。提升产品...
plm项目   18  
  PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营中扮演着至关重要的角色。它整合了从产品概念设计到退役的全流程数据与流程,助力企业提升效率、降低成本并增强创新能力。随着科技的飞速发展以及企业需求的不断演变,未来十年 PLM 项目管理软件的发展充满了无限可能,值得深入探讨与预测。智能化与自动化趋势智能...
plm产品全生命周期管理   23  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用