1、目标
EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结并打卡。
2、内容介绍
1、载入各种数据科学以及可视化库:
数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon;
2、载入数据:
载入训练集和测试集;
简略观察数据(head()+shape);
3、数据总览:
通过describe()来熟悉数据的相关统计量
通过info()来熟悉数据类型
4、判断数据缺失和异常
查看每列的存在nan情况
异常值检测
5、了解预测值的分布
总体分布概况
查看skewness and kurtosis
查看预测值的具体频数
3、代码示例
3.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
#导入训练集train.csv
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Train_data = pd.read_csv('./train.csv')
#导入测试集testA.csv
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Test_data = pd.read_csv('./testA.csv')
#观察Train首尾数据
Train_data.head().append(Train_data.tail())
#观察train数据集的行列信息
Train_data.shape
#观察Test首尾数据
Test_data.head().append(Test_data.tail())
#观察Test数据集的行列信息
Test_data.shape
#获取train数据的相关统计量
Train_data.describe()
#获取train数据类型
Train_data.info()
#获取testA数据的相关统计量
Test_data.describe()
#获取testA数据类型
Test_data.info()
#查看每列的存在nan情况
data.isnull().sum()
#查看trian每列的存在nan情况
Train_data.isnull().sum()
#查看testA每列的存在nan情况
Test_data.isnull().sum()
#了解预测值的分布
Train_data['label']
Train_data['label'].value_counts()
## 1) 总体分布概况(无界约翰逊分布等)
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)
# 2)查看skewness and kurtosis
sns.distplot(Train_data['label']);
print("Skewness: %f" % Train_data['label'].skew())
print("Kurtosis: %f" % Train_data['label'].kurt())
Train_data.skew(), Train_data.kurt()
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')
## 3) 查看预测值的具体频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()
#用pandas_profiling生成数据报告
import pandas_profiling
pfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")
3.2 图表分析
明天再补充
1、首位数据表格展示
2、每列的存在nan情况折线图
3、预测值的分布柱形图
4、无界约翰逊分布
5、skewness and kurtosis
6、pandas_profiling生成数据报告图
4、总结
数据探索性分析是我们初步了解数据,熟悉数据为特征工程做准备的阶段,甚至很多时候EDA阶段提取出来的特征可以直接当作规则来用。可见EDA的重要性,这个阶段的主要工作还是借助于各个简单的统计量来对数据整体的了解,分析各个类型变量相互之间的关系,以及用合适的图形可视化出来直观观察。希望本节内容能给初学者带来帮助,更期待各位学习者对其中的不足提出建议。