EDA
2020-03-24 本文已影响0人
SKIIoooJyl
常用数据分析库:
- 数据:pandas,numpy,scipy
- 可视化:matplotlib,seaborn
1.数据读取
- pandas:
read_csv,read_table,read_json… - numpy:
loadtxt,genfromtxt - scipy:
loadmat
2.数据总览
- describe()
每列统计量:个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值max - info()
每列数据总量、空值以及数据类型type
3.数据缺失与异常
isnull():判断是否为空
sum():累加
4.预测值分布
seaborn
- displot
参数设置:
bins:设置举行图数量
hist:控制显示条形图
kde:控制显示核密度估计图
rug:控制显示观测的小细条
fit:控制拟合的参数分布图形
1)总体分布
更改fit的参数绘制不同的分布曲线:
![](https://img.haomeiwen.com/i11628015/557eebaefff69315.png)
![](https://img.haomeiwen.com/i11628015/f184f1328ee3ec9c.png)
![](https://img.haomeiwen.com/i11628015/47e49ccbbe6dee8a.png)
显而易见,误解约翰逊分布拟合得最好。
2)偏度(Skewness)和峰度(Kurtosis)
一般与正态分布作比较,正太分布的偏度与峰度均看成0。
- 偏度(Skewness):对称性
由三阶中心矩计算而来 - 峰度(Kurtosis):尖锐程度
由四阶标准矩计算而来
5.特征分析
首先将标签分离出来,在这次比赛中是价格:
Y_train = Train_data['price']
数字特征
数值有大小可比较无特殊含义即为数字特征
1)相关性分析
计算相关系数:corr()
![](https://img.haomeiwen.com/i11628015/a53d2b69a012176f.png)
2)查看某些特征的偏度与峰值
偏度:skew()
峰值:kurt()
3)每个特征分布可视化
![](https://img.haomeiwen.com/i11628015/8a7cdd5c9ea17bfa.png)
4)特征间关系可视化
![](https://img.haomeiwen.com/i11628015/b19381ecd1f1e74c.png)
5)多变量互相回归关系可视化
![](https://img.haomeiwen.com/i11628015/e0626494dc162f9c.png)
类别特征
若为数值,该数值不可比较且代表一种含义即为类别特征
1)unique分布
nunique()
发现name和regionCode类别分别为99662和7905,分布过于稀疏。
2)箱型图可视化
箱型图是boxplot,先把不稀疏的几类画出来:
![](https://img.haomeiwen.com/i11628015/13bc465f94432e51.png)
箱型图也是大概看一个数量分布:箱子中间一杠代表中位数,两边分别表示上下四分位数。顶端两杠代表最大值和最小值。散落在外的点为异常值。
3)小提琴图可视化
小提琴图是violinplot,用于显示数据分布及其概率密度:
![](https://img.haomeiwen.com/i11628015/5126974e899bd8f4.png)
![](https://img.haomeiwen.com/i11628015/01ff8adb69efb960.png)
![](https://img.haomeiwen.com/i11628015/caa864470b7cb86a.png)
小提琴图是箱型图和密度图特征的结合:
中间黑色粗条部分就是箱型图的特征:表示四分位数范围,白点为中位数
形似小提琴的外缘部分则是密度图的特征:图宽表示频率,黑条延伸的细线表示95%置信区间
4)柱形图可视化
柱形图是barplot
![](https://img.haomeiwen.com/i11628015/b048beee2d92e071.png)
5)各类别频数可视化
频数可视化:countplot
![](https://img.haomeiwen.com/i11628015/e52f5c891720e63d.png)
6.数据报告
用pandas_profiling生成一个较为全面的可视化和数据报告(较为简单、方便) 最终打开html文件即可:
import pandas_profiling
pfr = pandas_profiling.ProfileReport(Train_data)
pfr.to_file("./example.html")