Python数据分析-数据预处理

异常数据处理——3σ原则、箱线图 异常数据处理——3σ原则、箱线图 用不包括异常值的剩余数据的均值替换、删除DataFrame中某列有异常值的整行等方法 阅读详情

数据预处理

文章目录

  • 数据预处理
    • 1.前言
    • 2.数据探索
      • 2.1缺失值分析
      • 2.2 异常值分析
        • 2.2.1 简单统计量分析
        • 2.2.2 3 s i g m a \\sigma sigma原则
        • 2.2.3 箱线图分析
      • 2.3 一致性分析
      • 2.4 相关性分析
    • 3.数据预处理
      • 3.1 数据清洗
        • 3.1.1 缺失值处理
        • 3.1.2 异常值处理
      • 3.2 数据集成
        • 3.2.1 实体识别
        • 3.2.2 冗余属性识别
        • 3.2.3 数据变换
        • 3.2.4 规范化
        • 3.2.5 连续属性离散化
        • 3.2.6属性构造
      • 3.3 数据归约
        • 3.3.1 属性归约
        • 3.3.2 数值归约
        • 3.3.2 数值归约

1.前言

数据质量分析是数据预处理的前提,是数据挖掘分析结论有效性和准确性的基础,其主要任务是检查原始数据中是否存在脏数据,脏数据一般指的是不符合要求的,以及不能直接进行相应分析的数据。

脏数据包括:

  • 缺失值

  • 异常值

  • 不一致的值

  • 重复数据及含有特殊符号(如#、¥、*)的数据

2.数据探索

2.1缺失值分析

data.describe()#查看数据的基本情况
len(data)#查看数据的总条数

image-20220428100559499

2.2 异常值分析

检查数据中是否有录入错误以及含有不合理的数据,忽视这些异常值是十分危险的,可能会导致数据整体分析产生明显偏离观察值的影响。

2.2.1 简单统计量分析

通过一个简单的描述性估计,进而查看哪些数据是不合理的。需要的统计量可以是最大值和最小值,判断这个变量的极值是否不在现实合理范围之中。

data = pd.read_excel(catering_sale, index_col = '日期')  # 读取数据,指定“日期”列为索引列
data.describe()#对数据进行描述性估计,显示如下数据
#输出:
                销量
count   200.000000
mean   2755.214700
std     751.029772
min      22.000000
25%    2451.975000
50%    2655.850000
75%    3026.125000
max    9106.440000

2.2.2 3 σ \sigma σ原则

l如果数据服从正态分布,在 3 σ 3\sigma 3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过三倍标准差的值。在正态分布的假设下,距离平均值 3 σ 3\sigma 3σ之外的值出现的概率小于0.003,属于极个别的小概率事件。

2.2.3 箱线图分析

箱形图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,其结果比较客观,在识别异常值时有一定优越性

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签--黑体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()  # 建立图像
p = data.boxplot(return_type='dict')  # 画箱线图,直接使用DataFrame的方法

#获取异常值,'flies'为箱线图中异常值的标签
x = p['fliers'][0].get_xdata()  
y = p['fliers'][0].get_ydata()

y.sort()  # 从小到大排序,该方法直接改变原对象

for i in range(len(x)):
    if i>0:
        plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
    else:
        plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

plt.show()  # 展示箱线图

原始数据图:image-20220428100414259

将y数据进行排序后的图:

image-20220512110959111

2.3 一致性分析

数据不一致性是指数据的矛盾性、不相容性。直接对不一致的数据进行挖掘,可能会产生与实际相违背的挖掘结果。

在数据挖掘过程中,不一致数据的产生主要发生在数据集成的过程中,可能是由于被挖掘数据是来自于从不同的数据源、重复存放的数据未能进行一致性地更新造成的,比如两张表中都存储了用户的地址,在用户的地址发生改变时,如果只更新了一张表中的数据,那么这两张表中就有了不一致的数据。

2.4 相关性分析

  1. 绘制散点图

  2. 绘制散点图矩阵

  3. 计算相关系数

    • Pearson相关系数
    import pandas as pd
    D = pd.DataFrame([range(1, 8), range(2, 9)])  # 生成样本D,一行为1~7,一行为2~8
    print(D.corr(method='spearman'))  # 计算相关系数矩阵
    S1 = D.loc[0]  # 提取第一行
    S2 = D.loc[1]  # 提取第二行
    print(S1.corr(S2, method='pearson'))  # 计算S1、S2的相关系数
    
    
    • 协方差系数
    import numpy as np
    D = pd.DataFrame(np.random.randn(6, 5))  # 产生6×5随机矩阵
    print(D.cov())  # 计算协方差矩阵
    print(D[0].cov(D[1]))  # 计算第一列和第二列的协方差
    
    

3.数据预处理

3.1 数据清洗

3.1.1 缺失值处理
插补方法描述
均值/中位数/众数插补根据属性的类型,用该属性的这些特征进行插补
使用固定值用一个常量替换
最近邻插补法记录中找到与缺失样本最接近的该属性值插补
回归方法根据已有数据与相关量建立拟合模型来预测属性值
插值法利用已知点建立合适的插值函数,未知点由插值函数近似代替
import pandas as pd  # 导入数据分析库Pandas
from scipy.interpolate import lagrange  # 导入拉格朗日插值函数

inputfile = '../data/catering_sale.xls'  # 销量数据路径
outputfile = '../tmp/sales.xls'  # 输出数据路径

data = pd.read_excel(inputfile)  # 读入数据
data['销量'][(data['销量'] < 400) | (data['销量'] > 5000)] = None  # 过滤异常值,将其变为空值

# 自定义列向量插值函数
# s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):
  y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))]  # 取数
  y = y[y.notnull()]  # 剔除空值
  return lagrange(y.index, list(y))(n)  # 插值并返回插值结果

# 逐个元素判断是否需要插值
for i in data.columns:
  for j in range(len(data)):
    if (data[i].isnull())[j]:  # 如果为空即插值。
      data[i][j] = ployinterp_column(data[i], j)

data.to_excel(outputfile)  # 输出结果,写入文件

3.1.2 异常值处理
异常值处理方法方法描述
删除含有异常值的记录直接将异常值删除
视为缺失值将异常值视为缺失值,利用缺失值处理方法进行处理
平均值修正可以用前后两个观测值的平均值修正该异常值
不处理直接在异常值数据集上进行挖掘建模

3.2 数据集成

3.2.1 实体识别

实体识别是统一不同源数据的矛盾之处:

  1. 同名异义
  2. 异名同义
  3. 单位不统一
3.2.2 冗余属性识别

常见类型:

  1. 同一属性出现多次
  2. 同一属性命名不一致导致重复

可以通过相关分析检测,根据两个数值型属性,根据其属性值,用相关系数度量一个属性在多大程度蕴含另一个属性。

3.2.3 数据变换

对数据转换为“适当”形式,比如常见的函数变换,将数据进行简单压缩,将非平稳序列转换为平稳序列等等

3.2.4 规范化
  1. 最小-最大规范化

    又称为离散标准化,对原始数据进行线性变换,将数值映射到[0,1]之间。

    (data - data.min()) / (data.max() - data.min())  # 最小-最大规范化
    
    
  2. 零-均值规范化

    标准差标准化,经过处理后的数据均值为0,标准差为1

    (data - data.mean()) / data.std()  # 零-均值规范化
    
    
  3. 小数定标准化

    通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。

    data / 10 ** np.ceil(np.log10(data.abs().max()))  # 小数定标规范化
    
    

image-20220512215404779

3.2.5 连续属性离散化

一些数据挖掘算法,特别是某些分类算法,如ID3,Apriori算法,要求数据是分类属性形式。

离散化过程:在数据的取值范围设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或数值代表每个区间中的数值。也即是离散化涉及两个步骤:1.确定分类数,2.如何将连续属性映射到这些分类值

常用离散化方法:

  1. 等宽法

    将属性的值域划分为具有相同宽度的区间,区间个数由数据本身特定决定或者用户指定

    k=4#k为划分区间数
    d1 = pd.cut(data, k, labels = range(k))  # 等宽离散化,各个类比依次命名为0,1,2,3
    
    

    image-20220512220602819

  2. 等频法

    将相同数量的记录放进每个区间

    w = [1.0*i/k for i in range(k+1)]
    w = data.describe(percentiles = w)[4:4+k+1]  # 使用describe函数自动计算分位数
    w[0] = w[0]*(1-1e-10)
    d2 = pd.cut(data, w, labels = range(k))
    
    

    image-20220512220613334

  3. 基于聚类分析的方法

    • 首先将连续属性的值使用聚类算法(K-Means算法)进行聚类
    • 然后再将聚类得到的簇进行处理,合并到一个簇的连续属性值做同一标记

    image-20220512220731582

3.2.6属性构造

为了帮助用户获得更好的数据,需要利用抑制属性构造新的属性,并加入到现有的属性集中。

3.3 数据归约

数据规约是将海量数据进行规约,规约之后的数据仍接近于保持原数据的完整性,但数据量小得多。

3.3.1 属性归约

属性规约常用方法有:合并属性、逐步向前选择、逐步向后删除、决策树归纳、主成分分析

属性归约方法描述
合并属性将一些旧属性合并为新属性
逐步向前选择从一个空属性集开始,每次从原来属性选择一个当前最优的属性添加到属性子集中直到无法选出最优属性或满足一定阈值为止
逐步向后选择类比于逐步向前选择,每次去除最差的属性
决策树归纳利用决策树算法对初始数据进行分类归纳学习,生成一个初始决策树,没有出现的属性均视为无关属性
PCA将许多相关性很高的变量转化为彼此相互独立或不相关变量
D = np.random.rand(10,4)
pca = PCA()#n_components默认为4,代表选取几个特征向量
pca.fit(D)
pca.components_  # 返回模型的各个特征向量

3.3.2 数值归约
  1. 直方图
  2. 聚类
  3. 抽样

学习书籍:

《Python数据分析与挖掘实战》张良均等著
分类归纳学习,生成一个初始决策树,没有出现的属性均视为无关属性 |
| PCA | 将许多相关性很高的变量转化为彼此相互独立或不相关变量 |

D = np.random.rand(10,4)
pca = PCA()#n_components默认为4,代表选取几个特征向量
pca.fit(D)
pca.components_  # 返回模型的各个特征向量

3.3.2 数值归约
  1. 直方图
  2. 聚类
  3. 抽样

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,添加上方即可获取

image-20230619144606466

python学习路线图1

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,添加上方即可获取
2、异常值(outliers)检测:业务法、Z-score、3σ准则、箱线图 三、3σ\sigmaσ准则(异常值检测)   3σ\sigmaσ准则又称拉依达准则,是指先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。   3σ准则3\sigma准则3σ准则,仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的。   在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴,如下图: 3σ原则为: p(μ-σ<X<μ+σ)中的 阅读详情

相关推荐

Python数据分析之数据预处理

本文主要是个人的学习笔记总结,数据预处理的基本思路和方法,包括一些方法的使用示例和参数解释,具体的数据预处理案例case详见其他文章。如有错误之处还请指正!数据在进行建模和分析前,对其进行数据处理是必不可少的,这样做能帮助我们从根本上保证数据质量,提高数据的准确性和可靠性。主要包括数据清洗、数据转换、数据集成、数据降维等过程。

python03011的博客 1313

python数据分析之异常值处理

异常值是一种沉默的“杀手”,在你去除缺失值准备开始建模的时候,可能会导致你的模型效果不理想或者是十分糟糕,而又不清楚问题出现在哪,所以对于异常值的处理也是非常重要的,本文将讲解什么是异常值以及异常值的处理。异常值有很多,这里所介绍的是关于数值型的异常值,也可以称为“离散值”。异常值是指在数据集中与其他观测值明显不同的数据点或样本。它们可能是由于测量错误、数据损坏、数据录入错误、系统故障或真实的极端情况等原因而产生。

m0_70466650的博客 6320

2、Python数据分析:数据的清洗预处理

Python数据分析:数据的清洗预处理

天涯雨的博客 1073

Python数据预处理之异常值的处理——【自定义的three_sigma()函数、boxplot()方法】

文章目录基于3σ原则检测异常值代码实现测试基于箱型图检测异常值**输出结果:** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201118164522591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pvcm11bmdhbmRfVg==,size_16,color_FFFFFF,t_70#pic_cen

Jormungand_V的博客 8510

【Python数据分析与可视化】Pandas数据载入与预处理-实训

【Python数据分析与可视化】Pandas数据载入与预处理-实训 文章目录【Python数据分析与可视化】Pandas数据载入与预处理-实训导包读取数据分析数据1、查看数据的描述和统计信息;2、显示聚餐时间段time的不重复值;3、修改拼写错误的字段值;4、检测数据中的缺失值;5、删除一行内有两个缺失值的数据;6、删除sex或time为空的行;7、对剩余有空缺的数据用平均值替换; 导包 import pandas as pd import matplotlib.pyplot as plt plt.rcPa

m0_46272485的博客 3353

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6027

用Python进行数据分析:从数据预处理到模型评估

文内将带您了解如何使用Python进行数据分析,涵盖数据预处理、探索性数据分析(EDA)、特征工程、模型构建与评估等方面,帮助您快速入门并深入理解这一领域的核心概念和技术。

2301_78217634的博客 1468

RISC-V内核移植实战:从零开始手把手实现RT-Thread上下文切换(附GD32VF103代码解析)

本文详细解析了在RISC-V架构上移植RT-Thread实时操作系统的核心步骤,重点聚焦于上下文切换机制的实现。通过对比ARM Cortex-M与RISC-V在中断处理和寄存器管理上的关键差异,并以GD32VF103开发板为例,手把手指导开发者完成libcpu抽象层适配、线程栈初始化以及三种上下文切换方式的代码编写与调试,为嵌入式开发者从ARM转向RISC-V平台提供了实战指南。

fern8的博客 740

python气象数据分析_气象数据分析--数据预处理

气象数据处理流程通常的数据分析流程相似,但是气象数据有本身的一些特殊性存在,比如风向和风速,降水等数据,其中风向由0-360之间的值表示,而风速的变化通常是很小的,除非碰到一些极端情况。数据分析通常包括以下几部分:明确分析目标数据准备和数据预处理数据分析和可视化数据分析报告以上是简单的数据分析任务涉及到的分析流程,对于一些比较复杂的数据分析任务可能需要花费大量的时间进行探索性数据分析(即数据挖掘中...

weixin_39528559的博客 3746

RPMsg:协议简介

两台计算机可以通过TCP/IP进行通信,那么同一颗芯片上的两个核心怎么通信呢?

SunnyZhou-1024的博客 1万+

【系统分析师】高分论文:论面向对象设计方法及应用

本文以某市职业院校合并后的信息化系统建设项目为例,探讨了面向对象设计方法在系统开发中的应用。作为系统分析师,作者在415.6万元、6个月工期的项目中,通过遵循单一职责原则(简化构件库)、依赖倒置原则(开发公共接口)和开闭原则(构件扩展)等设计原则,成功完成了5个子系统融合改造和4个智慧实训室建设。项目采用J2EE分层设计和SOA架构,最终在2022年11月顺利上线,提升了教学管理效率,获得用户好评。文章总结了设计原则对提高系统复用性、可维护性的重要作用,同时也反思了部署过程中的经验教训。

数据知道的博客 7955

python数据分析可视化之数据预处理

之后,我们在使用merge函数进行数据合并操作。

m0_74318316的博客 1293

面试问题总结——关于OpenCV(一)

整理了一下网上和我面试中遇到的关于OpenCV相关的问题。 其中因为我的简历中有个项目用到了特征点检测相关的知识,所以整理了SIFT/SURF和FLANN。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 关于OpenCV的内容 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题   深拷贝:分配新内存的同时拷贝数据,当被赋值的容器被修改时,原始容器数据不会改变。   浅拷贝:仅拷贝数据,当被赋值容器修改时,原始容器数据也会做同样改变。 OpenCV的Mat时,有几种赋值方式分别为:   深.

boss-dog 1万+

python数据分析 - 数据预处理

总结一下近期了解到的数据分析预处理的方法。 1、均值移除   统一样本矩阵中不同特征的基准值和分散度,将各个特征的平均值调整为0,标准差调整为1。   例如某矩阵的一列值分别是a,b,c,m表示均值,s表示标准差,均值移除后的对应数据是 (a-m)/s,(b-m)/s,(c-m)/s。   使用情况:某样本有些特征的数值比较大,而有的特征的数值比较小,在分析时大的数值可能会覆盖小的数值,就...

qq_42786453的博客 474

RK3588上使用PCIE接口的国产千兆网卡YT6801

YT6801是裕太微电子开发的一款国产千兆PCIE以太网控制器芯片,可作为RK3588的PCIE外扩网口使用。

荻夜的博客 8229

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

chatgpt赋能python:Python预处理:提高数据分析效率的重要一步

数据预处理指的是对原始数据进行清洗、转化、归一化等操作,以便于后续的数据分析。在数据预处理过程中,常常需要进行数据清洗、缺失值处理、异常值检测和处理、数据转换等多种操作,以确保数据的质量和准确性。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于。

a058046的博客 346

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python数据分析-数据预处理(3)

声明:此文只是对《对比excel,轻松学习python数据分析》这本书的读书笔记,文章中的代码均来源于书中,仅以知识分享为用途,后续我会继续支持作者,也会继续读完这本书,如有侵权,请留言我删除 另外,从此文开始,我把编辑器换为了jupyter notebook,不得不说,当我接触到这个工具的时候我真的是爱上了它,有了一种享受记录的感觉,当然工具也要用在专业的方向,至少在目前的数据分析来说,我觉得它...

GQ_on yhe way的博客 885

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python数据分析中的数据预处理:数据标准化

【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于数据标准化说法错误的是: A 将数据按比例缩放,使之落入一个小的特定区间 B Min-max标准化是数据标准化的方法 C Z-score标准化是数据标准化的方法 D Min-max标准化后结果落到[-1,1]区间 ​ ​● 问题解析 1.数据标准化是什么:在数据分析之前,我们通常

liujingwei8610的专栏 8255

【Python数据分析】1st-数据探索与数据预处理

《Python数据分析与挖掘实战》读书笔记之数据探索与数据预处理 一数据探索 数据分析内容 异常值检测代码 贡献度分析代码菜品盈利帕累托图代码 二数据预处理 数据预处理内容 数据清洗代码拉格朗日法进行插补 数据离散化代码 一、数据探索 Python中用于数据探索的库主要是Pandas(数据分析)和Matplotlib(数据可视化) 数据分析内容 数据

sj的博客 3975

Python数据分析:数据读取、预处理

1. 数据读入、保存 Excel 数据读入 数据保存 数据复制 `浅拷贝、深拷贝` 读入 .csv文件时的编码问题 `utf-8' codec can't decode` 2. 数据预处理 缺失值处理: 删除缺失值所在行 重复值处理: 判断并删除重复值所在行 异常值的处理方法:`统计法`、`3σ 法`、`箱型图`

Alper05的博客 1972
上一篇: 用Python提高办公效率,太爽了!
下一篇: 10个提高工作效率的 Python 自动化脚本,值得收藏!
大模型应用场景
博客等级 码龄5年 7670粉丝 1350原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值