数据分析 | Pandas 200道练习题 进阶篇(3)

news2025/7/13 20:31:42

文章目录

    • DA21 大佬用户成就值比例
    • DA22 牛客网用户最高的正确率
    • DA23 统计牛客网用户的名字长度
    • DA24 去掉信息不全的用户
    • DA25 修补缺失的用户数据
    • DA26 解决牛客网用户重复的数据
    • 总结:

在这里插入图片描述

  • ❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者
  • 🐟 个人主页 :https://blog.csdn.net/qq_52007481
  • 个人社区:【小鱼干爱编程】
  • 💯 刷题网站:数据分析在线练习必备网站 👉牛客网

DA21 大佬用户成就值比例

刷题网址:牛客网

在这里插入图片描述
题意分析
解题还是需要分为三步,一找出7级大佬,二计算出所有人的成就值和,三计算每个7级大佬的成就值占所有值的比例。
题解

import pandas as pd
df = pd.read_csv('Nowcoder.csv')
big_df = df[df['Level'] == 7]
s = df['Achievement_value'].sum()
print(big_df['Achievement_value']/s)

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

在这里插入图片描述
题意分析
从题目中我们能够发现需要先找出刷题数量大于10道的人,,然后分别计算每一个人的正确率,最后需要找出最高的正确率(保留3位小数)
题解

import pandas as pd
df = pd.read_csv('Nowcoder.csv')
new_df = df[df['Num_of_exercise']>10]
z=new_df['Num_of_exercise']/new_df['Number_of_submissions']
print(z.max().round(3))

DA23 统计牛客网用户的名字长度

在这里插入图片描述
题意分析
题目就是想让计算字符串的长度
题解

import pandas as pd
df = pd.read_csv('Nowcoder.csv')
print(df['Name'].apply(len))

相关函数

  • apply 传入的参数是一个函数,数据对象会依次调用这个函数

24-27为数据清洗的部分

DA24 去掉信息不全的用户

使用的数据仍然是Nowcoder.csv
在这里插入图片描述
题意分析
题目让我做的就是删除出现空值的行
题解1

import pandas as pd
df = pd.read_csv('Nowcoder.csv',dtype=object)
# 意因为牛客这个在线测试还不够完善,如果不设置显示宽度和行数就会报错,是一个待优化的地方。
pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
# dropna(axis=0) 删除存在空值的行
print(df.dropna(axis=0))  

题解2
使用isnull().any(axis=1)找出含有空值的行,取数据的时候筛除

import pandas as pd
df = pd.read_csv('Nowcoder.csv',dtype=object)
pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
# axis=1 等于代表对行中的数据进行判断
d = df.isnull().any(axis=1)  
print(df.loc[-d])

注意 any(axis=1)dropna(axis=0)中作用的都是行,我们平时也不能按照axis=1就是列,axis=0就代表行来理解,关于这个怎样理解pandas 中axis=1和axis=0回来会详细出一篇博客进行讲解。

DA25 修补缺失的用户数据

使用的数据仍然是Nowcoder.csv
在这里插入图片描述
题意分析
题目就是让根据条件填充空值
处理空值是我们在实际生活中经常要做的工作,关于这个处理空值的方式也有很多。
题解1
通过字典指定指定不同的列执行

import pandas as pd
df = pd.read_csv('Nowcoder.csv')
pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
g = df['Graduate_year'].max()
a = df['Achievement_value'].mean().round(0)
dic = {"Graduate_year":g,
        'Language':'Python',
        'Achievement_value': a 
}
print(df.fillna(value=dic))

题解2

import pandas as pd
 
df = 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)
a = df["Graduate_year"].max()
df['Graduate_year'].fillna(value=a)
df['Language'].fillna('Python')
df['Achievement_value'].fillna(df['Achievement_value'].mean().round(0))
print(df)

注意这里使用的round不是python的函数是pandas中的round函数,python中的round函数并不是四舍五入,pandas中的round函数是四舍五入。

相关函数

  • fillna 的使用方法,这个设计的方式太多了,明天出一篇fillna的详解,总结几乎全部的使用方式

DA26 解决牛客网用户重复的数据

使用的数据仍然是Nowcoder.csv
在这里插入图片描述
题意分析
找出所有的重复行
将重复的行留一行,其余的删除

题解
关于这个重复的行我们使用pandas中自带的函数进行处理,其实我们也可以使用python中的方法进行解题,但是这样就绕远路了

import pandas as pd
df = pd.read_csv('Nowcoder.csv')
print(df.duplicated())
print(df.drop_duplicates())

相关的函数

  • duplicated(subset=[],keep='first',) 判断每一行是否是重复的行,如果是重复的行返回true,否则返回false
    • subset:表示要进去重的列名,默认为 None。
    • keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只有第一次出现的重复项返回 False,其余返回True,last 表示将最后一次出现的行返回False,其余重复的行返回True,False 表示重复的行都返回True
  • df.drop_duplicates(subset=[],keep='first',inplace=True)
    • subset:表示要进去重的列名,默认为 None。
    • keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。
    • inplace:布尔值参数,同其他函数一样,默认Flase不修改原数据,设置为True修改原数据

刷题网址:牛客网

总结:

本章仍然讲解一些常用的函数,保留指定小数位round(3),删除空值dropna,填充空值fillna,判断重复的行duplicated(),删除重复的行drop_duplicates(), 后面几个函数常用于数据清洗,数据清洗是数据分析之前一个必要的工作,清洗的好坏也影响后面数据的分析、数据建模

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生信步骤|MAFFT结合HMMER进行多序列比对和基于隐马模型的基因搜索

蛋白质都是由相似的小型结构域组成的。如果我们有若干个已知的蛋白序列,那我们就可以根据这些蛋白序列比较其含有的保守域,寻找在蛋白数据库中上是否也有一样保守域的蛋白。而后根据统计学模型,将显著性较高的蛋白序列预测为同一类基因家族蛋…

Oracle SQL执行计划操作(5)——分区相关操作

5. 分区相关操作 该类操作与SQL语句执行计划中分区表操作相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。 1)PARTITION RANGE ALL 对范围分区(RANGE PARTITION)表的所有分区进行子…

内存泄漏检测C版小工具

一 内存泄漏简介 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏分类: 1.堆内存泄漏&#xff1…

基于LMI的非线性混沌系统滑模控制

目录 前言 1.非线性系统 2.控制器设计 3.仿真分析 3.1仿真混沌系统 3.2 LMI求解反馈阵F 3.3仿真模型 ​​​​3.4仿真结果 3.5注意事项 前言 前面我们介绍了很多种滑模面设计,以及介绍了几篇结合LMI的滑模控制,其核心思想可以看作是用LMI去控制…

【python与数据分析】Numpy数值计算基础——补充

目录 二、矩阵生成与常用操作 1.生成矩阵 2.矩阵转置 3.查看矩阵特征 4.矩阵乘法 5.计算相关系数矩阵 6.计算方差、协方差、标准差 7.行列扩展 8.常用变量 9.矩阵在不同维度上的计算 10.应用 (1)使用蒙特卡罗方法估计圆周率的值 &#xff0…

【Transformers】第 10 章 :从零开始训练 Transformer

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

JS实现复制富文本到剪贴板/粘贴板的最佳实践

背景 最近有想实现一个功能,通过点击一个button按钮,来复制网页内容(含html)来实现复制后粘贴到邮件或者word具有富文本的效果。在网站翻了一些资料,要么就是方法已经被弃用,要么就是兼容性特别差,要么就是不能复制成…

HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 家游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面…

HTML+CSS简单漫画网页设计成品--(红猪(9页)带注释)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 网页设计作业 | 动漫网页设计 | 动漫网页设计成品 | 动漫网页设计成品模板 | 简单漫画网页设计成品 | HTML期末大学生网页设计作业,Web大学…

Linux自建RustDesk中继服务器

向日葵、ToDesk,想控制手机。【收费】、【收费】、【收费】、【收费】 作为编程人员,这钱我有点不想花。手里有常开机电脑,于是我萌生想法,使用frp做代理,用adb命令将手机的屏幕截图后展示在网页上,按秒刷…

布谷鸟搜索算法的改进及其在优化问题中的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

GIS重投影的方法

ArcGIS修改地理坐标系/投影坐标系 把坐标系修改为和已知数据坐标系相同,使之能正常显示数据 加载数据,若加载数据的过程中,出现以下提示,则说明坐标系不一致,建议转换。 首先给数据框设置一个坐标系,该坐…

STC51单片机31——红外遥控收发代码

发射部分代码&#xff1a; #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit P20P2^0; //发射引脚 sbit P10P1^0; sbit P11P1^1; uchar k; void delay() { uchar j,i; for(i0;i<255l;i) for(j0;j<255;j) ; } void…

明道云在艾默生数字化实践的新进展

本文来自艾默生电气IT经理丁元才&#xff0c;在明道云2022年秋季伙伴大会活动演讲&#xff0c;经校对编辑后整理为演讲精华。 大家早上好&#xff0c;今天我讲的主题叫《明道云在艾默生数字化实践的新进展》。这个“新进展”刚好契合明道云今天的大会主题——新力量、新希望。…

完美收官 | IOTE第十八届国际物联网展精彩落幕,美格智能参展回顾

11月15日-17日&#xff0c;由深圳市物联网产业协会主办&#xff0c;深圳市物联传媒有限公司、深圳市易信物联网络有限公司承办的第十八届IOTE国际物联网博览会以“数智芯生&#xff0c;云端共创”为主题&#xff0c;在深圳国际会展中心&#xff08;宝安&#xff09;17号馆盛大召…

如何根据项目的eslint去配置vscode的setting

文章目录一、安装 必要的插件1-1 Eslint1-2 Prettier-Code formatter1-3 安装Vetur二、配置相关文件2-1 配置 setting.json2-1-1 找到setting.json文件配置vscode2-1-2 在文件中添加如下配置2-2 配置 .eslintrc.js2-3 配置 .editorconfig2-4 配置.eslintignore三、之前配置记录…

基于80C51单片机的经纬度定位显示装置设计

目 录 摘要&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#…

使用Vitis HLS生成 IP核 (verilog版和图形化版)

文章目录实验一、 自动旋转式栅门1.1 实验题目1.2 实验建模1.2.1 Verilog建模IP1.2.2 图形化建模IP1.3 实验总结实验二、 餐巾纸售货机2.1 实验题目2.2 实验建模2.2.1 Verilog建模IP2.2.2 图形化建模IP2.3 实验总结实验一、 自动旋转式栅门 1.1 实验题目 旋转式栅门是一个由三…

基于SpringBoot的共享单车管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;采用HTML和Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Mav…

一款轻量级的NuGet服务器

一、简介 BaGet (发音为“baguette”) 是一个轻量级的 NuGet、Symbol 服务器。它是开源的、跨平台的和云化的&#xff0c;可以运行再自己得电脑、Docker、Azure、AWS、Google Cloud 、Alibaba Cloud (Aliyun) 等。支持 MySQL、SQLite:、SqlServer、PostgreSQL、Azure Table St…