[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](一)

简介: [Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念]

image.png


前言

系列文章目录

[Python]目录

视频及资料和课件

链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234

提取码:1234

数据、文献

数据、文献:

「[Python] 数据预处理(缺失…异常值、重复值)」

返回文章目录

1. 缺失值处理

  • 对于缺失值一般有两种处理方式:
  • 1.将缺失值直接删除
  • 2.对缺失值进行填补

返回文章目录

1.1 缺失值删除

返回文章目录

1.1.1 适用情况

  • 对于缺失值采用直接删除的方式进行处理有如下几种情况:
  • 1.对于数据表中的一行,如果整行数据缺失,或者是在一行中所需要使用的数据列对应的数据缺失,那么可以将这一行直接进行删除。
    如:

  • 2.如果在一行或者一列中存在大量的数据缺失,那么可以对该行或该列直接进行删除。

在一行或一列中,数据的缺失量是否达到需要删除该行或该列,需要视情况而定,这没有十分准确的标准。

  • 如:

表1:

表2:

返回文章目录

1.1.2 代码实现

返回文章目录

1.1.2.1 情况一代码

通过调用 dropna() 方法,删除整行数据缺失的行,或者在一行中所需要使用的数据列对应的数据缺失的行。

  • dropna():
  • 参数:
  • axis:表示轴向,0为删除行,1为删除列,默认为0.
  • how:接收 string 类型的数据为参数,表示删除的方式,any 表示只要有缺失值就删除该行或列,all表示全部为缺失值才删除行或列。默认为any。
  • subset:接收 array 类型的数据为参数,表示进行缺失值处理的行或列,默认为None,表示所有的行或列。
  • inplace:表示是否在原表上进行操作,默认为False。
# 包的导入
import pandas as pd
# 读取数据
data = pd.read_excel('../../监测点C逐日污染物浓度实测数据.xlsx')
# 删除数据缺失的行
# 当 subset 指定的列全部缺失才删除对应的行
data_new = data.dropna(
  how='all', 
  subset=[
    'SO2实测日均(μg/m³)', 
    'NO2实测日均(μg/m³)', 
    'PM10实测日均(μg/m³)', 
    'PM2.5实测日均(μg/m³)', 
    'O3实测八小时滑动平均日最大值(μg/m³)', 
    'CO实测日均(mg/m³)'
  ]  
)
# print(data_new)
# 导出处理后的数据
data_new.to_excel('./1.xlsx')

返回文章目录

1.1.2.2 情况二代码
  1. 如果在一行中存在大量的数据缺失,直接删除该行。

数据表表1

中一共有8列数据,除去第一第二列,剩下六列数据,当一行中缺失的数据大于等于4个时,将该行删除。

  1. 先调用 apply() 方法对数据表的每行进行处理,然后再对数据表中需要删除的行进行删除。
  • apply():
  • 参数:
  • func:接收一个函数作为参数,该函数为对数据表中的每行或每列进行处理的函数,该函数接收有一个参数,用于接收传入的数据表中的行或列。
  • axis:轴向,axis=1表示对数据表中的每行进行处理,axis=0表示对数据表中的每列进行处理。
# 包的导入
import pandas as pd
import numpy as np
# 读取数据
data = pd.read_excel('../../监测点C逐日污染物浓度实测数据.xlsx')
# 当一行中的数据,除去第一第二列,
# 缺失的数据个数大于等于4(该表中一共8列数据)
# 返回空行
# 否则将原来的行返回
def fun(row):
  sub_row = row[2:]
  cnt = sub_row.count()
  if cnt<=2 :
    # return None
    return np.nan
  else :
    return row
# 调用 apply() 方法对每行数据进行处理
re = data.apply(fun, axis=1)
# 删除整行数据为空的行,直接修改原表
re.dropna(how='all', inplace=True)

  1. 如果在一列中存在大量的数据缺失,直接删除该列。

通过对表2

中,每列非空数据的统计,发现湿度这一列存在大量的数据缺失,所以将这列数据整列进行删除。

  • 删除指定列的方法:
  • pop():
  • pop() 方法一次只能删除一列数据,且是对原数组直接进行列的删除,同时会返回删除的列的数据。
  • 参数:
  • item:需要删除的列的列名。
  • drop():
  • drop() 方法支持多列删除,不对原数组直接进行列的删除,会返回一个删除指定列后的新数组。
  • 参数:
  • labels:接收一个字符串类型数据或一个序列为参数,表示要删除的列。
  • axis:轴向,axis=1表示对列进行删除,axis=0表示对行进行删除。
  1. (1)使用 pop() 方法删除指定列:
# 包的导入
import pandas as pd
# 读取数据
data = pd.read_excel('../../监测点C逐小时污染物浓度与气象实测数据.xlsx')
# 删除指定列
data.pop('湿度(%)')
data

相关文章
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
291 1
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
232 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
338 95
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
149 88
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
374 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
176 0
|
存储 Python
Python函数参数传递
Python函数参数传递
344 1
深入理解 Python 中的函数参数传递机制
在 Python 中,对于函数的参数传递,有两种主要的方式:传值和传引用。事实上,Python 的参数传递是一种“传对象引用”的方式。接下来的文章我们将详细介绍 Python 的函数参数传递机制,这对理解 Python 编程语言的底层实现以及优化你的代码都非常有帮助。
|
Python
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
186 0

推荐镜像

更多