EDA(Exploratory Data Analysis)
对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。
文章目录
- EDA(Exploratory Data Analysis)
- 目录
- 1.导入训练集与测试集,并观察首尾信息
- 2.查看数据集统计量、数据类型
- 3.判断异常值、缺失值:使用isnull函数查看每列是否存在nan
- 4.查看数据的总体分布情况
- 5.查看skewness and kurtosis
- 6.查看预测值频数
- 7.生成数据报告
目录
加载分析所用的python库
#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
1.导入训练集与测试集,并观察首尾信息
使用head、tail函数查看首尾信息,shape函数查看行列数
Train_data = pd.read_csv('./train.csv')
Test_data = pd.read_csv('./testA.csv')
Train_data.head().append(Train_data.tail())#观察收尾数据
Train_data.shape#查看行列信息
查看testA信息
Test_data.head().append(Test_data.tail())
2.查看数据集统计量、数据类型
descirbe函数查看各列的统计量,查看数据的大致范围,同时可以根据最大最小值判断是否含有特殊值。
info函数查看各列的数据类型,判断是否有异常数据
Train_data.describe()
Test_data.describe()
Train_data.info
Test_data.info()
3.判断异常值、缺失值:使用isnull函数查看每列是否存在nan
Train_data.isnull().sum()
Test_data.isnull().sum()
4.查看数据的总体分布情况
代码使用了seaborn库,Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装。
核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法
seaborn库的displot()函数集合了matplotlib的hist()#直方图函数与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。具体用法如下:
seaborn.distplot(a,bins=None,hist=True,kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
通过hist和kde参数调节是否显示直方图及核密度估计(默认hist,kde均为True)
fit参数控制拟合的参数分布图形,能够直观地评估它与观察数据的对应关系
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')
#fit=norm拟合表准的正态分布(即图中黑色线)
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
#fit=lognorm拟合对数正态分布(即图中黑色线)
sns.distplot(y, kde=False, fit=st.lognorm)
5.查看skewness and kurtosis
偏度(skewness),是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。偏度定义中包括正态分布(偏度=0),右偏分布(也叫正偏分布,其偏度>0),左偏分布(也叫负偏分布,其偏度<0)。(衡量偏离正态的程度)
峰度(peakedness;kurtosis)又称峰态系数。表征概率密度分布曲线在平均值处峰值高低的特征数。直观看来,峰度反映了峰部的尖度。
一般地:正态分布的峰度(系数)为常数3,均匀分布的峰度(系数)为常数1.8
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')
6.查看预测值频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()
7.生成数据报告
import pandas_profiling
pfr = pandas_profiling.ProfileReport(Train_data)
pfr.to_file("./example.html")