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

在这里插入图片描述

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

# 导包
import numpy as np
import pandas as pddf = pd.DataFrame(data=np.random.randint(0,10,size=(5,3)),index=list("ABCDE"),columns=["Python","NumPy","Pandas"])
dfdf.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      int321   NumPy   5 non-null      int322   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

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

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

相关文章

2024年7月5日 十二生肖 今日运势

小运播报&#xff1a;2024年7月5日&#xff0c;星期五&#xff0c;农历五月三十 &#xff08;甲辰年庚午月庚午日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;狗、羊、虎 需要注意&#xff1a;鸡、牛、鼠 喜神方位&#xff1a;西北方 财神方位&#xff1a;正…

联合查询(多表查询)

多表查询是对多张表的数据取笛卡尔积&#xff08;关联查询可以对关联表使用别名&#xff09; 数据准备 insert into classes(name, desc) values (计算机系2019级1班, 学习了计算机原理、C和Java语言、数据结构和算法), (中文系2019级3班,学习了中国传统文学), (自动化2019级5…

土地规划与文化遗产保护:在发展浪潮中守护历史的脉络

在这个日新月异的时代&#xff0c;城市化进程如火如荼&#xff0c;土地规划作为引导城市发展方向的关键&#xff0c;承载着平衡发展与保护的重任。在追求现代化的同时&#xff0c;保护文化遗产不仅是对过去的尊重&#xff0c;更是对未来负责。本文旨在深入探讨如何在土地规划实…

为了SourceInsight从Linux回到Windows

什么是SourceInsight 现在上网搜索这个软件&#xff0c;大多数说他是一个代码阅读软件&#xff1b;但是在官方的说法里面&#xff0c;这是一款支持多语言的编辑器。大概长这样&#xff1a; 看起来十分老旧是吧&#xff0c;但是他其实他已经是第四代了哈哈哈。其实这个软件是我…

高校搭建AIGC新媒体实验室,创新新闻教育教学模式

高校作为人才培养的重要阵地&#xff0c;必须紧跟时代步伐&#xff0c;不断创新教育教学模式&#xff0c;提升跨界融合育人水平&#xff0c;通过AIGC新媒体实验室探索创新人才培养模式。AIGC新媒体实验室不仅能够高效赋能高校宣传媒体矩阵&#xff0c;也可以助力教学实践与AIGC…

5分钟读懂GPS-RTK实时动态技术,建议收藏!

由于”智慧工地“理念的兴起和发展&#xff0c;目前越来越多的企业将信息技术手段融合于施工现场安全管理&#xff0c;构建智能化的安全监管模式。基于此&#xff0c;蓝牙LORA融合定位技术、UWB超宽带定位技术、GPS-RTK定位技术等信息技术也越来越频繁出现在大众视野。然而&…

记录通过Cloudflare部署属于自己的docker镜像源

引言 由于最近国内无法正常拉取docker镜像&#xff0c;然而找了几个能用的docker镜像源发现拉取回来的docker镜像不是最新的版本&#xff0c;部署到Cloudflare里Workers 和 Pages&#xff0c;拉取docker 镜像成功&#xff0c;故记录部署过程。 部署服务 登录Cloudflare后&…

C++ 智能指针内存泄漏问题

shared_ptr相互嵌套导致循环引用 代码示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

数据结构 1.1 数据结构的基本概念

本章总览&#xff1a; 一.什么是数据 1.数据 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程 序识别和处理的符号的集合。数据是计算机程序加工的原料。 早期计算机只能处理纯数值的问题&#xff0c;如世界第一题计算机ENI…

转让北京文化传媒公司带营业性演出经纪许可证

影视文化传播倡导将健康的影视文化有效传播给观众&#xff0c;从而构建观众与电影制作者的良 性沟通与互动&#xff0c;是沟通电影制作者与电影受众的重要桥梁。影视文化泛指以电影&#xff0c;电视方式所进行的全部文化创造&#xff0c;即体现为电影&#xff0c;电视全部的存在…

Java-List集合堆内存溢出

Java-List集合堆内存溢出 情况一情况二对照分析对照规定堆内存 情况一 往List<Object>的集合中不断插入元素&#xff0c;集合底层的数组会不断扩容&#xff0c;从0 -> 10 -> 10 10>>1…。最终出现堆内存溢出&#xff0c;是在扩容数组大小的时候。这里的过程…

【应届应知应会】SQL常用知识点50道

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;借他一双眼&#xff0c;愿这盛世如先生所愿 个性签名&#xff1a;人生乏味啊&#xff0c;我欲令之光怪陆离 本文封面由 凌七七~❤ 友情提供 目录 数据库的概念 (什么是数据库) RDBMS NOSQL 数据库的分类 …

深入理解 Git `git add -p` 命令中的交互选项

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

500mA、低压差、低噪声、超快、无需旁路电容的CMOS LDO稳压器RT9013

一般描述 RT9013 SOT23-5封装的外观和丝印 RT9013 是一款高性能的 500mA LDO 稳压器&#xff0c;具有极高的 PSRR 和超低压差。非常适合具有苛刻性能和空间要求的便携式射频和无线应用。 RT9013的静态电流低至25μA&#xff0c;进一步延长了电池的使用寿命。RT9013 也适用于低…

音乐发行平台无加密开源源码

适用于唱片公司&#xff0c;用于接收物料&#xff0c;下载物料功能&#xff1a;个人或机构认证&#xff0c;上传专辑和歌曲&#xff0c;版税结算环境要求php7.4Nginx 1、导入数据库 2、/inc/conn.php里填写数据库密码等后台路径/admin&#xff08;可自行修改任意入口名称&…

【JS】过滤数组中空值——arr.filter(Boolean)

前言&#xff1a;过滤数组中的空值&#xff0c;包括 &#xff08;undefined、null、“”、0、false、NaN&#xff09; Boolean函数可以将一个值转换为布尔值&#xff0c;空值会被转换为false&#xff0c;非空值会被转换为true 方法&#xff1a; const arr [1, 2, ""…

Linux-页表如何对物理内存进行映射

1.1 页框和页帧 我们知道通过页表可以将虚拟内存映射到对应的物理内存&#xff0c;而操作系统对于物理内存的管理并不是以字节为单位的&#xff0c;而是将物理内存分为许多大小为4KB的块&#xff0c;称为页框或页帧&#xff0c;这就是为什么我们在创建共享内存是建议将大小设定…

LTSPICE仿真电路:(十九)磁珠的一些简单仿真

1.作用 简单来说就是用来滤波的&#xff0c;将高频信号转化为热量滤除掉&#xff0c;低频有用信号正常通过 2.参数 上图几个参数比较简单&#xff0c;就是字面上的意思&#xff0c;更重要的就是频率阻抗图 不同曲线代表不同型号的磁珠&#xff0c;实际上除了额定电流外&#…

基于springboot+vue+uniapp的语言课学习系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

艺活网DIY手工制作网站源码 工艺制作教程平台源码,带数据

帝国CMS仿《手艺活》DIY手工制作网源码&#xff0c;仿手艺活自适应手机版模板。 带数据库和图片资源&#xff0c;一共5个G大小&#xff0c;下载需耐心。 92开发 手艺活网DIY手工制作网站源码 创意手工艺品制作教程平台系统帝国h5自适应手机端 是一套展示各种 DIY 小物品精美又…