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

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

在这里插入图片描述

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

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

系列专栏链接:

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

前言

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

不同语言使用人数

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

  • 读题找出重点:找出语言种类
  • 接下来我们学习三个将要用到的函数,分别是: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()

       很明显,除非是两行数据一模一样,否则最右边统计个数只有一个,但是他也很人性化,若是遇见存在相同的数据会显示为空并放在一起,读者可以自行尝试
Python快速刷题网站——牛客网 数据分析篇(十一)_第2张图片
       既然如此根据题目要求,我们选取特定一列即可完成任务:

data['Language'].value_counts()

Python快速刷题网站——牛客网 数据分析篇(十一)_第3张图片


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函数不能够直接显示具体内容,其代指,所以需要循环输出。

Python快速刷题网站——牛客网 数据分析篇(十一)_第4张图片
       上面说了要用count()groupby()函数两者结合,两者结合后会发生奇妙的化学反应,反应如下,可以直接生成数据:

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

Python快速刷题网站——牛客网 数据分析篇(十一)_第5张图片


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()

Python快速刷题网站——牛客网 数据分析篇(十一)_第6张图片


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

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

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

你可能感兴趣的:(牛客,数据分析练习之路,python,数据分析,人工智能,程序人生,jupter)