探索性数据分析(EDA)

  • 本篇博客主要介绍的是探索性数据分析以及其Python实现
  • 本篇博客内容基于阿里云天池竞赛:心跳信号分类预测写就,着重说明了其探索性数据分析的部分
  • 学习交流请联系 obito0401@163.com

含义

探索性数据分析(Exploratory Data Analysis,EDA),是指对已有的数据(特别是调查或者观测得来的原始数据)在尽量少的先验假定条件下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。
EDA的价值主要在于了解熟悉数据集,对数据集进行验证来确定所获得的数据集可以用于接下来的机器学习或者深度学习等

内容

载入数据处理以及可视化库

  • 数据处理:numpy、pandas、scipy
  • 可视化:matplotlib、seabon
import numpy as np
import pandas as pd
import scipy 
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno # 可视化缺失值
import warnings
warnings.filterwarnings("ignore") # 过滤警告信息

载入数据

  • 加载训练集和测试集
data_train = pd.read_csv("train.csv")
data_test = pd.read_csv("testA.csv")
  • 简略观察数据(head()、tail()、shape)
# 观察数据集首尾信息
data_train.head().append(data_train.tail()) 
data_test.head().append(data_test.tail())
# 观察数据集大小
data_train.shape
data_test.shape

在这里插入图片描述
在这里插入图片描述

数据总览

  • 通过describe()熟悉数据的相关统计量
# 对数据集进行描述统计
data_train.describe()

在这里插入图片描述

  • 通过info()熟悉数据类型
# 获取数据集的数据类型
data_train.info()
data_test.info()

在这里插入图片描述

判断数据缺失和异常

  • 查看每列是否存在NA值
# 查看数据集每列的缺失情况
data_train.isnull().sum()
data_test.isnull().sum()

在这里插入图片描述

  • 异常值检测
    异常值的检测方式一般有以下三种
    • 根据业务经验划定不同指标的正常范围,超过该范围的值算作异常值
    • 通过绘制箱线图,把大于(小于)箱线图上边缘(下边缘)的点称为异常值
      在这里插入图片描述
    • 如果数据服从正态分布,则可以利用3 σ \sigma σ原则:如果一个数值与平均值之间的偏差超过3倍标准差,那么我们就认为这个值是异常值
      在这里插入图片描述

了解数据分布情况

  • 总体分布概况
import scipy.stats as st
y = data_train["label"]
plt.figure(1); plt.title('Johnson SU') # 无界约翰逊分布
sns.distplot(y, rug=False,kde=True, fit=st.johnsonsu)  # rug为地毯图,kde为高斯核函数密度估计
plt.figure(2);plt.title('Normal') # 正态分布
sns.distplot(y,rug=True,kde=False,fit=st.norm)
plt.figure(3);plt.title('Log Normal') # 对数正态分布
sns.distplot(y,rug=True,kde=True,fit=st.lognorm);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出,总体数据满足对数正态分布

  • 偏度和峰度
    • 偏度(skewness)用于判断数据分布的形状是否对称以及偏斜的程度

      • 如果一组数据分布是对称的,则偏度(偏态系数)等于0
      • 如果偏度在大于1或小于-1,则认为是高度偏态分布
      • 如果偏度在 0.5 ∼ 1 0.5\sim1 0.51 − 1 ∼ − 0.5 -1\sim-0.5 10.5之间,则认为是中等偏态分布
      • 偏度越接近0,则偏斜程度越小
        在这里插入图片描述
    • 峰度(kurtosis)用于判断数据分布的扁平程度

      • 峰态通常是与标准正态分布相比较而言的
      • 如果一组数据服从标准正态分布,则峰度(峰态系数)的值等于0
      • 如果峰度的值大于0,则为尖峰分布,数据的分布越集中
      • 如果峰度的值小于0,则为扁平分布,数据的分布越分散
        在这里插入图片描述
data_train.skew() # 查看偏度
data_train.kurt() # 查看峰度
sns.distplot(data_train.kurt(),axlabel="Kurtness")

在这里插入图片描述
在这里插入图片描述
可以看出训练集的数据是右偏扁平分布

  • 具体频数
data_train["label"].value_counts()
plt.hist(data_train['label'],orientation="vertical")
plt.show()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值