Task 02 探索性数据分析(EDA)
学习要求
- EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
- 当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
- 引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
- 完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结并打卡。
数据背景
https://tianchi.aliyun.com/competition/entrance/531883/information.(零基础入门数据挖掘-心跳信号分类预测)
数据载入
由于课程练习使用的是天池的实时在线数据分析工具,在开始之前需要安装两个库。
pandas库
- 数据分析工具
pip install pandas_profiling --user
missingno库
- 可视化缺失值
pip install missingno --user
导入数据科学库以及可视化库
--------------载入各种数据科学以及可视化库-----------
import warnings
warnings.filterwarnings('ignore')
import missingno as msno
import pandas as pd
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
------------------------------载入数据-------------------------
#'xinlv/train.csv'为数据存储路径
Train_data=pd.read_csv('xinlv/train.csv')
Test_data=pd.read_csv('xinlv/testA.csv')
-----------------------------总览数据-------------------------
观察训练数据head(),tail()
Train_data.head().append(Train_data.tail())
观察训练数据的shape
Train_data.shape
观察测试数据head(),tail()
Test_data.head().append(Test_data.tail())
观察测试数据的shape
describe():熟悉数据的相关统计量
- count:数量统计,此列共有多少有效值
- unipue:不同的值有多少个
- std:标准差
- min:最小值
- 25%:四分之一分位数
- 50%:二分之一分位数
- 75%:四分之三分位数
- max:最大值
- mean:均值
#训练数据
Train_data.describe()
#测试数据
Test_data.describe()
info():熟悉数据类型
通过info()来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常。
#训练数据
Train_data.info()
#测试数据
Test_data.info()
-------------------------缺失值和异常值----------------------
缺失值:查看每列的存在nan情况
#训练数据
Train_data.isnull().sum()
#测试数据
Test_data.isnull().sum()
查看训练数据集的标签
Train_data['label']
Train_data['label'].value_counts()
查看
import scipy.stats as st
import seaborn as sns
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)
Train_data.skew(),Train_data.kurt()
sns.distplot(Train_data.kurt(),color='orange',axlabel='Kurtness')
plt.hist(Train_data['label'],orientation='vertical',histtype='bar',color='red')
plt.show()
sns.distplot(Train_data['label'])
print('Skewness: %f' % Train_data['label'].skew())
print('Kurtosis: %f' % Train_data['label'].kurt())
生成example.html的文件
import pandas_profiling
data_train=Train_data
pfr=pandas_profiling.ProfileReport(data_train)
pfr.to_file('xinlv/example.html')