Python快速刷题网站——牛客网 数据分析篇(十一)

本文介绍了如何利用Python的pandas库,通过value_counts()函数统计Nowcoder.csv文件中各编程语言的用户数量,适合初学者提升数据分析技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:Love And Program的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主

在这里插入图片描述

        python是目前非常火爆的语言,其在人工智能、数据分析领域都占有一席之地,无论是学习还是工作,都会给你带来相当大的帮助。我在这给大家 推荐一个快速提升自己的网站👉👉 牛客网,他们现在的IT题库内容很丰富,属于国内做的很好的了,可以在下图中看见里面试题应有尽有,最最最重要的里面的资源全部免费!!!(亲测全免费,写题解还可以得小礼物)

欢迎大家订阅本专栏进行自助练习🥰🥰

系列专栏链接:

Python快速刷题网站——牛客网 数据分析篇专栏

前言

       逻辑运算 部分已经完结,相信大家对于csv、excel文件基本的查找操作已经熟练掌握了,接下来我们要学习的是 中级函数 部分,得,又需要记新的函数了,但是你要知道,Python作为你最值得信赖的工具,它是不会为难你的,总结起来就是好记,很好记,非常t喵d好记。

不同语言使用人数

       现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
刚刚发现牛客网想要学习编程的小白,不知道优先学习什么语言,刷什么题单,你能帮助他从这个csv文件中找到牛客网各种语言使用的用户分别有多少吗?
请添加图片描述
输出该数据集中满足筛选条件的全部信息,包括列号。请添加图片描述

  • 读题找出重点:找出语言种类
  • 接下来我们学习三个将要用到的函数,分别是:value_counts()size()count()

value_counts():The returned Series will have a MultiIndex with one level per input column. By default, rows that contain any NA values are omitted from the result. By default, the resulting Series will be in descending
order so that the first element is the most frequently-occurring row.

翻译过来是:返回的序列将具有一个多索引,每个输入列有一个级别。默认情况下,包含任何 NA 值的行将从结果中省略。默认情况下,生成的序列将降序排列顺序,因此第一个元素是最常出现的行。

       总结一下:计算每列重复值个数,但是这个列取决于你用的数据,选取多列按一列计算,代码如下:

import numpy as np
import pandas as pd

data= pd.DataFrame({
    "Nowcoder_ID":[178372,989717,783650,723570,456568],
    "Level":[7,1,2,6,7],
    "Achievement_value":[8711,13,130,5666,11234],
    "Num_of_exercise":[500,3,32,433,899],
    "Graduate_year":[2017,2016,2010,2019,2017],
    "Language":['CPP','Java','C','C','Python'],
})
data.value_counts()

       很明显,除非是两行数据一模一样,否则最右边统计个数只有一个,但是他也很人性化,若是遇见存在相同的数据会显示为空并放在一起,读者可以自行尝试
在这里插入图片描述
       既然如此根据题目要求,我们选取特定一列即可完成任务:

data['Language'].value_counts()

在这里插入图片描述


count() : For each column/row the number of non-NA/null entries.

翻译:对于每列/行,非 NA/空条目的数量。
       总结一下:直接用的话计算的是数量,单纯的数量!但是我们有一个分组函数groupby(),他们可以结合使用,于是答案就出来了。

       在此之前,我先给大家稍微说一下什么是groupby()函数,一个小demo可以轻松理解:

import numpy as np
import pandas as pd
data= pd.DataFrame({
    "Num_of_exercise":[500,3,32,433,899],
    "Graduate_year":[2017,2016,2010,2019,2017],
    "Language":['CPP','Java','C','C','Python'],
})
data['Language'].value_counts()
data1 = data.groupby('Language')
for name,group in data1:
    print (name)
    print (group)

       以不通语言为一组,这就是分组后的内容,注意:groupby函数不能够直接显示具体内容,其代指<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000028EA26A2B20>,所以需要循环输出。

在这里插入图片描述
       上面说了要用count()groupby()函数两者结合,两者结合后会发生奇妙的化学反应,反应如下,可以直接生成数据:

data.groupby('Language').count()
# 于是我们只需要随便选一行就好了
# 注意,因为与输出结果略显不同,所以count()无法输出牛客网的这道题
data.groupby('Language').count()['Nowcoder_ID']

在这里插入图片描述


size() :Return the number of rows if Series. Otherwise return the number of rows times number of columns if DataFrame.

翻译:如果为Series,则返回行数。如果是 DataFrame 则返回列中的的行数。
       总结一下:可以理解为在列中寻找相同的行,统计的是每条数据的条数,上面讲的count()函数统计的是值的个数,所以需要最后单独选一列,而size则不需要,代码如下:

# 注意,因为与输出结果略显不同,所以size()无法输出牛客网的这道题
data.groupby('Language').size()

在这里插入图片描述


最终代码整理如下:
DA12 牛客网不同语言使用人数

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
print(Nowcoder.loc[:,'Language'].value_counts())

我们热爱这个世界时,才真正活在这个世界上。                           ————泰戈尔

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love And Program

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值