乐趣区

关于数据分析:图解数据分析-数据清洗与预处理

作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/33
本文地址:http://www.showmeai.tech/article-detail/138
申明:版权所有,转载请分割平台与作者并注明出处

数据分析分外围步骤分为:业务认知与数据摸索、数据预处理、业务认知与数据摸索等三个外围步骤。本文介绍第二个步骤——数据预处理。

不能想当然地认为数据是无效的。
在事实世界中,数据个别都是异构的、有缺失的、有量纲的。有些数据是从多个不同的数据源中获取的,这些异构数据,在各自的零碎中都是正确无误的,只不过很有“共性”。

例如,有的零碎中应用 0 和 1,代表性别;而有些零碎应用 f 和 m 代表性别。

  • 在应用数据之前,首先要对数据做规整解决,应用统一的单位、应用对立的文原本形容对象等。
  • 有些数据中蕴含大量反复的数据、缺失的数据、或者离群的数据,在开始剖析数据之前,必须好好检查数据是否无效,并对数据做预处理操作。
  • 判断离群数值,并对其剖析,有时会导致重大发现的产生。

一、数据规整

1.1 量纲

所谓量纲,简略来说,就是说数据的单位。有些数据是有量纲的,比方身高;而有些数据是没有量纲的,例如,男女比例。不同评估指标往往具备不同的量纲,数据之间的差异可能很大,不进行解决会影响到数据分析的后果。

1.2 数据标准化

为了打消指标之间的量纲和取值范畴差别对数据分析后果的影响,须要对数据进行标准化解决。就是说,把数据依照比例进行缩放,使之落入一个特定的区域,便于进行综合剖析。

1.3 数据归一化

归一化是数据标准化中最简略的形式,目标是把数变为 [0, 1] 之间的小数,把有量纲的数据转换为无穷纲的纯数量。归一化可能防止值域和量纲对数据的影响,便于对数据进行综合剖析。

举例说明

举个简略的例子,在一次考试中,小明的语文问题是 100 分、英语问题是 100 分,单单从这考试成绩来评估,小明的语文和英语学的一样好。然而,如果你晓得语文总分是 150 分,而英语总分只有 120 分,你还认为小明的语文和英语问题是一样的吗?

对小明的问题做简略的归一化:

采纳离差归一化办法,公式是:y = (x-min) / range,这里设 min=0,那么 range = max – min = max,由此推算出小明的语文问题是 4 /6,英语问题是 5 /6。因而,断定小明的英语问题好于语文问题。

还原到实在的场景中,各科的考题难度不尽相同,设班级中语文的最低分数是 min 语文 = 60,英语的最低分数是 min 英语 = 85,推算出小明的语文问题是 0.44 =(100-60)/(150-60),英语问题是 0.43 =(100-85)/(120-85),据此,能够判断小明的英语问题稍差于语文问题。

归一化的使得具备不同值域、不同量纲的数据之间具备可比性,使数据分析的后果更加全面,更靠近事实。

二、数据异样值检测与剖析

异样值在统计学上的全称是疑似异样值,也称作离群点 (outlier),异样值的剖析也称作离群点剖析。

异样值剖析是测验数据中是否存在不合常理的数据,在数据分析中,既不能漠视异样值的存在,也不能简略地把异样值从数据分析中剔除。器重异样值的呈现,剖析其产生的起因,经常成为发现新问题进而改良决策的契机。

在上图中,离群点(outlier)跟其余观测点的偏离十分大。留神,离群点是异样的数据点,然而不肯定是谬误的数据点。

2.1 离群点检测

数据分析的数学根底

(1)描述性分析方法

在数据处理过程中,能够对数据做一个描述性剖析,进而查看哪些数据是不合理的。罕用的统计量是最大值和最小值,用来判断变量的取值是否超出了正当的范畴。例如,客户年龄的最大值是 199,该值存在异样。

(2)Z-Score 办法

[1] 3σ 准则

在介绍 Z -score 办法之前,先理解一下 3σ 准则——如果数据遵从正态分布,在 3σ 准则下,异样值被定义为『一组测定值中,与平均值的偏差超过三倍标准差的值』。

在正态分布下,间隔平均值 3σ 之外的值呈现的概率为 P(|x-μ|>3σ)<=0.003,属于极个别的小概率事件。在 3σ 准则下,如果观测值与平均值的差值超过 3 倍标准差,那么能够将其视为异样值。

[2] Z-Score

如果数据不遵从正态分布,则能够用『与平均值的间隔是标准差的多少倍』来形容,这个倍数就是 Z -scor。

Z-Score 以标准差(σ)为单位,去度量某一原始分数(X)偏离平均数(μ)的间隔。Z-Score 须要依据教训和理论状况来决定,通常把远离标准差 3 倍间隔以上的数据点视为离群点。

Python 代码的实现如下:

import numpy as np
import pandas as pd

def detect_outliers(data,threshold=3):
    mean_d = np.mean(data)
    std_d = np.std(data)
    outliers = []

    for y in data_d:
        z_score= (y - mean_d)/std_d 
        if np.abs(z_score) > threshold:
            outliers.append(y)
    return outliers

(3)IQR 异样检测

四分位点内距(Inter-Quartile Range,IQR),是指在第 75 个百分点与第 25 个百分点的差值,或者说,上四分位数与下四分位数之间的差。

IQR 是统计扩散水平的一个度量,扩散水平通过须要借助箱线图(Box Plot)来察看。通常把小于 Q1-1.5_IQR 或者大于 Q3+1.5_IQR 的数据点视作离群点。

箱线图能够直观地看出数据集的以下重要个性:

  • 核心地位 :中位数所在的地位就是数据集的核心,从核心地位向上或向下看,能够看出数据的歪斜水平。
  • 分布水平 :箱线图分为多个区间,区间较短时,示意落在该区间的点较集中;
  • 对称性 :如果中位数位于箱子的两头地位,那么数据分布较为对称;如果极值离中位数的间隔较大,那么示意数据分布歪斜。
  • 离群点 :离群点散布在箱线图的高低边缘之外。

应用 Python 实现,参数 sr 是 Series 类型的变量:

def detect_outliers(sr):
    q1 = sr.quantile(0.25)
    q3 = sr.quantile(0.75)
    iqr = q3-q1 #Interquartile range
    fence_low  = q1-1.5*iqr
    fence_high = q3+1.5*iqr
    outliers = sr.loc[(sr < fence_low) | (sr > fence_high)]
    return outliers

2.2 异样值解决

在数据处理时,异样值的解决办法,需视具体情况而定。有时,异样值也可能是失常的值,只不过异样的大或小,所以,很多状况下,要先剖析异样值呈现的可能起因,再判断如何解决异样值。解决的异样值的罕用办法有:

  • 删除含有异样值的记录。
  • 插补,把异样值视为缺失值,应用缺失值的解决办法进行解决,益处是利用现有数据对异样值进行替换,或插补。
  • 不解决,间接在含有异样值的数据集上进行数据分析。

三、缺失值的解决

不是所有的数据都是残缺的,有些观测值可能会缺失。对于缺失值,通常的解决形式是删除缺失值所在的数据行、填充缺失值、插补缺失值。

材料与代码下载

本教程系列的代码能够在 ShowMeAI 对应的 github 中下载,可本地 python 环境运行,能拜访 Google 的宝宝也能够间接借助 google colab 一键运行与交互操作学习哦!

本系列教程波及的速查表能够在以下地址下载获取:

  • Pandas 速查表
  • Matplotlib 速查表
  • Seaborn 速查表

拓展参考资料

  • Pandas 可视化教程
  • Seaborn 官网教程

ShowMeAI 相干文章举荐

  • 数据分析介绍
  • 数据分析思维
  • 数据分析的数学根底
  • 业务认知与数据初探
  • 数据荡涤与预处理
  • 业务剖析与数据挖掘
  • 数据分析工具地图
  • 统计与数据科学计算工具库 Numpy 介绍
  • Numpy 与 1 维数组操作
  • Numpy 与 2 维数组操作
  • Numpy 与高维数组操作
  • 数据分析工具库 Pandas 介绍
  • 图解 Pandas 外围操作函数大全
  • 图解 Pandas 数据变换高级函数
  • Pandas 数据分组与操作
  • 数据可视化准则与办法
  • 基于 Pandas 的数据可视化
  • seaborn 工具与数据可视化

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

退出移动版