探索性数据分析(Exploratory Data Analysis,EDA)
探索性数据分析(Exploratory Data Analysis,EDA)主要的工作是:对数据进行清洗,对数据进行描述(描述统计量,图表),查看数据的分布,比较数据之间的关系,培养对数据的直觉,对数据进行总结等。
探索性数据分析(EDA)与传统统计分析(Classical Analysis)的区别:
传统的统计分析方法通常是先假设样本服从某种分布,然后把数据套入假设模型再做分析。但由于多数数据并不能满足假设的分布,因此,传统统计分析结果常常不能让人满意。
探索性数据分析方法注重数据的真实分布,强调数据的可视化,使分析者能一目了然看出数据中隐含的规律,从而得到启发,以此帮助分析者找到适合数据的模型。“探索性”是指分析者对待解问题的理解会随着研究的深入不断变化。
应用传统统计分析方法的数据分析步骤:
- 提出问题 Problem => 准备数据 Data => 建模 Model => 分析 Analysis => 得出结论 Conclusions
应用探索性数据分析方法的数据分析步骤:
- 提出问题 Problem => 准备数据 Data => 分析 Analysis => 建模 Model => 得出结论 Conclusions
探索性数据分析通常有以下几个步骤:
A. 检查数据:
- 是否有缺失值?
- 是否有异常值?
- 是否有重复值?
- 样本是否均衡?
- 是否需要抽样?
- 变量是否需要转换?
- 是否需要增加新的特征?
注:数据类型分为数值型,类别型,文本型,时间序列等。这里主要指的是数值型(定量数据)和类别型(定性数据),其中数值型又可以分为连续型和离散型。
B. 使用描述统计量和图表对数据进行描述:
1)连续变量:
常见的描述统计量:平均值,中位数,众数,最小值,最大值,四分位数,标准差等
图表:频数分布表(需进行分箱操作),直方图,箱线图(查看分布情况)

2)无序型离散变量:
常见的描述统计量:各个变量出现的频数和占比
图表:频数分布表(绝对频数,相对频数,百分数频数),柱形图,条形图,茎叶图,饼图
3)有序型离散变量:
常见的描述统计量:各个变量出现的频数和占比
图表:频数分布表,堆积柱形图,堆积条形图(比较大小)
C. 考察变量之间的关系:
1)连续变量和连续变量(Continuous & Continuous):
对于连续变量与连续变量之间的关系,可以通过散点图进行查看。对于多个连续变量,可使用散点图矩阵,相关系数矩阵,热图。

量化指标:皮尔逊相关系数(线性关系),互信息(非线性关系)
2)离散变量和离散变量(Discrete & Discrete):
对于离散变量与离散变量之间的关系,可以通过交叉分组表,复合柱形图,堆积柱形图,饼图进行查看。对于多个离散变量,可以使用网状图,通过各个要素之间是否有线条,以及线条的粗线来显示是否有关系以及关系的强弱。

量化指标:卡方独立性检验--->Cramer’s φ (Phi) or Cramer’s V
3)离散变量和连续变量(Discrete & Continuous):
对于离散变量和连续变量之间的关系,可以使用直方图,箱线图,小提琴图进行查看,将离散变量在图形中用不同的颜色显示,来直观地观察变量之间的关系。
量化指标:独立样本t检验中的t统计量和相应的p值(两个变量),单因素方差分析中的η²(三个变量及以上)
D. 其他
1)检查数据的正态性:直方图,箱线图,Q-Q图(Quantile-Quantile Plot )
直方图,箱线图:看图形是否对称
Q-Q图:比较数据的分位数与某个理论分布的分位数是否匹配
总结一下,如果要对数据集进行探索性分析:(以名字为data的数据集为例)
第一步,用pandas读取数据集,并显示前5行,看是否加载正确;
第二步,有必要时对列名重命名;
第三步,查看数据整体情况(行列数data.shape,数据类型data.dtypes,或者用data.info()同时查看这两项,用data.describe()查看连续变量的描述统计量);
第四步,处理缺失值,异常值,重复值问题(各列分别有多少缺失值data.apply(lambda x: sum(x.isnull()),axis=0),各行分别有多少缺失值data.apply(lambda x: sum(x.isnull()),axis=1),总共有多少行有缺失值
len(data.apply(lambda x: sum(x.isnull()),axis=1).nonzero()[0]),删除重复值data.drop_duplicates());
第五步,有必要时转换数据类型;
第六步,看是否需要添加新的特征;
第七步,确定分析思路,用思维导图画出来;
第八步,按照分析思路进行分析并画出图形;
第九步,总结分析结果;
附:
图形的选择:描述趋势使用折线图,描述数量使用柱状图(且必须从 0 开始),描述关系使用散点图,描述比例使用饼状图。

科学家经过 30 年的研究,发现人对位置、长度和角度的感知最敏锐,可以用来表示数量,其次是面积和密度,可表示顺序,对于颜色和形状的感知是最不精确的,只可用来区分类别。

参考:https://www.jianshu.com/p/2e590d306bd2
探索性数据分析(Exploratory Data Analysis,EDA)的更多相关文章
- 1.探索性数据分析(EDA,Exploratory Data Analysis)
一.数据探索 1.数据读取 遍历文件夹,读取文件夹下各个文件的名字:os.listdir() 方法:用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'.. ...
- 学习笔记之Data analysis
Data analysis - Wikipedia https://en.wikipedia.org/wiki/Data_analysis Data analysis is a process of ...
- python Pandas Profiling 一行代码EDA 探索性数据分析
文章大纲 1. 探索性数据分析 代码样例 效果 解决pandas profile 中文显示的问题 1. 探索性数据分析 数据的筛选.重组.结构化.预处理等都属于探索性数据分析的范畴,探索性数据分析是帮 ...
- How to use data analysis for machine learning (example, part 1)
In my last article, I stated that for practitioners (as opposed to theorists), the real prerequisite ...
- 探索性数据分析EDA综述
目录 1. 数据探索的步骤和准备 2. 缺失值处理 为什么需要处理缺失值 Why data has missing values? 缺失值处理的技术 3. 异常值检测和处理 What is an ou ...
- 深入浅出数据分析 Head First Data Analysis Code 数据与代码
<深入浅出数据分析>英文名为Head First Data Analysis Code, 这本书中提供了学习使用的数据和程序,原书链接由于某些原因不 能打开,这里在提供一个下载的链接.去下 ...
- 数据分析---《Python for Data Analysis》学习笔记【04】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【03】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【02】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
随机推荐
- N皇后问题的python实现
数据结构中常见的问题,最近复习到了,用python做一遍. # 检测(x,y)这个位置是否合法(不会被其他皇后攻击到) def is_attack(queue, x, y): for i in ran ...
- JAVA调用系统命令:python、shell等
实际项目开发场景中,可能会用到java项目调用系统命令的需求,如调用python或者shell脚本 可以参考如下例子,例子来源于ambari源码: \ambari\ambari-server\src\ ...
- jquery.pagination.js分页demo
公用jquery.pagination.js /** * This jQuery plugin displays pagination links inside the selected elemen ...
- python(生成器)
生成器 先从列表生成式说起 可以通过简单的式子,生成有规律的列表 如果把 [ ] 换为 ( ) 会发生什么呢? 看到 x 存的不再是列表,而是一个地址,而这个地址就是我们的生成器对象的地址 这东西有什 ...
- Jquery 跨Dom窗口操作
. 子窗口给父窗口元素赋值 function modifyTheme(id){ $("#parent_dom",window.parent.document).attr(" ...
- 【开发笔记】- 安装Git命令
1.查看linux版本信息: $ cat /etc/redhat-release 2.输入命令安装git: $ yum install git 3.等待下载,自动安装完毕,查看git版本 $ git ...
- js对象的深入理解(六)
一.对象的创建(四种模式)1.工厂模式工厂模式示例: function createPerson(name,age){ var obj = { name:name, age:age, sayName: ...
- Flask 基础总结回顾
1.Flask Request # from flask import request request.form # 获取FormData中的数据 request.args # 获取URL中的数据 r ...
- 记录axios在IOS上不能发送的问题
最近 遇到 了axios在IOS上无法发送的问题,测试 了两个 苹果 机,IOS10上不能发送,IOS12可以,百度了下,找到了解决方法.记录下吧 首先引入qs,这个安装axios也已经有了吧:然后在 ...
- java中的参数传递
Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递).所以在java方法中改变参数的值是不会改变原变量的值的,但为什么改变引用变量的属性值却可以呢?请看下面的解答. java中的数据类 ...