目录
EDA 目标一、内容介绍1.1 载入各种数据科学以及可视化库1.2 载入数据1.3 数据总览1.4 判断数据缺失和异常1.5 了解预测值的分布二、代码示例2.1 载入各种数据科学与可视化库2.2 载入训练集和测试集2.3 总览数据概况2.4 判断数据缺失和异常2.5 了解预测值的分布运行结果的 HTML 页面下载EDA 目标
EDA 的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用;当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系;引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠;完成对于数据的探索性分析,并对与数据进行一些图表或者文字总结。一、内容介绍
1.1 载入各种数据科学以及可视化库
数据科学库:pandas、numpy、scipy;可视化库:matplotlib、seabon;1.2 载入数据
载入训练集和测试集;简略观察数据(head()+shape);1.3 数据总览
通过 describe() 来熟悉数据的相关统计量;通过 info() 来熟悉数据类型;1.4 判断数据缺失和异常
查看每列的存在 nan 情况;异常值检验;1.5 了解预测值的分布
总体分布概况;查看 skewness and kurtosis;查看预测值的具体频数;二、代码示例
2.1 载入各种数据科学与可视化库
# In[1]:载入各种数据科学与可视化库#导入warnings包,利用过滤器来实现忽略警告语句。import warningswarnings.filterwarnings('ignore')import missingno as msnoimport pandas as pdfrom pandas import DataFrameimport matplotlib.pyplot as plt import seaborn as snsimport numpy as np
2.2 载入训练集和测试集
# In[2]:导入训练集train.csvimport pandas as pdfrom pandas import DataFrame, Seriesimport matplotlib.pyplot as pltTrain_data = pd.read_csv('D:/Cadabra_tools002/tianqi_file/train.csv')
# In[3]:导入测试集testA.csvimport pandas as pdfrom pandas import DataFrame, Seriesimport matplotlib.pyplot as plt Test_data = pd.read_csv('D:/Cadabra_tools002/tianqi_file/testA.csv')
所有特征集均脱敏感处理:
id - 心跳信号分配的唯一标识heartbeat_signals - 心跳信号序列label - 心跳信号类别(0、1、2、3)data.head().append(data.tail()) – 观察首尾数据data.shape – 观察数据集的行列信息
# In[4]:观察train首尾数据Train_data.head().append(Train_data.tail())
查看训练集的前 555 行和末尾 555 行
# In[5]:观察train数据集的行列信息Train_data.shape
# In[6]:观察testA首尾数据Test_data.head().append(Test_data.tail())
# In[7]:观察testA数据集的行列信息Test_data.shape
2.3 总览数据概况
describe 中有每列的统计量,个数 count、平均值 mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式;
info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
data.describe() – 获取数据的相关统计量
data.info() – 获取数据类型
# In[8]:获取train数据的相关统计量Train_data.describe()
# In[9]:获取train数据类型Train_data.info
# In[10]:获取testA数据的相关统计量Test_data.describe()
# In[11]:获取testA数据类型Test_data.info()
2.4 判断数据缺失和异常
data.isnull().sum() -- 查看每列的存在 nan 情况
# In[12]:查看trian每列的存在nan情况Train_data.isnull().sum()
# In[13]:查看testA每列的存在nan情况Test_data.isnull().sum()
2.5 了解预测值的分布
# In[14]:查看label属性Train_data['label']
# In[15]:统计label属性值Train_data['label'].value_counts()
# In[16]:## 1) 总体分布概况(无界约翰逊分布等)import scipy.stats as sty = 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)
数据的偏度和蜂度 – df.skew()、df.kurt()
我们一般会拿偏度和峰度来看数据的分布形态,而且一般会跟正态分布做比较,我们把正态分布的偏度和峰度都看做零。如果我们在实操中,算到偏度峰度不为0,即表明变量存在左偏右偏,或者是高顶平顶这么一说。
一、偏度(Skewness):
Definiton:是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,简单来说就是数据的不对称程度。
偏度是三阶中心距计算出来的。
(1)Skewness = 0 ,分布形态与正态分布偏度相同。
(2)Skewness > 0 ,正偏差数值较大,为正偏或右偏。长尾巴拖在右边,数据右端有较多的极端值。
(3)Skewness < 0 ,负偏差数值较大,为负偏或左偏。长尾巴拖在左边,数据左端有较多的极端值。
(4)数值的绝对值越大,表明数据分布越不对称,偏斜程度大。
计算公式:
Skewness=E[((x−E(x))/(D(x)))3]Skewness=E[((x-E(x))/(\sqrt{D(x)}))^3]Skewness=E[((x−E(x))/(D(x)))3]
∣Skewness∣| Skewness|∣Skewness∣ 越大,分布形态偏移程度越大。
二、峰度(Kurtosis):
Definition:偏度是描述某变量所有取值分布形态陡缓程度的统计量,简单来说就是数据分布顶的尖锐程度。
峰度是四阶标准矩计算出来的。
(1)Kurtosis=0 与正态分布的陡缓程度相同。
(2)Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
(3)Kurtosis<0 比正态分布的高峰来得平台——平顶峰
计算公式:
Kurtosis=E[((x−E(x))/((D(x))))4]−3Kurtosis=E[ ( (x-E(x))/ (\sqrt(D(x))) )^4 ]-3Kurtosis=E[((x−E(x))/((D(x))))4]−3
# In[17]:# 2)查看skewness(偏态) and kurtosis(峰度)sns.distplot(Train_data['label']);print("Skewness: %f" % Train_data['label'].skew())print("Kurtosis: %f" % Train_data['label'].kurt())
# In[18]:其他列的偏态和峰度Train_data.skew(), Train_data.kurt()
# In[19]:心跳信号类别的蜂度sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')
# In[20]:## 3) 查看预测值的具体频数plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')plt.show()
运行结果的 HTML 页面下载
源码及运行结果
如果觉得《数据挖掘-Task2:EDA-数据分析探索性分析》对你有帮助,请点赞、收藏,并留下你的观点哦!