一、了解EDA
首先什么是探索性数据分析?以及进行探索性数据分析的目的?
探索性数据分析是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。值得注意的是, EDA过程中是对原始数据的特征(统计特征、分布特征、相关性等)进行挖掘, 但是没有删除或构造任何特征。
探索性数据分析究竟是一个什么样的过程?
1、载入数据科学以及可视化库:
数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon;
2、载入数据集:
训练数据和测试数据,进行简单的数据观察,一般使用head和shape。3、数据总览:
通过describe()来熟悉数据的相关统计量;通过info()来熟悉数据类型。
4、判断数据缺失和异常
查看每列的存在nan情况;异常值检测。
5、了解预测值的分布
总体分布概况(无界约翰逊分布等);查看skewness and kurtosis;查看预测值的具体频数。
二、使用EDA
1、导入库
import warnings
warnings.filterwarnings('ignore')
import missingno as msno
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
2、载入数据集
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('testA.csv')
train_data.head().append(train_data.tail())
train_data.shape
3、数据总览
train_data.describe()
train_data.info
4、判断数据缺失值和异常
train_data.isnull().sum()
5、了解预测值分布情况
train_data['label']
train_data['label'].value_counts()
(1)总体分布概况:
import scipy.stats as st
y = train_data['label']
plt.subplot(121)
sns.distplot(y,rug=True,bins=20)
plt.subplot(122)
sns.distplot(y,kde=False,fit=st.norm)
plt.subplot(123)
sns.distplot(y,kde=False,fit=st.lognorm)
plt.show()
(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()
(3)查看预测值的具体频数
# 查看预测的具体频数
plt.hist(train_data['label'],orientation='vertical',histtype='bar',color='red')
plt.show()