当前位置: 首页 > news >正文

猿创征文|Python快速刷题网站——牛客网 数据分析篇(十六)

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

前言

本文将继续学习pandas 中级函数 部分内容

大佬用户成就值比例

       现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
牛客网有很多7级红名大佬这是众所周知的,小白希望知道这些大佬的成就值各自占据了所有人成就值总和的百分之多少,你能帮他吗?
请添加图片描述
输出描述:
第一列输出行好,第二列输出计算7级用户的成就值占所有人成就值总和的比例,以小数形式输出,小数位保留不用管。

请添加图片描述

  • 读题找出重点:计算7级用户的成就值占所有人成就值总和的比例
  • 使用比值的思想

       首先找到全部七级大佬们的成就值

data[data['Level'] == 7].Achievement_value

       其次,在将其比一个所有人的成就值

data.Achievement_value.sum()

汇总代码如下:

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',np.nan,'C','Python'],
    "Continuous_check_in_days":[1230,10,45,564,1349],
    "Number_of_submissions":[120,1,2,1,np.nan]
})

print(data[data['Level'] == 7].Achievement_value/data.Achievement_value.sum())

在这里插入图片描述

       这里我们进接一下思路,使用函数式编程apply()函数解答,传入全部七级大佬们各自的成就值,使用lambda匿名函数搭建函数式,与上述结果一样:

print(data[data['Level'] == 7].Achievement_value.apply(lambda x:x/data['Achievement_value'].sum()))

在这里插入图片描述

最终代码整理如下:

DA21 大佬用户成就值比例

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
print(Nowcoder[Nowcoder['Level'] == 7].Achievement_value/Nowcoder.Achievement_value.sum())
# print(Nowcoder[Nowcoder['Level'] == 7].Achievement_value.apply(lambda x:x/Nowcoder['Achievement_value'].sum()))

用户最高的正确率

       现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):
牛客网有那么多刷题的用户,有的人身经百战,刷题无数但是反复提交了多次错误的代码debug之后才能通过,牛牛想知道牛客网最高的正确率能有多少,为了公平起见,他决定只统计刷题数量大于10题的用户,请你帮帮他。
请添加图片描述

输出描述:
直接输出计算的正确率(刷题量/代码提交次数),保留3位小数。

  • 读题找出重点:最高的正确率能有多少、只统计刷题数量大于10题的用户
  • 同样使用比值的思想,更加贴切与应用

       找到在统计刷题数量大于10题条件下的刷题量提交代码次数,即可完成题目要求:

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',np.nan,'C','Python'],
    "Continuous_check_in_days":[1230,10,45,564,1349],
    "Number_of_submissions":[120,1,2,1,np.nan]
})
a = Nowcoder[Nowcoder['Num_of_exercise']>10].Num_of_exercise
b = Nowcoder[Nowcoder['Num_of_exercise']>10].Number_of_submissions
print((a/b).max().round(3))

       或是使用另一种更为直观的方法,将刷题数量大于10题的用户单独做一个整体,结果与上述相似:

condition = data['Num_of_exercise'] > 10
right_rate = data[condition]['Num_of_exercise']/data[condition]['Number_of_submissions']
print('{:.3f}'.format(right_rate.max()))

最终代码整理如下:

DA22 牛客网用户最高的正确率

import pandas as pd
 
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# a = Nowcoder[Nowcoder['Num_of_exercise']>10].Num_of_exercise
# b = Nowcoder[Nowcoder['Num_of_exercise']>10].Number_of_submissions
# print((a/b).max().round(3))
cond = Nowcoder['Num_of_exercise'] > 10
right_rate = Nowcoder[cond]['Num_of_exercise']/Nowcoder[cond]['Number_of_submissions']
print('{:.3f}'.format(right_rate.max()))

相关文章:

  • 网站托管维护合同/网络舆情监测专业
  • 适用于建设微型网站/nba最新交易动态
  • 超大免费网站空间/百度优化排名
  • 培训类网站开发/百度pc网页版
  • 刘金鹏做网站/购买seo关键词排名优化官网
  • wordpress导航栏代码/北京百度总部电话
  • 如何让不给听得歌乖乖听话?python教你如何做...
  • Keras深度学习实战(31)——构建电影推荐系统
  • 什么是web3.0
  • Lombok应用
  • 关于大数据系统及Hadoop系统中的概念
  • 当陪玩真能月入过万?Python获取陪玩数据
  • 最适合入门的100个深度学习实战项目
  • 多线程之五(JUC+线程安全的集合类+死锁)
  • 【Web实战-Tomcat-Servlet-Thymeleaf -JDBC-MySQL】浏览器页面显示数据库数据(水果库存系统)
  • python面向对象的编程---类
  • Ubuntu18安装docker详细教程
  • 【C++修炼之路】6. 内存管理