Python快速刷题网站——牛客网 数据分析篇(十五)
👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:Love And Program的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主
前言
本文将继续学习pandas 中级函数 部分内容
大佬之间的差距
现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
牛客网有很多7级红名大佬,这是众所周知的,但是小白想知道这些大佬的成就值之间有没有什么不同,于是他想从这份文件中输出7级用户中最高成就值与最低成就值之差。
输入描述:
数据集直接从当前目录下的Nowcoder.csv文件中读取。
输出描述:
直接输出计算结果,为整数。
- 读题找出重点:7级用户中最高成就值与最低成就值之差
- 使用
max()/min
函数计算得出差值(以程序的形式进行加减运算)
# DA21 大佬用户成就值比例
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'],
"Number_of_submissions":[120,1,2,1,3]
})
int(data[data['Level']==7]['Achievement_value'].max()-data[data['Level']==7]['Achievement_value'].min())
以上思想是在一列中直接拿到最小值,也可以先找到对应列再取最小值,代码上有细微差距,如下:
print(max(data[data["Level"]==7]["Achievement_value"])-min(data[data["Level"]==7]["Achievement_value"]))
最终代码整理如下:
DA19 牛客网大佬之间的差距
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
print(int(Nowcoder[Nowcoder['Level']==7]['Achievement_value'].max()-Nowcoder[Nowcoder['Level']==7]['Achievement_value'].min()))
用户刷题量的方差与提交次数的标准差
现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
假如牛牛正在统计用户的刷题情况,需要知道用户刷题量的方差以及提交代码次数的标准差,你能够帮助他吗?
输入描述:
数据集直接从当前目录下的Nowcoder.csv文件中读取。
输出描述:
直接输出计算的结果,各自保留两位小数,第一行为方差,第二行为标准差。
- 读题找出重点:用户刷题量的方差、提交代码次数的标准差
- 使用
var()/min
函数计算得出方差和标准差
众所周知,pandas是可以对一列进行共同运算的,以前使用sum()
可以,使用max()/min()
可以,那同理,方差和标准差也可以
# DA21 大佬用户成就值比例
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'],
"Number_of_submissions":[120,1,2,1,3]
})
print(round(data['Num_of_exercise'].var(),2))
print(round(data['Number_of_submissions'].std(),2))
我们也可以使用pandas
中内置的rounds函数,意义也是一样的,如下:
# 方差
print(Nowcoder['Num_of_exercise'].var().round(2))
# 标准差
print(Nowcoder['Number_of_submissions'].std().round(2))
最终代码整理如下:
DA20 牛客用户刷题量的方差与提交次数的标准差
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# 方差
print(round(Nowcoder['Num_of_exercise'].var(),2))
# 标准差
print(round(Nowcoder['Number_of_submissions'].std(),2))
# 方差
print(Nowcoder['Num_of_exercise'].var().round(2))
# 标准差
print(Nowcoder['Number_of_submissions'].std().round(2))