DataFrame—数据汇总6

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。

 一.缺失值处理

#示例数据
df = pd.read_csv("pokemon_data.csv",encoding="gbk")
#查看数据前十行
df.head(10)

1.判断缺失值

判断数据表所有数据中的缺失值

df.isnull()

判断数据表某一列的缺失值

df["类型2"].isnull()
#查看类型2这一列的非缺失值和缺失值的数量分布
df["类型2"].isnull().value_counts()

2.删除缺失值

删除掉含有缺失值的所有行

df.dropna()
df.dropna(how="any")

删除满足行内数据均为NaN这个条件的行

df.dropna(how="all")

 创建一个4行3列的含有NaN的数据作为演示

df1 = pd.DataFrame([[1,5,np.nan],[2,np.nan,np.nan],[2,3,np.nan],[np.nan,np.nan,np.nan]])
df1
012
01.05.0NaN
12.0NaNNaN
22.03.0NaN
3NaNNaNNaN

how="all"能删除掉均为NaN的行

df1.dropna(how="all")
012
01.05.0NaN
12.0NaNNaN
22.03.0NaN

删除满足列内数据均为NaN这个条件的列,按列删除

df1.dropna(how="all",axis=1,inplace=True)
df1

3.填充缺失值

填充指定值

df1.fillna(value=0)

填充函数

df1[1].fillna(df1[1].mean())

向前填充

df1[1].fillna(method="ffill")

向后填充

df1[1].fillna(method="bfill")

 二.清除空格

创建含有空格的示例数据

dict1 = {"name":["小红","小明","小张"],"age":[16,17,18],"city":["北京  ","杭州","  上海  "]}
df2 = pd.DataFrame(dict1,columns=["name","age","city"])

 查看含有空格的数据

df2.to_csv("2.csv")

清除空格

df2["city"] = df2["city"].map(str.strip)

查看清除后的数据表

df2.to_csv("df2.csv")

3.转换数据格式

将年龄列数据转换成字符串格式

df2["age"] = df2["age"].astype("str")
df2.dtypes

将年龄列数据转换成浮点数格式

df2["age"] = df2["age"].astype("float")

将年龄列数据转换成整数格式

df2["age"] = df2["age"].astype("int")

4.大小写转换

df2["city"] = ["beijing","hangzhou","shanghai"]
df2

转换成大写

df2["city"] = df2["city"].str.upper()
df2

转换成小写

df2["city"] = df2["city"].str.lower()
df2

转换成首字母大写

df2["city"] = df2["city"].str.title()
df2

5.更改列名

通过rename函数修改部分列名或者所有列名,并默认返回一个新的数据框,若需要在原基础上修改,添加参数inplace=True即可

df2.rename(columns={"name":"name2","age":"age2"})

通过columns属性修改列名,这种方式就需要输入所有的列名了,并直接在原基础上修改

df2.columns = ["n","a","c"]

6.更改索引与重置索引

df.head(10)

更改索引

#将类型1这列作为索引
df3 = df.set_index("类型1")
df3

重置索引

df4 = df3.reset_index()
df4

7.重复值处理

df5 = pd.DataFrame({"c1":["apple"]*3 + ["banana"]*3,"c2":[1,1,2,3,3,2]})
df5

查看是否有重复值

#适合小数据目测
df5.duplicated(subset=["c1","c2"],keep="first")
#当数据量比较大的时候,可以看看重复数据和非重复数据的计数分布
df5_duplicated = df5.duplicated(subset=["c1","c2"],keep="first")
df5_duplicated.value_counts()

保留重复值

df5[df5.duplicated(subset=["c1","c2"],keep="first")]

删除重复值

(1)默认保留第一个出现的重复值,删除掉后面的重复值

df5.drop_duplicates(subset=["c1","c2"],keep="first")

(2)保留最后一个重复值,删除掉前面的重复值

df5.drop_duplicates(subset=["c1","c2"],keep="last")

(3)如果希望直接在原基础上修改,添加参数inplace=True

df5.drop_duplicates(subset=["c1","c2"],keep="last",inplace=True)
df5

8.替换值

忽略警告的做法

import warnings
warnings.filterwarnings("ignore")
df6 = df.head(10)
df6
df6["类型1"] = df6["类型1"].replace("Grass","G")
df6

多个对象替换单个值

df6["类型1"] = df6["类型1"].replace(["G","Fire"],"gf")
df6

用不同的值替换不同的对象

df6["类型1"] = df6["类型1"].replace(["gf","Water"],["good","W"])
df6

参数也可以是字典

df6["类型1"] = df6["类型1"].replace({"good":"gg","W":"ww"})
df6

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

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

相关文章

国赛练习(1)

Unzip 软连接 软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说,也可以理解成Windows中的快捷方式 注意:在创建软连接的文件的所有目录下不能有重名的文件 打开环境,是文件上传&am…

用实践结果告诉你为啥说 CloudFlare 是赛博菩萨?

最近几天明月都没有更新博客了,主要是接了几个 CloudFlare 代维配置的活儿,有需要加速优化的,有需要排除疑难故障的,有需要提高防御攻击能力的甚至还有纯粹为了体验“打不死”装逼需要的。总之,各种各样的需求,五花八门的,好在 CloudFlare 都能一一满足,最主要的是这些…

Dockerfile使用

1.Dockerfile是什么 官网地址 https://docs.docker.com/reference/dockerfile/概念 是什么 Dockerfile 是用于构建 Docker 镜像的文本文件,它包含一系列的指令(instructions)和参数,用于描述如何构建和配置镜像。 Dockerfile 是…

软测刷题-错题

提高测试效率的方法: 1、不要做无效的测试 2.不要做重复的测试 3.不同测试版本的测试侧重点 4.优化测试顺序 LoadRunner是对服务器进行施压。 在数据库中存在的用户数是指注册用户数。 input标签可以直接使用send_keys实现上传,而非input标签是无法直…

解析售后维修服务平台如何助力企业高效运营与决策

随着生活质量的不断提高,人们对于售后服务的要求也越来越多。因此,售后服务已经成为企业竞争力的重要组成部分。售后服务平台作为连接企业与消费者的桥梁,不仅关乎着消费者的满意度,而且直接影响着企业的品牌形象与市场地位。那么…

Linux 第三十八章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

Linux--正则表达式详解

1.1概念 在进行程序设计的过程中,用户会不可避免地遇到处理某些文本的情况。有的时候,用户还需要查找符合某些比较复杂规则的字符串。对于这些情况,如果单纯依靠程序设计语言本身,则往往会使得用户通过复杂的代码来实现。但是&…

[7] CUDA之常量内存与纹理内存

CUDA之常量内存与纹理内存 1. 常量内存 NVIDIA GPU卡从逻辑上对用户提供了 64KB 的常量内存空间,可以用来存储内核执行期间所需要的恒定数据常量内存对一些特定情况下的小数据量的访问具有相比全局内存的额外优势,使用常量内存也一定程序上减少了对全局…

Spring Cloud 面试题(五)

1. Eureka的自我保护模式是什么? Eureka的自我保护模式是一种应对网络异常的安全保护措施,旨在防止因网络分区或其他异常情况导致服务实例被错误地注销。当Eureka Server在短时间内丢失过多的客户端心跳时,会触发自我保护机制。以下是自我保…

行为型模式 (Python版)

模板方法模式 """案例:写简历内容:最近有个招聘会,可以带上简历去应聘了。但是,其中有一家公司不接受简历,而是给应聘者发了两张公司自己定制的简历表,分别是A类型的简历表和B类型的简历表…

汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的?

标签: 汽车液态电池充电时的化学反应; 电池充电过程;锂电池,石墨负极 问题:汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的? 汽车液态电池充电时的化学反应 汽车液态电池(如锂离子电池)在充电时,通过电化学反应将电能转化为化学能并储存在电…

C++ 时间处理-统计函数运行时间

1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 统计函数运行时间 跨平台 2. 问题 C如何简单便捷地实现“函数运行时间的统计”功能? 3. 解决思路 类的构造函数&#x…

使用python对指定文件夹下的pdf文件进行合并

使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件,共计16个1页的pdf文件。 合并成功的pdf文件:一个16页的pdf文件。 代码 import os from PyPDF2 import …

深入理解 Spring Web 应用程序初始化流程

前言 在构建基于 Spring 的 Web 应用程序时,了解初始化流程是至关重要的。本文将详细介绍 Servlet 容器的初始化过程,并重点探讨 Spring 框架在其中的作用,特别是 ServletContainerInitializer、SpringServletContainerInitializer 和 WebAp…

源码部署ELK

目录 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 单节点 集群(3台节点集群为例) 启动 二、部署logstash 部署logstash 添加配置文件 启动 三、部署kiban…

数据清洗操作及众所周知【数据分析】

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

问题排查复盘

5月份中旬一天晚上,业务需求上线后反馈,该业务对应的搜索功能有问题,晚上10点多开始排查,到凌晨2点,最后大致定位了问题,并行修改后恢复,虽然问题不是很大,但是当时上线的业务对业绩…

抖音a-bogus加密解析(三)

要补的环境我给提示,大家自行操作,出了问题就是因为缺环境,没补好 window global; // reading _u未定义 window.requestAnimationFrame function () {} // XMLHttpRequest 未定义 window.XMLHttpRequest function () {} window.onwheelx …

Vue3实战笔记(45)—VUE3封装一些echarts常用的组件,附源码

文章目录 前言一、柱状图框选二、折线图堆叠总结 前言 日前使用hooks的方式封装组件,在我使用复杂的图标时候遇到了些问题,预想在onMounted中初始化echarts,在使用hooks的时候,组件没有渲染完,使用实例会出现各种各样…