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

news2025/1/19 11:35:10

在这里插入图片描述

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

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

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

相关文章

【Maven】使用idea将sdk打包部署到本地仓库

RT 如题。近日在接入外部支付的sdk&#xff0c;突然有点忘了如何引入外部sdk到自己的maven仓库中。就想着记录一下吧 改进&#xff0c;使用IDEA 在这里记录的同时&#xff0c;顺便给大家讲一下&#xff0c;如何使用idea引入这个外部SDK。 正常我们百度的话&#xff0c;它会提…

正弦波与单位圆关系的可视化 包括源码

正弦波与单位圆关系的可视化 包括源码 flyfish 正弦波与单位圆的关系 正弦波可以通过单位圆上的点在直线&#xff08;通常是 y 轴&#xff09;上的投影来表示。具体来说&#xff0c;考虑一个单位圆&#xff0c;其半径为 1&#xff0c;圆心在原点。我们可以通过旋转一个角度 …

加密与安全_ Jasypt (Java Simplified Encryption)不完全指北

文章目录 官网功能概述Code附 官网 http://www.jasypt.org/ 功能概述 Jasypt 是一个 Java 库&#xff0c;它允许开发人员以最小的努力添加基本的加密功能&#xff0c;并且不需要深入了解密码学的工作原理。 高安全性、基于标准的加密技术&#xff0c;适用于单向和双向加密。…

VBA中类的解读及应用第十三讲:限制复选选择,窗体模块的搭建

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

第十五章 Qt的QGraphics View绘图框架详解

目录 一、视图、场景、图形项 1、Graphics View 绘图架构 1.1、图形项 GraphicsItem 1.2、场景 QGraphicsScene 1.3、视图 QGraphicsView 2、图形项、场景、视图的坐标系 3、Graphics View 基础练习 二、使用自定义视图处理鼠标事件 1、添加自定义视图类 2、使用自定…

【python基础】—calendar模块

文章目录 前言一、calendar模块方法1.firstweekday()2.setfirstweekday(firstweekday)3.isleap(year)4.leapdays(y1, y2)5.weekday(year, month, day)6.monthrange(year, month)7.weekheader(n)8.monthcalendar(year, month)9.prmonth(theyear, themonth, w0, l0)10.prcal(year…

Java WebService记

Web Services开发 常用的 Web Services 框架有 Apache Axis1 、 Apache Axis2 、 Apache CXF &#xff0c;而 Apache Axis1 已经逐渐被淘汰所以本文不会讨论&#xff0c;重点关注 Apache Axis2 及 Apache CXF 。 Apache Axis2 在IDEA中新建 Axis2Demo 项目后右键选择 添加框架…

Access,Trunk,Hybrid网络设备链接类型详解

带着问题找答案&#xff1a;网络链路上的数据包怎么看&#xff0c;是否携带vlan-id如何看&#xff0c;以及如何设计链接类型满足用户要求&#xff0c;请看如下解析。 第一种&#xff1a;链接类型access 无标记数据帧 第二种&#xff1a;链接类型trunk 第三种&#xf…

java前后端加密解密crypto-js_java crypto

} let srcs CryptoJS.enc.Utf8.parse(word); var encrypted CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); } /** 1. AES 解密 &#xff1a;字符…

怎么用AI合成PPT?这5款风靡全球的AIPPT软件一定要知道!

当下我们已进入信息过载的时代&#xff0c;每天有无数的信息试图争夺我们的注意力&#xff0c;与此同时&#xff0c;我们也需要向别人展示和呈现信息&#xff0c;这就要求我们能够以最低的成本&#xff0c;在短时间内引起对方的注意&#xff0c;这其中最常用到的工具非PPT莫属。…

融资融券利率怎么计算,两融交易开通条件和操作流程

融资融券利率 融资融券的利率没有固定的数额&#xff0c;现在融资利率最低是4%~5%&#xff0c;专项融券利率2.99%起&#xff0c;公共券源利率9.35%。 融资利息计算 融资利息是指投资者借入资金进行买入股票时需要支付的利息。 计算公式为&#xff1a;融资利息 融资金额 融…

《ClipCap》论文笔记(下)

原文出处 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文翻译 接上篇 《ClipCap》论文笔记&#xff08;上&#xff09;-CSDN博客 4. Results Datasets.我们使用 COCO-captions [7,22]、nocaps [1] 和 Conceptual Captions [33] 数据集。我们根…

概率论与数理统计_上_科学出版社

contents 前言第1章 事件与概率1.1 随机事件与样本空间1.1.1 样本空间1.1.2 随机事件1.1.3 事件之间的关系与运算 1.2 概率的三种定义及其性质1.2.1 概率的统计定义1.2.2 概率的古典定义1.2.3 概率的几何定义1.2.4 概率的性质 1.3 常用概型公式1.3.1 条件概率计算公式1.3.2 乘法…

【设计模式】设计模式学习线路与总结

文章目录 一. 设计原则与思想二. 设计模式与范式三. 设计模式进阶四. 项目实战 设计模式主要是为了改善代码质量&#xff0c;对代码的重用、解耦以及重构给了最佳实践&#xff0c;如下图是我们在掌握设计模式过程中需要掌握和思考的内容概览。 一. 设计原则与思想 面向对象编…

功能详解-电商接口丨电商API

随着电商平台各类机制日益成熟&#xff0c;电商接口逐渐被大家所熟知&#xff0c;淘宝、天猫、京东、拼多多、抖店、快手、小红书这些都是主流的电商平台&#xff0c;为了提升电商管理系统的效率&#xff0c;开发者可以通过电商接口将多个电商平台的数据和功能集成。 电商接…

海外短剧CPS推广分佣系统平台讲解,他和短剧播放平台有啥区别?

首先来讲讲什么是海外短剧系统&#xff1f;什么是海外短剧cps系统&#xff1f;这俩有何区别&#xff1f; 海外短剧系统 顾名思义&#xff1a;就是做一套海外短剧系统&#xff0c;把剧放在自己的系统内&#xff0c;让用户来充值&#xff0c;充值的钱全部都是我自己的&#xff…

【人工智能】--生成对抗网络

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;GAN 的基本原理 &#x1f348;生成器&#xff08;Generator&#xff09; &#x1f348;判别器&…

[数据集][目标检测]刀具匕首持刀检测数据集VOC+YOLO格式8810张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8810 标注数量(xml文件个数)&#xff1a;8810 标注数量(txt文件个数)&#xff1a;8810 标注…

超详细!大模型面经指南(附答案)

目录 大模型&#xff08;LLMs&#xff09;基础面 1. 目前 主流的开源模型体系 有哪些&#xff1f; 2. prefix LM 和 causal LM 区别是什么&#xff1f; 3. 涌现能力是啥原因&#xff1f; 4. 大模型LLM的架构介绍&#xff1f; 大模型&#xff08;LLMs&#xff09;进阶面 1. l…

mysql:部署MySQL 8.0 环境

mysql网址&#xff1a;MySQL 点击 MySQL Community Server 选择合适的版本 选择8.0版本 下载完成&#xff0c;点击mysql-installer-community-8.0.26.0.msi文件&#xff0c;打开安装向导。 选择自定义安装类型 打开“Select Products” 窗口&#xff0c;可以定制需要安装的产…