用Python做数据分析之数据表清洗

对数据表中的问题进行清洗。主要内容包括对空值,大小写问题,数据格式和重复值的处理。这里不包含对数据间的逻辑验证。

处理空值(删除或填充)

我们在创建数据表的时候在 price 字段中故意设置了几个 NA 值。对于空值的处理方式有很多种,可以直接删除包含空值的数据,也可以对空值进行填充,比如用 0 填充或者用均值填充。还可以根据不同字段的逻辑对空值进行推算。

Excel中可以通过“查找和替换”功能对空值进行处理,将空值统一替换为 0 或均值。也可以通过“定位”空值来实现。

查找和替换空值

Python中处理空值的方法比较灵活,可以使用 Dropna 函数用来删除数据表中包含空值的数据,也可以使用 fillna 函数对空值进行填充。下面的代码和结果中可以看到使用 dropna 函数后,包含 NA 值的两个字段已经不见了。返回的是一个不包含空值的数据表。

1#删除数据表中含有空值的行

2df.dropna(how=‘any’)

除此之外也可以使用数字对空值进行填充,下面的代码使用 fillna 函数对空值字段填充数字 0。

1#使用数字0 填充数据表中空值

2df.fillna(value=0)

我们选择填充的方式来处理空值,使用 price 列的均值来填充 NA 字段,同样使用 fillna 函数,在要填充的数值中使用 mean 函数先计算 price 列当前的均值,然后使用这个均值对 NA 进行填充。可以看到两个空值字段显示为 3299.5。

1#使用price 均值对 NA 进行填充

2df[‘price’].fillna(df[‘price’].mean())

3

40 1200.0

51 3299.5

62 2133.0

73 5433.0

84 3299.5

95 4432.0

10Name: price, dtype: float64

清理空格

除了空值,字符中的空格也是数据清洗中一个常见的问题,下面是清除字符中空格的代码。

1 #清除 city 字段中的字符空格

2 df[‘city’]=df[‘city’].map(str.strip)

大小写转换

在英文字段中,字母的大小写不统一也是一个常见的问题。Excel 中有 UPPER,LOWER等函数,python 中也有同名函数用来解决大小写的问题。在数据表的 city 列中就存在这样的问题。我们将 city 列的所有字母转换为小写。下面是具体的代码和结果。

1#city列大小写转换

2df[‘city’]=df[‘city’].str.lower()

更改数据格式

Excel中通过“设置单元格格式”功能可以修改数据格式。Python 中通过 astype 函数用来修改数据格式。

设置单元格格式

Python中 dtype 是查看数据格式的函数,与之对应的是 astype 函数,用来更改数据格式。下面的代码中将 price 字段的值修改为 int 格式。

1#更改数据格式2df[‘price’].astype(‘int’)340 120051 329962 213373 543384 329995 443210Name: price, dtype: int32

更改列名称

Rename是更改列名称的函数,我们将来数据表中的 category 列更改为 category-size。下面是具体的代码和更改后的结果。

删除重复值

很多数据表中还包含重复值的问题,Excel 的数据目录下有“删除重复项”的功能,可以用来删除数据表中的重复值。默认Excel 会保留最先出现的数据,删除后面重复出现的数据。

删除重复项

Python中使用 drop_duplicates 函数删除重复值。我们以数据表中的 city 列为例,city 字段中存在重复值。默认情况下 drop_duplicates()将删除后出现的重复值(与 excel 逻辑一致)。增加 keep=’last’参数后将删除最先出现的重复值,保留最后的值。下面是具体的代码和比较结果。

原始的 city 列中 beijing 存在重复,分别在第一位和最后一位。

1 df[‘city’]

2 0 beijing

3 1 sh

4 2 guangzhou

5 3 shenzhen

6 4 shanghai

7 5 beijing

8 Name: city, dtype: object

使用默认的 drop_duplicates()函数删除重复值,从结果中可以看到第一位的beijing 被保留,最后出现的 beijing 被删除。

1 #删除后出现的重复值

2 df[‘city’].drop_duplicates()

3 0 beijing

4 1 sh

5 2 guangzhou

6 3 shenzhen

7 4 shanghai

8 Name: city, dtype: object

设置 keep=’last’’参数后,与之前删除重复值的结果相反,第一位出现的 beijing 被删除,保留了最后一位出现的 beijing。

1 #删除先出现的重复值

2 df[‘city’].drop_duplicates(keep=‘last’)

3 1 sh

4 2 guangzhou

5 3 shenzhen

6 4 shanghai

7 5 beijing

8 Name: city, dtype: objec

数值修改及替换

数据清洗中最后一个问题是数值修改或替换,Excel 中使用“查找和替换”功能就可以实现数值的替换。

查找和替换空值

Python中使用 replace 函数实现数据替换。数据表中 city 字段上海存在两种写法,分别为 shanghai 和 SH。我们使用replace 函数对 SH 进行替换。

1 #数据替换

2 df[‘city’].replace(‘sh’, ‘shanghai’)

3 0 beijing

4 1 shanghai

5 2 guangzhou

6 3 shenzhen

7 4 shanghai

8 5 beijing

9 Name: city, dtype: object

文章来源:网络 版权归原作者所有

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

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

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

相关文章

【办公技巧】ppt修改全部字体怎么改?

制作完PPT之后,想要更换ppt中的字体,有没有什么快捷的方法呢?今天分享两个方法,一键修改ppt文件字体。 方法一: 找到功能栏中的编辑选项卡,点击替换 – 替换字体,在里面选择我们想要替换的字体…

抽水马桶出水慢解决记录

今天分享一些修马桶的小心得(雾) 家里的马桶出水很好,但是水却不怎么被冲下去(出水很慢),这会导致内容物滞留,造成很不好的使用体验。 出于成本考虑,首先选择自己维修。 首先直接…

【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景: 最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报…

JUC之锁

乐观锁和悲观锁 悲观锁 当一个线程在操作资源的时候,会悲观的任务有其他的线程会来抢占该资源,因此会在操作资源前进行加锁,避免其他线程抢占。 Synchronized关键字和Lock实现类就是悲观锁。 显示的锁定资源后再对资源进行操作。 使用场景&…

RestTemplate 添加公共的请求头信息

场景描述 项目中 有很多的RestTemplate 接口,去调用第三方系统,原来第三方系统没有开启权限认证,可以直接调用。现在第三方系统开启了权限认证,导致 这些 RestTemplate 接口调用的时候,无法获取数据。 思路 RestTem…

生日视频模板-试试这样制作

视频制作已经成为表达情感、记录生活的重要方式。尤其在生日这样的特殊日子,一份个性化的视频祝福不仅能让人感到温馨,还能成为长久珍藏的回忆。那么,如何快速制作出精美的生日模版视频呢?下面就给大家介绍几种可以制作生日模版的…

通信入门系列——离散卷积、连续卷积、卷积性质

本节目录 一、线性系统的激励响应 1、离散δ信号 2、离散卷积 3、连续δ信号 4、连续卷积 二、卷积性质 1、交换律 2、分配律 3、结合律 4、与冲激函数卷积本节内容 一、线性系统的激励响应 输入信号又称为激励,输出信号又称为响应。一个信号输入给一个线性系统的时…

基于单片机设计的智慧农业大棚检测系统

一、设计目标 本项目基于单片机设计一个智慧农业大棚检测系统,以提供实时监测和管理大棚环境的关键参数。系统支持环境温度、湿度检测,光照强度检测,并能根据预设的阀值进行报警提示。为了实现数据的显示和管理,该系统还利用Qt开…

\deep\和>>> 以及 !important

记录 https://blog.csdn.net/weixin_43422861/article/details/134716359 都是深度选择器 >>> 仅在css中起作用 ::v-deep 和 /deep/ 仅在scss / less中起作用样式中 !important 用在某个样式后面起作用

生成式人工智能研究焦点:揭秘基于扩散的模型

生成式人工智能研究焦点:揭秘基于扩散的模型 文章目录 生成式人工智能研究焦点:揭秘基于扩散的模型去噪扩散是什么让扩散发挥作用?采样生成图像的设计选择以更少的步骤理顺流程在低噪音水平下步骤高阶求解器可实现更准确的步骤训练降噪器的设…

50天精通Golang(第17天)

beego框架总结及数据库连接配置 一、beego框架总结 1.1 Beego项目组织架构 上节课程内容对beego的案例代码进行了一个简单的分析,总结一下beego项目的组织结构,总结如下: 1.1.1 项目配置:conf 项目配置文件所在的目录&#x…

Vue安装项目报错default@0.1.0 serve: `vue-cli-service serve`解决办法

出现此问题的原因:项目缺少依赖项 解决方式:将项目中的node_modules和package-lock.json两个文件手动删除掉,然后在VS窗口中,执行npm install。重启VS即可。

异常处理注解 @ExceptionHandler

今天记录下 SpringBoot 中 ExceptionHandler 的使用。 场景 有一个员工表(employee),且给表中的 username 属性设置了唯一性。 -- auto-generated definition create table employee (id bigint auto_increment comment 主键primary key,name va…

【WPF.NET开发】OpenType字体

本文内容 OpenType 字体格式变量大写字母连字花体备用项数字样式版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 1、OpenType 字体格式 OpenType 字体格式是 TrueType 字体格式的扩展,增加了对 PostScript 字…

解析Nginx配置文件conf中的常用块

解析Nginx配置文件conf中的常用块 Nginx是一个高性能的HTTP和反向代理服务器,它的配置文件主要由多个块组成。本文将介绍Nginx配置文件中的常用块及其功能。 events块 events块用于设置Nginx的工作模式和连接数相关的参数。 events {worker_connections 1024; #…

用python调用Mybatis

要使用Python调用MyBatis,您需要按照以下步骤进行操作: 安装MyBatis和相关依赖库 在Python中使用MyBatis,需要先安装MyBatis和相关依赖库。您可以使用pip命令安装MyBatis的Python客户端库,例如: shell复制代码 pip …

Linux的SSH远程管理和服务器之间的免密连接

目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 一、远程管理基础 1.ssh协议 ssh协议是基于C/S机构的安全通道协议,通信数据进行加密处理,用于远程管理。 ssh的服务名…

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

【图解数据结构】深入剖析时间复杂度与空间复杂度的奥秘

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 🔔输入输出2.2 🔔输入输出2.3 &…

MySQL面试题2

文章目录 面试题 (9-15) 面试题 (9-15) 09)查询学过「张三」老师授课的同学的信息 SELECT s.*,c.cname,t.tname FROM t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc WHERE t.tidc.tid and c.cidsc.cid and sc.sids.sid and tname ‘张…