Pandas数据清洗实战:精准捕捉并优雅过滤异常值,让数据分析更可靠!

在这里插入图片描述

1.describe():查看每一列的描述性统计量

# 导包
import numpy as np
import pandas as pd

df = pd.DataFrame(data=np.random.randint(0,10,size=(5,3)),
                  index=list("ABCDE"),
                  columns=["Python","NumPy","Pandas"]
                 )
df

df.describe()
PythonNumPyPandas
count5.0000005.0000005.000000
mean5.6000002.8000005.400000
std2.0736442.1679482.408319
min4.0000000.0000002.000000
25%4.0000001.0000004.000000
50%5.0000004.0000006.000000
75%6.0000004.0000007.000000
max9.0000005.0000008.000000
# 自定义百分数
df.describe([0.01,0.3,0.4,0.9,0.99])
PythonNumPyPandas
count5.0000005.0000005.000000
mean5.6000002.8000005.400000
std2.0736442.1679482.408319
min4.0000000.0000002.000000
1%4.0000000.0400002.080000
30%4.2000001.6000004.400000
40%4.6000002.8000005.200000
50%5.0000004.0000006.000000
90%7.8000004.6000007.600000
99%8.8800004.9600007.960000
max9.0000005.0000008.000000
# 行列转置
df.describe([0.01,0.3,0.4,0.9,0.99]).T
countmeanstdmin1%30%40%50%90%99%max
Python5.05.62.0736444.04.004.24.65.07.88.889.0
NumPy5.02.82.1679480.00.041.62.84.04.64.965.0
Pandas5.05.42.4083192.02.084.45.26.07.67.968.0

2.df.std():可以求得DataFrame对象每一列的标准差

df.std()
Python    2.073644
NumPy     2.167948
Pandas    2.408319
dtype: float64

3.df.drop():删除特定索引

df2 = df.copy()
df2
PythonNumPyPandas
A908
B512
C657
D446
E444
# 默认删除行
df2.drop("A")
PythonNumPyPandas
B512
C657
D446
E444
df2.drop(index="A")
PythonNumPyPandas
B512
C657
D446
E444
# 删除列
df2.drop("Python",axis=1)
NumPyPandas
A08
B12
C57
D46
E44
df2.drop(columns="Python")
NumPyPandas
A08
B12
C57
D46
E44
# 删除多列或多行
df2.drop(columns=["NumPy","Python"])
Pandas
A8
B2
C7
D6
E4
df2.drop(index=["A","B"])
PythonNumPyPandas
C657
D446
E444
# inplace修改原数据
df2.drop(index=["A","B"],inplace=True)
df2
PythonNumPyPandas
C657
D446
E444

4.unique():唯一,去重(只能用于Series一维数组)

# DataFrame没有unique属性,Series调用unique
df["Python"].unique()
array([9, 5, 6, 4])

5.df.query:按条件查询

# 找到Python列中等于6的所有行
df.query("Python == 6")
PythonNumPyPandas
C657
df.query("Python > 6")
PythonNumPyPandas
A908
df.query("Python < 6")
PythonNumPyPandas
B512
D446
E444
# and,&
df.query("Python > 4 and NumPy == 5")
PythonNumPyPandas
C657
df.query("Python > 4 & NumPy == 5")
PythonNumPyPandas
C657
# or,|
df.query("Python > 6 or NumPy == 8")
PythonNumPyPandas
A908
df.query("Python > 6 | NumPy == 8")
PythonNumPyPandas
A908
# in(成员运算符)
df.query("Python in [5,6,9]")
PythonNumPyPandas
A908
B512
C657
# 使用变量@符号
n = 6
df.query("Python == @n")
PythonNumPyPandas
C657
m = [5,6,9]
df.query("Python in @m")
PythonNumPyPandas
A908
B512
C657

6.df.sort_values():根据值排序

# sort_values:默认按照列名排序,默认升序(常用)
df.sort_values("Python")
PythonNumPyPandas
D446
E444
B512
C657
A908
# ascending:是否升序,默认是True
df.sort_values("Python",ascending=False)
PythonNumPyPandas
A908
C657
B512
D446
E444
# 根据行索引名排序,会把列进行排序(不常用)
df.sort_values("B",axis=1)
NumPyPandasPython
A089
B125
C576
D464
E444

7.df.sort_index():根据索引排序

# 按照索引名排序,默认是对行索引进行排序,默认是升序
df.sort_index(ascending=False)
PythonNumPyPandas
E444
D446
C657
B512
A908
# 按照列索引排序
df.sort_index(ascending=False,axis=1)
PythonPandasNumPy
A980
B521
C675
D464
E444

8.df.info():查看数据信息

# info:常用
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, A to E
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   Python  5 non-null      int32
 1   NumPy   5 non-null      int32
 2   Pandas  5 non-null      int32
dtypes: int32(3)
memory usage: 272.0+ bytes

9.练习

  • 新建一个形状为10000*3的标准正态分布的DataFrame(np.random.randn),去除掉所有满足以下情况的行:其中任一元素绝对值大约3陪标准差
df = pd.DataFrame(np.random.randn(10000,3))
df
012
00.786386-0.204965-0.152465
10.4005261.4477330.310461
2-0.363709-0.989258-1.093327
3-2.8569782.3366451.474821
4-0.8477571.141278-0.230877
............
99950.3310520.2630590.469468
99961.172189-1.3803370.648793
9997-0.544049-0.509627-0.224698
9998-0.034967-0.085575-0.687314
99990.007202-0.069250-0.803754

10000 rows × 3 columns

# 过滤掉 大于3陪标准差的行
# 标准差 df.std(),绝对值 df.abs()
# cond:找到每一个元素是否大于3陪标准差
cond = df.abs() > df.std()*3
cond
012
0FalseFalseFalse
1FalseFalseFalse
2FalseFalseFalse
3FalseFalseFalse
4FalseFalseFalse
............
9995FalseFalseFalse
9996FalseFalseFalse
9997FalseFalseFalse
9998FalseFalseFalse
9999FalseFalseFalse

10000 rows × 3 columns

# 找到存在大于3陪标准差的行
cond2 = cond.any(axis=1)
cond2
0       False
1       False
2       False
3       False
4       False
        ...  
9995    False
9996    False
9997    False
9998    False
9999    False
Length: 10000, dtype: bool
# bool值索引,过滤异常值(大于3陪标准差)
df.loc[~cond2]
012
00.786386-0.204965-0.152465
10.4005261.4477330.310461
2-0.363709-0.989258-1.093327
3-2.8569782.3366451.474821
4-0.8477571.141278-0.230877
............
99950.3310520.2630590.469468
99961.172189-1.3803370.648793
9997-0.544049-0.509627-0.224698
9998-0.034967-0.085575-0.687314
99990.007202-0.069250-0.803754

9904 rows × 3 columns

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL MINUS 运算符:查找数据集之间的差异

在 SQL 中&#xff0c;MINUS 运算符在查询中起着至关重要的作用&#xff0c;它允许开发人员识别和检索存在于一个数据集中但不存在于另一个数据集中的记录。本文探讨了 SQL 中 MINUS 运算符的功能、用法和实际应用&#xff0c;强调了它在数据分析和操作任务中的重要性。 理解 …

adobe pdf设置默认打开是滚动而不是单页视图

上班公司用adobe pdf&#xff0c;自己还不能安装其它软件。 每次打开pdf&#xff0c;总是默认单页视图&#xff0c;修改滚动后&#xff0c;下次打开又 一样&#xff0c;有时候比较烦。 后面打开编辑->首选项&#xff0c; 如下修改&#xff0c;下次打开就是默认滚动了

开源六轴协作机械臂myCobot280实现交互式乘法!让学习充满乐趣

本文经作者Fumitaka Kimizuka 授权我们翻译和转载。 原文链接&#xff1a;myCobotに「頷き」「首振り」「首傾げ」をしてもらう &#x1f916; - みかづきブログ・カスタム 引言 Fumitaka Kimizuka 创造了一个乘法表系统&#xff0c;帮助他的女儿享受学习乘法表的乐趣。她可以…

FPGA问题

fpga 问题 ep2c5t144 开发板 第一道坎&#xff0c;安装软件&#xff1b;没有注册&#xff0c;无法产生sop文件&#xff0c;无法下载 没有相应的库的quartus ii版本&#xff0c;需要另下载 第二道坎&#xff0c;模拟器的下载&#xff0c;安装&#xff1b; 第三道&#xff0c;v…

Camera Raw:红眼

Camera Raw 的红眼 Red Eye面板可高效地修正照片中的红眼现象。 红眼现象通常是由于闪光灯直接照射到眼睛内的视网膜所引起的&#xff0c;在摄影中常见于低光环境下的拍摄&#xff0c;尤其是在人物和宠物照片中。 在一些老照片中可能存在红眼现象&#xff0c;现代摄影技术基本上…

图像的反转

图像颜色的反转一般分为两种&#xff1a;一种是灰度图片的颜色反转&#xff0c;另一种是彩色图像的颜色反转。 本节使用的原图如下&#xff1a; 1.1 灰度图像颜色反转 灰度图像每个像素点只有一个像素值来表示&#xff0c;色彩范围在0-255之间&#xff0c;反转方法255-当前像…

Anaconda+Pycharm两个软件从头到尾下载流程

前言&#xff1a; 1、使用教程前&#xff0c;请将电脑上的所有的Python卸载掉。再下载Anaconda&#xff0c;Anaconda这个软件里面就含有python。 彻底删除python方法&#xff1a; 1、计算机——属性——高级系统设置——环境变量 2、查看电脑用户自己设计的环境变量&#x…

探索如何赋予对象迭代魔法,轻松实现非传统解构赋值的艺术

前言 今天下午在网上冲浪过程中看到这样一个问题 面试题&#xff1a;如何让 var [a, b] {a: 1, b: 2} 解构赋值成功&#xff1f; 据说是某大厂面试题&#xff0c;于是我学习了一下这个问题&#xff0c;写下这篇文章记录一下。 学习过程 要想解决这个问题首先要知道什么是解…

运维锅总详解计算机缓存

本文从OSI模型中的每一层缓存介绍、常见开源中间件缓存举例、TCP/IP协议栈中的缓存机制、操作系统中的缓存、访问缓存数据的时间范围统计等方面对计算机中的缓存进行详细介绍。希望对您有所帮助&#xff01; 一、OSI模型中的每一层缓存 1. 物理层&#xff08;Physical Layer&…

人工智能系列-numpy(一)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” Numpy是python语言的一个拓展程序库&#xff0c;支持大量的维度数组与矩阵计算&#xff0c;此外也针对数组运算提供大量的数学函数库 NumPy支持的数据类型比Python内置的类型要…

SwiftUI中List的liststyle样式及使用详解添加、移动、删除、自定义滑动

SwiftUI中的List可是个好东西&#xff0c;它用于显示可滚动列表的视图容器&#xff0c;类似于UITableView。在List中可以显示静态或动态的数据&#xff0c;并支持垂直滚动。List是一个数据驱动的视图&#xff0c;当数据发生变化时&#xff0c;列表会自动更新。针对List&#xf…

PyMuPDF 操作手册 - 09 API - Page属性方法和简短说明

文章目录 一、Page属性方法和简短说明一、Page属性方法和简短说明 https://pymupdf.readthedocs.io/en/latest/page.html Method/Attribute属性方法Short Description简短说明Page.add_caret_annot()仅限 PDF:添加插入符号注释Page.add_circle_annot()仅限 PDF:添加圆圈…

前端面试题7(单点登录)

如何实现单点登录 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种允许用户在多个应用系统中只需登录一次&#xff0c;就可以访问所有相互信任的应用系统的认证技术。实现前端单点登录主要依赖于后端的支持和一些特定的协议&#xff0c;如OAuth、Ope…

Postman使用教程

传统接口风格 RESTful风格 使用Postman完成测试用例目标&#xff1a; Postman教程 &#xff08;1&#xff09;准备工作&#xff0c;下载Postman新建 &#xff08;2&#xff09;登录接口调试-获取验证码 &#xff08;3&#xff09;登录接口调试-登录 &#xff08;4&#xff09;…

python库(2):Passlib库

1 Passlib简介 Passlib库就是一个强大的工具&#xff0c;专门用于密码的安全存储和验证。本文将介绍Passlib库的基本概念、功能和使用方法&#xff0c;帮助更好地理解和应用密码安全技术。 Passlib是一个用于密码加密、哈希和验证的Python库&#xff0c;它提供了多种密码哈希…

STM32 HAL库实现硬件IIC通信

文章目录 一. 前言二. 关于IIC通信三. IIC通信过程四. STM32实现硬件IIC通信五. 关于硬件IIC的Bug 一. 前言 最近正在DIY一款智能电池&#xff0c;需要使用STM32F030F4P6和TI的电池管理芯片BQ40Z50进行SMBUS通信。SMBUS本质上就是IIC通信&#xff0c;项目用到STM32CubeMXHAL库…

算法库应用-顺序串(串比较)

学习贺利坚老师博客 数据结构例程——串的顺序存储应用_使用顺序串存储身份证号-CSDN博客 本人详细解析博客 串的顺序存储结构应用_(1)假设串采用顺序串存储,设计一个算法程序,按顺序比较两个串s和t的大小。请-CSDN博客 版本日志 V1.0: 利用顺序串, 进行简单的判断比较, 也算是…

JavaScript中闭包的理解

闭包&#xff08;Closure&#xff09;概念&#xff1a;一个函数对周围状态的引用捆绑在一起&#xff0c;内层函数中访问到其外层函数的作用域。简单来说;闭包内层函数引用外层函数的变量&#xff0c;如下图&#xff1a; 外层在使用一个函数包裹住闭包是对变量的保护&#xff0c…

Linux--V4L2摄像头驱动框架及UVC浅析

一、前言 对于一个usb摄像头&#xff0c;它的内核驱动源码位于/drivers/media/usb/uvc/ 核心层&#xff1a;V4L2_dev.c文件 硬件相关层&#xff1a; uvc_driver.c文件 本篇记录基于对6.8.8.8内核下vivid-core.c文件&#xff08;虚拟视频驱动程序&#xff09;的分析&#xff…

【数据库】仓库管理数据库(练习样例)

某连锁超市需要设计实现一个仓库管理系统&#xff0c;要求每个仓库可以有多名仓库管理员&#xff0c;每个仓库管理员只负责管理一个仓库&#xff0c;同时每个仓库都配备了一名仓库主管&#xff1b;不同的仓库存放的是不同类型的货品&#xff0c;每种货品只存放在固定的仓库中&a…