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

news2024/9/20 0:58:17

三、数据处理

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.coloradmin.cn/o/1694158.html

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

相关文章

Leetcode - 398周赛

目录 一,3151. 特殊数组 I 二,3152. 特殊数组 II 三,3153. 所有数对中数位不同之和 四,3154. 到达第 K 级台阶的方案数 一,3151. 特殊数组 I 本题就是判断一个数组是否是奇偶相间的,如果是,…

开源的在线JSON数据可视化编辑器jsoncrack本地部署与远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

一篇文章讲透排序算法之希尔排序

希尔排序是对插入排序的优化,如果你不了解插入排序的话,可以先阅读这篇文章:插入排序 目录 1.插入排序的问题 2.希尔排序的思路 3.希尔排序的实现 4.希尔排序的优化 5.希尔排序的时间复杂度 1.插入排序的问题 如果用插入排序对一个逆序…

结构体;结构成员访问操作符

结构体: 虽然c语言已经提供了内置类型,比如:char、short、int、long等,但还是不够用,就好比我描述一个人,我需要描述他的身高,体重,年龄,名字等信息&#xff0c…

手把手一起学习Python NumPy

NumPy 是用于处理数组的 python 库,NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。Numpy官方网址 NumPy 安装 使用pip安装NumPy 模块: pip install numpyNumPy 入门 创建numpy数组&#x…

python-绘制五星红旗(非标准)

完整代码如下: #五星红旗(非标准版) from turtle import* import math from random import* tracer(0) penup() goto(-640,220) pendown() color(gold,gold) begin_fill() for i in range(5): fd(150) right(144) # 大五角星 penup(…

【Redis】 关于 Redis 哈希类型

文章目录 🍃前言🎋命令介绍🚩hset🚩hget🚩hexists🚩hdel🚩hkeys🚩hvals🚩hgetall🚩hmget🚩hlen🚩hsetnx🚩hincrby&#x1…

C++面向对象程序设计-北京大学-郭炜【课程笔记(十一)】

C面向对象程序设计-北京大学-郭炜【课程笔记(十一)】 1、string(重要知识点)1.2、string的赋值和链接1.3、比较string1.4、子串1.5、交换string1.6、寻找string中的字符1.7、删除string中的字符1.8、替换string中的字符1.9、在str…

java项目之图书管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 系统主要分为管理员角色和用…

宝塔PHP环境安装配置Xdebug

宝塔PHP环境安装配置Xdebug 安装XdebugVSCode安装插件编辑配置文件编辑配置运行调试断点快捷键其他 安装Xdebug 在宝塔中,找到PHP,打开管理页面,选择xdebug扩展,点击操作栏中的安装按钮(这里已经安装过了,…

JavaFX学习教程二

一、JavaFX 体系结构 JavaFX 场景图(Scene Graph)是构建 JavaFX 应用程序的起点,一种树状数据结构,用于排列(和分组)图形对象,以便于逻辑表示。 stage:舞台,操作系统窗口的 JavaFX 表示,是所有…

【Python】 掌握 Flask 请求数据获取的艺术

基本原理 在Web开发中,Flask是一个用Python编写的轻量级Web应用框架。它被广泛用于快速开发简单的Web应用。当用户通过浏览器或其他客户端向服务器发送请求时,Flask需要能够接收和解析这些请求中的数据。这些数据可以是GET请求的查询字符串、POST请求的…

方言和大语言模型

方言多样性及其对语言模型的影响 语言的演变是不可避免的,反映并推动了重大的社会变革和传统。语言接触往往会推动我们说话方式的创新,在美国全球文化的影响下,一种新的叙事正在其语言织锦中展开。 例如,在佛罗里达州南部&#…

springboot2.x3.x的A项目(作为sdk)集成到启动B项目调用2

一 概述 1.1 说明 本博客记录的案例,逻辑是: 项目A读取配置文件,并在service类的方法进行打印输出。项目A作为sdk被项目B进行依赖, 在项目B启动后,进行调用,并且在B进行参数的配置,能够覆盖…

java技术:spring-secrity实现认证、授权

目录 一、依赖 二、逻辑图 三、代码设计 1、WebSecurityConfigurerAdapter的实现类 2、设计登录接口 config配置: 1)UserDetailsService实现类重写: 2)书写登录实现类(调用authenticationManager、可以与后面的…

第十三期Big Demo Day聚焦Web3前沿,FaceN.AI项目路演揭幕创新技术

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。FaceN.AI将亮相本次Big Demo Day,参与精彩的项目路演,展示其在跨链去中心化数字身份、On-chain to Off-chain数据应用、DIDFi探索以及元宇宙与AIGC人格化发展等领域的领先…

kubectl--的陈述式资源管理

目录 一 kubectl 1 查看版本信息 2 查看资源对象简写 3 查看集群信息 4 配置kubectl自动补全 5 node节点查看日志 二 基本信息查看 1 查看 master 节点状态 2 查看命令空间 3 查看命名空间为default的所有资源 4 创建命名空间app 5 删除命名空间app 6 指定pod控…

Magisk + JustTrustMe 安装配置

操作步骤: 安装 Magisk 面具(手机root)在面具中刷入 LSPosed框架安装 JustTrustMe在LSPosed框架中配置并启动 JustTrustMe 一,Magisk面具 请根据自己手机的机型去root并安装面具,参考链接: https://www…

【全开源】二手车置换平台系统小程序(FastAdmin+ThinkPHP+Uniapp)

二手车置换平台系统 特色功能: 车辆评估:系统提供车辆状况、性能和价值的评估功能,通过拍照、上传图片等方式自动识别车辆信息并给出估价建议,帮助买家和卖家更准确地了解车辆价值。 在线交易:平台提供在线购车、售车…