EDA-数据探索性分析
1. EDA-数据探索性分析目标
- EDA价值主要是在于熟悉数据集,了解数据集的结构和和数据的分布情况
- 当了解数据集之后,我们可以进行下一步对数据集中个变量(数据标签)和数据之间相互关系以及变量与预测值之间的存在的关系
2.探索步骤
2.1 导入各数据科学机器可视化库
#coding:utf-8
#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')
import missingno as msno
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
2.2 整体总览
2.2.1 导入数据集后进行基础观察
- 通过df.shape(),df.head()等函数对数据集有个大致的认识
data.head().append(data.tail())
——观察首尾数据
data.shape
——观察数据集的行列信息
观察train、testA
首尾数据(实际观察时,需要分开观察)
Train_data.head().append(Train_data.tail())
Test_data.head().append(Test_data.tail())
观察train、test
数据集行列信息(实际观察时,需要分开观察)
Train_data.shape
Test_data.shape
2.2.2 总览数据情况
- df.info(),df.describe()等函数对数据集有个总览
1.describe
中有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
2. info
通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
获取train
数据的相关统计量
Train_data.describe()
获取train
数据类型
Train_data.info
获取test
数据的相关统计量
Test_data.describe()
获取test
数据类型
Test_data.info
2.2.3 判断数据缺失和异常
data.isnull().sum()
——查看每列的存在nan情况
查看trian
每列的存在nan情况
Train_data.isnull().sum()
查看·testA·每列的存在nan情况
Test_data.isnull().sum()
2.3 了解预测值的分布
2.3.1 了解相关label个数和分布情况
import matplotlib.pyplot as plt
import seaborn as sns
sns.countplot(train['label'])
sns.countplot(train['label'])
Train_data['label'].value_counts()
0.0 64327
3.0 17912
2.0 14199
1.0 3562
Name: label, dtype: int64
2.3.2 总体分布概况
查看无界约翰逊分布等
import scipy.stats as st
y = Train_data['label']
plt.figure(1); plt.title('Default')
sns.distplot(y, rug=True, bins=20)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)
查看skewness and kurtosis
sns.distplot(Train_data['label']);
print("Skewness: %f" % Train_data['label'].skew())
print("Kurtosis: %f" % Train_data['label'].kurt())
Skewness: 0.871005
Kurtosis: -1.009573
Train_data.skew(), Train_data.kurt()
(id 0.000000
label 0.871005
dtype: float64,
id -1.200000
label -1.009573
dtype: float64)
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')
查看预测值的具体频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()