数据的探索性分析(EDA)

一. 任务内容

  1. 载入各种数据科学以及可视化库:
    • 数据科学库 pandas、numpy、scipy;
    • 可视化库 matplotlib、seabon;
    • 其他;
  2. 载入数据:
    • 载入训练集和测试集;
    • 简略观察数据(head()+shape);
  3. 数据总览:
    • 通过describe()来熟悉数据的相关统计量
    • 通过info()来熟悉数据类型
  4. 判断数据缺失和异常
    • 查看每列的存在nan情况
    • 异常值检测
  5. 了解预测值的分布
    • 总体分布概况(无界约翰逊分布等)
    • 查看skewness and kurtosis
    • 查看预测值的具体频数
  6. 特征分为类别特征和数字特征,并对类别特征查7. 看unique分布
    • 数字特征分析
    • 相关性分析
    • 查看几个特征得 偏度和峰值
    • 每个数字特征得分布可视化
    • 数字特征相互之间的关系可视化
    • 多变量互相回归关系可视化
  7. 类型特征分析
    • unique分布
    • 类别特征箱形图可视化
    • 类别特征的小提琴图可视化
    • 类别特征的柱形图可视化类别
    • 特征的每个类别频数可视化(count_plot)
  8. 用pandas_profiling生成数据报告

以上内容可参考天池文章

二. 一些知识点

  1. 偏度(Skewness)
    偏度是用来度量随机变量概率分布的不对称性。
    偏度<0时,概率分布图左偏。
    偏度=0时,表示数据均匀分布在平均值两侧,但不一定是对称分布。
    偏度>0时,概率分布图右偏。

  2. 峰度(Kurtosis)
    峰度可以用来度量随机变量概率分布的陡峭程度。
    峰度的取值范围为[1, +∞),完全服从正态分布的数据的峰度值为3,峰度值越大,概率分布图越高、越尖,峰度值越小,越矮胖。
    通常将峰度值减去3,也被称为超值峰度(Excess Kurtosis),这样正态分布的峰度值等于0,当峰度值>0,则表示该数据分布与正态分布相比较为高尖,当峰度值<0,则表示该数据分布与正态分布相比较为矮胖。

三、Tips

  1. 查看数据缺少值
    train_data.isnull().sum()
    
  2. NaN可视化
    msno.matrix(Train_data.sample(250))
    
  3. 数据分布情况
    包括:无界约翰逊分布、正态分布、对数分布
    import scipy.stats as st
    y = Train_data['price']
    plt.figure(1); plt.title('Johnson SU')
    sns.distplot(y, kde=False, 
    fit=st.johnsonsu)
    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)
    
image.png
  1. 相关性可视化分析
    相关性可以用sns包中heatmap、barplot实现数据之间的相关性;可以使用 sns.pairplot观察成对变量之间的分布情况。
    heatmap:
    f , ax = plt.subplots(figsize = (7, 7))
    plt.title('Correlation of Numeric Features 
    with Price',y=1,size=16)
    sns.heatmap(correlation,square = True,  
    vmax=0.8)
    
image.png

pairplot:

sns.set()
columns = ['price', 'v_12', 'v_8' , 'v_0',       'power', 'v_5',  'v_2', 'v_6', 'v_1', 'v_14']
sns.pairplot(Train_data[columns],size = 2 ,kind ='scatter',diag_kind='kde')
plt.show()
image.png

你可能感兴趣的:(数据的探索性分析(EDA))