HeartBeatClassification是天池比赛的一个项目,记录学习过程。
Task 2 数据分析
数据分析主要是在拿到数据之后,对数据的结构,质量,分布做基本的了解,方便后续工作的展开,做到心中对数据大致有一个把握。
2.3.1载入各种数据科学和可视化库
#coding:utf-8
# 导入warning包,利用过滤器来实现忽略警告语句
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import missingno as msno#缺失数据可视化
from pandas import DataFrame#用来将其他数据形式转换为dateframe
import matplotlib.pyplot as plt
import seaborn as sns#画图
import numpy as np#支持大量维数数组和矩阵运算
2.3.2载入训练集和测试集
from pandas import Series
Train_data=pd.read_csv('Train.csv')
Test_data=pd.read_csv('TestA.csv')
Train_data.head().append(Train_data.tail())
# 观察Train_data的行列信息
Train_data.shape
(100000,3)
# describe()可以得到数据的大致情况,观察是否有异常值
Train_data.describe()
可以得到数据的的平均数,中位数,四分位数、最大最小等,若某些列中出现-1或9999999,这是NAN的另一个名字。
Train_data.info()
info()函数可以得到列的基本信息
2.3.4判断数据缺失和异常
Train_data.isnull().sum()
2.3.5了解预测值的分布
Train_data['label'].value_counts()
#1)总体分布概况(无界约翰逊分布等)
无界约翰逊分布是约翰逊分布族中的一个,可以将非正态分布转化为正态分布
#1)总体分布概况(无界约翰逊分布等)
# 无界约翰逊分布:是约翰逊分布族的其中一个,可以将非正态分布转化为正态分布
import scipy.stats as st
y=Train_data['label']
plt.figure(1)
plt.title('Default')
sns.distplot(y,rug=True,bins=20)#rug:要不要显示数值的小竖条
plt.figure(2)
plt.title('Normal')
sns.distplot(y,kde=False,fit=st.norm)#直方图hist和核密度图kde,fit拟合标准正态分布
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())
sns.distplot(Train_data.kurt(),color='orange',axlabel='Kurtness')
#3)查看预测值的具体频数
plt.hist(Train_data['label'],orientation='vertical',histtype='bar',color='red')
plt.show()