一个帅气的boy,你可以叫我Love And Program
⌨个人主页:Love And Program的个人主页
如果对你有帮助的话希望三连支持一下博主
python是目前非常火爆的语言,其在人工智能、数据分析领域都占有一席之地,无论是学习还是工作,都会给你带来相当大的帮助。我在这给大家 推荐一个快速提升自己的网站 牛客网,他们现在的IT题库内容很丰富,属于国内做的很好的了,最最最重要的里面的资源全部免费!!!欢迎大家订阅本专栏进行自助练习
系列专栏链接:
Python快速刷题网站——牛客网 数据分析篇专栏
相信前两章的学习,大家对 逻辑运算 部分逐渐熟悉,对必要的几个函数的应用已经得心应手,如果还不熟练,请再多多练习掌握,功崇惟志,业广惟勤!今天我们将继续学习 逻辑运算 部分!
现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
正在刷题的小白想知道牛客网刷题数量不低于500题的大佬,他们的等级和成就值是怎么样的,你能帮助他吗?
输出描述:
输出该数据集中刷题量不低于500对应的等级与成就值这一列的信息,包括列号。
Level
和Achievement_value
loc()/query()
,此题依然无法直接使用iloc
函数求解,因为从定义上来说,我们无法 根据行号来判断刷题数不低于500。首当其冲的建表,不过不必浪费大家的时间,我已经给大家建好了:
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','CPP','C','Python'],
})
然后我们先直接判断 >500 的所有数据并打印出来,所需代码如下:
print(data[data.Num_of_exercise>500])
接下来我们只需要选出Level
和Achievement_value
两部分即可,下面代码[['Level', 'Achievement_value']]
无论放前面放后面结果都是一样的,但是逻辑上查找顺序是相反的,读者可以思考一下:
# 注意:博主使用jupyter,所以不使用print也可以打印出结果
data[data.Num_of_exercise>=500][['Level', 'Achievement_value']]
data[['Level', 'Achievement_value']][data.Num_of_exercise>=500]
同理,用下面这种方式也可以,使用loc
函数提取,结果是一毛一样的:
data.loc[data['Num_of_exercise']>500, ['Level', 'Achievement_value']]
最后我们使用quary()
函数和iloc()
函数结合,应该还记得quary()
函数的使用方法吧:
注意:在使用quary()
函数时若是查找字符串记得将 单引号和双引号 区分开,否则会导致程序将相近的代码引用起来从而导致报错。
data.query("Num_of_exercise>500").iloc[:,1:3]
# data.query("Num_of_exercise>500")[['Level','Achievement_value']]
最终代码整理如下:
DA10 统计牛客网刷题数量500以上的大佬
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',')
# 显示pd最大行最大列,若超出不显示的话牛客识别时不会认对答案
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
# print(Nowcoder[['Level', 'Achievement_value']][Nowcoder.Num_of_exercise>=500])
# print(Nowcoder.loc[Nowcoder['Num_of_exercise']>500, ['Level', 'Achievement_value']])
# print(Nowcoder.query('Num_of_exercise>=500')[['Level','Achievement_value']])
print(Nowcoder.query("Num_of_exercise>=500").iloc[:,1:3])
暑假已经到末尾,希望大家跟着我完成绕道超车,写代码从来不是一蹴而就的...