Pandas高效数据清洗与转换技巧指南【数据预处理】

三、数据处理

1.合并数据(join、merge、concat函数,append函数)

Concat()函数使用

1.concat操作可以将两个pandas表在垂直方向上进行粘合或者堆叠。

join属性为outer,或默认时,返回列名并集,如:

df3 = pd.concat([df1,df2])  

join属性为inner时,返回列名交集,如:

df4 = pd.concat([df1,df2],join=“inner”)

2.concat操作将两个pandas表在水平方向进行粘合或者堆叠。

df3 = pd.concat([df1,df2],axis = 1)  #默认outer

join()函数使用

可用于简单的横向堆叠,直接用index来连接,语法格式如下:

pandas.DataFrame.join(self, other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

当横向堆叠的两个表的列名有相同时,需设置lsuffix或rsuffix参数以示区别,否则会报错。

_append()函数使用

_append方法也可用于简单的纵向堆叠,这对列名完全相同的两张表特别有用,列名不同则会被空值替代。

和concat的axis = 0 的效果是一样的

pandas.DataFrame._append(self, other, ignore_index=False, verify_integrity=False)

Merge()函数使用

merge函数可以按照指定的列进行合并

实现sql数据库类似的各种join(连接)操作,例如内连接、外连接、左右连接等。

若没有指定列名,则自动寻找两个对象中同名的列进行连接运算,类似于数据库中的自然连接运算,这里类似于df_merge(df1,df2,on=‘key’,how=‘inner’)

2.清洗数据方法(重复值、缺失值判断和填充方法、异常值处理和判断方法)

重复数据处理

1.记录重复

drop_duplicates的去重方法。该方法只对DataFrame或者Series类型有效。这种方法不会改变数据原始排列,并且兼具代码简洁和运行稳定的特点。

该方法不仅支持单一特征的数据去重,还能够依据DataFrame的其中一个或者几个特征进行去重操作。 pandas.DataFrame(Series).drop_duplicates(self, subset=None, keep='first', inplace=False)

2. 特征重复

特征重复 :  存在一个或多个特征的名称不同,但是数据完全相同。

要去除特征之间的的重复,可以利用特征间的相似度将两个相似度为1的特征去掉一个。去除特征重复的方法主要有两个:corr()方法,  DataFrame.equals()方法

在pandas中相似度的计算方法为corr,使用该方法计算相似度时,默认为“pearson”法 ,可以通过“method”参数调节,目前还支持“spearman”法和“kendall”法。

但是通过相似度矩阵去重存在一个弊端,该方法只能对数值型重复特征去重,类别型特征之间无法通过计算相似系数来衡量相似度。

除了使用相似度矩阵进行特征去重之外,可以通过DataFrame.equals的方法进行特征去重

缺失值处理方法

利用isnull或notnull找到缺失值

缺失值:在Pandas中的缺失值有四种:np.nan (Not a Number) 、NA(not available)、 None 和 pd.NaT(时间格式的空值,注意大小写不能错)

空值:空值在Pandas中指的是空字符串"";

最后一类是导入的Excel等文件中,原本用于表示缺失值的字符“-”、“?”等。

isnull()/isna():对于缺失值,返回True;对于⾮缺失值,返回False。

Notnull/notna():对于⾮缺失值,返回True;对于缺失值,返回False。

any():⼀个序列中有⼀个True,则返回True,否则返回False。

sum():对序列进行求和计算。

 1.删除法(dropna)

删除法分为删除观测记录删除特征两种,它属于利用减少样本量来换取信息完整度的一种方法,是一种最简单的缺失值处理方法。

pandas中提供了简便的删除缺失值的方法dropna,该方法既可以删除观测记录,亦可以删除特征。

pandas.DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

 2.替换法

替换法是指用一个特定的值替换缺失值。

特征可分为数值型和类别型,两者出现缺失值时的处理方法也是不同的。

缺失值所在特征为数值型时,通常利用其均值、中位数和众数等描述其集中趋势的统计量来代替缺失值。

缺失值所在特征为类别型时,则选择使用众数来替换缺失值。

pandas库中提供了缺失值替换的方法名为fillna,其基本语法如下。 pandas.DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)

3.插值法

常用的插值法有线性插值、多项式插值和样条插值等:

线性插值是一种较为简单的插值方法,它针对已知的值求出线性方程,通过求解线性方程得到缺失值。

多项式插值是利用已知的值拟合一个多项式,使得现有的数据满足这个多项式,再利用这个多项式求解缺失值,常见的多项式插值法有拉格朗日插值和牛顿插值等。

样条插值是以可变样条来作出一条经过一系列点的光滑曲线的插值方法,插值样条由一些多项式组成,每一个多项式都是由相邻两个数据点决定,这样可以保证两个相邻多项式及其导数在连接处连续。

线性插值

import numpy as np
from scipy.interpolate import interp1d
x=np.array([1,2,3,4,5,8,9,10])
y1=np.array([2,8,18,32,50,80,100,120])
linear_interp=interp1d(x,y1,kind='linear')
print(linear_interp([6,7]))

多项式插值

from scipy.interpolate import lagrange
large_ins_value=lagrange(x,y1)
print(large_ins_value([6,7]))

样条插值

spline_value=interp1d(x,y1,kind='cubic')
print(spline_value([6,7]))

异常值检测方法

1. 3σ原则

数据的数值分布几乎全部集中在区间(μ-3σ,μ+3σ)内,超出这个范围的数据仅占不到0.3%。故根据小概率原理,可以认为超出3σ的部分数据为异常数据

2.箱线图分析

箱型图提供了识别异常值的一个标准,即异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。

QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小。

QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大。

IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。

3.标准化数据常见方法(离差化,标准差标准化)

1. 离差标准化公式(Min-max归一化)

2. 标准差标准化的公式及特点(Z-Score标准化)

离差标准化方法简单,便于理解,标准化后的数据限定在[0,1]区间内。
标准差标准化受到数据分布的影响较小。

归一化和标准化的区别和联系区别:

归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[a,b]区间内,仅由变量的极值决定,因此区间放缩法是归一化的一种。

标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。

归一化会改变数据的原始距离,分布,信息;标准化一般不会。

联系: 它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

4.数据变换方法(离散化连续型数据)

1.哑变量处理

Python中可以利用pandas库中的get_dummies函数对类别型特征进行哑变量处理。 pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False)

2.离散化

连续特征的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。

因此离散化涉及两个子任务,即确定分类数以及如何将连续型数据映射到这些类别型数据上。

1. 等宽法

将数据的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定或者用户指定,与制作频率分布表类似。pandas提供了cut函数,可以进行连续型数据的等宽离散化,其基础语法格式如下。

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

2. 等频法

cut函数虽然不能够直接实现等频离散化,但是可以通过定义将相同数量的记录放进每个区间

等频法离散化的方法相比较于等宽法离散化而言,避免了类分布不均匀的问题,但同时却也有可能将数值非常接近的两个值分到不同的区间以满足每个区间中固定的数据个数。

3. 基于聚类分析的方法

一维聚类的方法包括两个步骤:

将连续型数据用聚类算法(如K-Means算法等)进行聚类。

处理聚类得到的簇,将合并到一个簇的连续型数据做同一标记。

聚类分析的离散化方法需要用户指定簇的个数,用来决定产生的区间数

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

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

相关文章

Spring Boot集成Picocli快速入门Demo

1.什么是Picocli? Picocli是一个单文件命令行解析框架,它允许您创建命令行应用而几乎不需要代码。使用 Option 或 Parameters 在您的应用中注释字段,Picocli将分别使用命令行选项和位置参数填充这些字段。使用Picocli来编写一个功能强大的命…

市面上前 11 名的 Android 数据恢复软件

Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序,这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像,文档&…

SpringBoot——整合Thymeleaf模板

目录 模板引擎 新建一个SpringBoot项目 pom.xml application.properties Book BookController bookList.html ​编辑 项目总结 模板引擎 模板引擎是为了用户界面与业务数据分离而产生的,可以生成特定格式的页面在Java中,主要的模板引擎有JSP&…

Python 闭包的高级用法详解

所谓闭包,就是指内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程,这个内函数称之为闭包函数。可以理解为是函数式编程中的封装。 内部函数可以使用外部函数定义的属性:外部函数调用后,返回内部函数的地…

Linux_web控制台-cockpit

1、安装cockpit [rootlocalhost ~]# dnf install cockpit -y 2、启动cockpit服务并查运行状态 [rootlocalhost ~]# systemctl start cockpit [rootlocalhost ~]# systemctl status cockpit 2、设置开机启动 [rootlocalhost ~]# vim /usr/lib/systemd/system/cockpit.servi…

局域网桌面监控软件哪个好用?良心推荐

如何有效地监控和管理内部员工的计算机使用行为,防范潜在的安全风险,提高工作效率,是众多企业管理者关注的焦点。 而一款优秀的局域网桌面监控软件无疑能为企业的IT治理提供有力支撑。 小编在此给大家推荐一款好用的局域网桌面监控软件——域…

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket,指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的,直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto

MCS-51伪指令

上篇我们讲了汇编指令格式,寻址方式和指令系统分类,这篇我们讲一下单片机伪指令。 伪指令是汇编程序中用于指示汇编程序如何对源程序进行汇编的指令。伪指令不同于指令,在汇编时并不翻译成机器代码,只是会汇编过程进行相应的控制…

已有yarn集群部署spark

已有yarn集群的情况下,部署spark只需要部署客户端。 一、前提条件 已部署yarn集群,部署方式参考:https://blog.csdn.net/weixin_39750084/article/details/136750613?spm1001.2014.3001.5502,我部署的hadoop版本是3.3.6已安装j…

Android Compose 九:常用组件列表 简单使用

遇事不决 先看官方文档 列表和网格 如果不需要任何滚动,通过Column 或 Row可以使用verticalScroll() 使Column滚动 Column(modifier Modifier.verticalScroll(rememberScrollState())) {for (i in 0..50){Text(text "条目>>${i}")}}显示大量列表…

从0开始linux(3)——如何读写文件

欢迎来到博主的专栏——从0开始linux 博主ID:代码小豪 文章目录 创建普通文件用文本编辑器nano写入文件如何读取文件cat命令less命令head和tail 我们前面已经了解和如何操作文件,但是目前认识的文件类型分为两类,一类是目录文件、另一类是普通…

【C#上位机应用开发实战】—— 通信模块的基础与实践

🚀 引言 在工业自动化、设备监控、物联网(IoT)等领域,上位机软件扮演着至关重要的角色。作为连接人与设备的桥梁,上位机软件不仅需要提供友好的用户界面,更需要具备高效、稳定的通信能力。今天&#xff0c…

ASP+ACCESS教师档案管理系统

3.1 系统功能模块图 3.2 E-R模型图 3.3 系统使用流程图 3.4 各个模块功能简介: 本系统分为五个功能模块,它们分别是教师信息录入模块、教师信息修改模块、教师信息查询模块、教师信息打印模块。 下面分别介绍各个模块的功能用途&#x…

第 398 场 LeetCode 周赛题解

A 特殊数组 I 模拟&#xff1a;遍历数组判断是否是一个特殊数组 class Solution { public:bool isArraySpecial(vector<int>& nums) {int r 0;while (r 1 < nums.size() && nums[r 1] % 2 ! nums[r] % 2)r;return r nums.size() - 1;} };B 特殊数组 I…

计网(部分在session学习章)

TCP/UDP TCP:面向连接,先三次握手建立连接,可靠传输。 UDP:无连接,不可靠,传递的快。 TCP可靠传输 1.分块编号传输; 2.校验和,校验首部和数据的检验和,检测数据在传输中的变化; 3.丢弃重复数据; 4.流量控制,TCP 利⽤滑动窗⼝实现流量控制。TCP的拥塞控制采⽤…

基于Matlab卷积神经网络人脸识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别作为计算机视觉领域的关键技术之一&#xff0c;具有广泛的应用前景&#xff0c;如安全…

Add object from object library 从对象库中添加内置器件

Add object from object library 从对象库中添加内置器件 正文正文 对于 Lumerical,有些时候我们在使用中,可能需要从 Object library 中添加器件,通常我们的做法是手动添加。如下图所示,我们添加一个 Directional Coupler 到我们的工程文件中: 但是这种操作方式不够智能…

基于HTML5和CSS3搭建一个Web网页(二)

倘若代码中有任何问题或疑问&#xff0c;欢迎留言交流~ 网页描述 创建一个包含导航栏、主内容区域和页脚的响应式网页。 需求: 导航栏: 在页面顶部创建一个导航栏&#xff0c;包含首页、关于我们、服务和联系我们等链接。 设置导航栏样式&#xff0c;包括字体、颜色和背景颜…

上门服务系统开发|东邻到家系统|上门服务系统开发流程

上门服务小程序的开发流程是一个复杂且精细的过程&#xff0c;涉及到需求分析、设计规划、开发实施、测试验收以及上线运营等多个环节。下面将详细介绍上门服务小程序的开发流程&#xff0c;帮助读者全面了解并掌握其中的关键步骤。 一、需求分析 在开发上门服务小程序之前&am…

API攻击呈指数级增长,如何保障API安全?

从远程医疗、共享汽车到在线银行&#xff0c;实时API是构建数字业务的基础。然而&#xff0c;目前超过90%的基于Web的网络攻击都以API端点为目标&#xff0c;试图利用更新且较少为人所知的漏洞&#xff0c;而这些漏洞通常是由安全团队未主动监控的API所暴露&#xff0c;致使API…