👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:Love And Program的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主
python是目前非常火爆的语言,其在人工智能、数据分析领域都占有一席之地,无论是学习还是工作,都会给你带来相当大的帮助。我在这给大家 推荐一个快速提升自己的网站👉👉 牛客网,他们现在的IT题库内容很丰富,属于国内做的很好的了,可以在下图中看见里面试题应有尽有,最最最重要的里面的资源全部免费!!!(亲测全免费,写题解还可以得小礼物)欢迎大家订阅本专栏进行自助练习🥰🥰
系列专栏链接:
今天是 逻辑运算 部分最后一讲,他将前面所说的函数和思想都用到了,很值得思考,同时,学完这一部分我们将开始学习pandas库中级函数,常见的就是平均值、众数、中位数、四分位数,这些常见的数学知识,也是比较容易的。
现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
假设2018年毕业的你突发奇想,想要知道牛客网有哪些使用CPP的7级用户,且他们的毕业年份和你不是同年的,请问该怎么筛选?
输入描述:
数据集直接从当前目录下的Nowcoder.csv文件中读取。
输出该数据集中满足筛选条件的全部信息,包括列号。
Language
和Graduate_year
中筛选。loc()/query()
,亦或是直接选取三个条件。 沿用上一章使用过的数据,直接进行筛选,筛选语言选CPP
,毕业年份非2018
,等级为7
的用户,分别用如下三个公式:data['Language']=='CPP')
、(data['Graduate_year']!=2018)
、(data['Level']==7)
,并用 与 连接,全部代码如下:
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','Python'],
})
data[(data['Language']=='CPP')&(data['Graduate_year']!=2018)&(data['Level']==7)]
用loc
函数表示:
data.loc[(data['Language']=='CPP')&(data['Graduate_year']!=2018)&(data['Level']==7)]
用query函数写:
data.query("Language == 'CPP' & Level == 7 & Graduate_year != 2018")
最终代码整理如下:
DA11 按照毕业年份与使用语言筛选牛客网7级用户
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
# print(Nowcoder[(Nowcoder['Language']=='CPP')&(Nowcoder['Graduate_year']!=2018)&(Nowcoder['Level']==7)])
print(Nowcoder.loc[(Nowcoder.Language=='CPP')&(Nowcoder.Level==7)&(Nowcoder.Graduate_year!=2018)])
致读者的一段话:其实很多人都有个疑问,刷题真的有用么?会不会浪费时间?我能给你的答案是:真的很有用!无论你干什么,都是熟能生巧,很多事情你做得多了也就懂得流程了,哪怕你从来没接触过的新知识,但是它属于你平常做的范畴,你在开始之前就已经知道自己该去做什么了。
拿我自己举例,我今天就可以完全感觉出我的实际运用水平上高一个等级,所以我才在最后说一些我自己的看法。其实原来对这些函数还有些模糊,用着用着里面参数就忘了,我甚至有时候连 data.[data.language>10] 这种基本语法都需要上网查查,我会,但是我写不出来!但是逐渐的,对这种查找具体内容的逻辑已经比前些日子清晰太多了,就像题目开头分析的,一下子我就知道用哪个函数,能用速度快的函数区分,就尽量少用for循环,无论是在工作中,还是在刷题中打磨自己,有那种意识,才能达到自己想要的那个位置。