数据挖掘-Task2:EDA-数据分析探索性分析
目录
- 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 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
2.2 载入训练集和测试集
# In[2]:导入训练集train.csv
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Train_data = pd.read_csv('D:/Cadabra_tools002/tianqi_file/train.csv')
# In[3]:导入测试集testA.csv
import pandas as pd
from pandas import DataFrame, Series
import 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 st
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)
数据的偏度和蜂度 – 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-数据分析探索性分析相关推荐
- #数据挖掘--第1章:EDA数据探索性分析
#数据挖掘--第1章:EDA数据探索性分析 一.序言 二.EDA的意义 三.EDA的流程 一.序言 本系列博客面向初学者,只讲浅显易懂易操作的知识.包含:数据分析.特征工程.模型训练等通用流程.将 ...
- 2020-03-24打卡——Task2:数据的探索性分析(EDA)
2020-03-24打卡--Task2:数据的探索性分析(EDA) 用pandas_profiling生成数据报告:用pandas_profiling生成一个较为全面的可视化和数据报告(较为简单.方便 ...
- task2 EDA数据分析
目标 了解,验证数据集 了解变量关系,与预测值之间关系 数据处理.特征工程 数据探索性分析 EDA探索性数据分析 通过EDA可实现: 1. 得到数据的直观表现 2. 发现潜在的结构 3. 提取重要的 ...
- 数据分析——探索性分析
由Datawhale组织的数据分析学习分为三个章节: 1.数据加载,Pandas基础与探索性数据分析: 2.数据清洗及特征处理,数据重构,数据可视化: 3.模型搭建,模型评估. 本篇文章为数据分析第一 ...
- EDA(探索性数据分析)步骤及常用函数总结
csdn博客的第一次尝试– 总结一下两天以来对EDA的学习 主要来自于三个博客和一些官方文档: 1.1.探索性数据分析(EDA,Exploratory Data Analysis) 2.一文带你探索性 ...
- 如何在比赛和项目中培养一个好的探索性分析(EDA)思维 —— 翻译自kaggle一位有趣的分享者
文章目录 前言 1.So... 我们期待从中知道些什么 2.第一件事,分析"SalePrice" 3.SalePrice,她的身体和她的兴趣爱好 4.SalePrice与类别特征的 ...
- python实现二手汽车价格预测(一)初始数据探索性分析
python实现二手汽车价格预测(一)初始数据探索性分析 零基础入门数据挖掘的 EDA-数据探索性分析 部分,带你来了解数据,熟悉数据,和数据做朋友. 一.EDA目标 EDA的价值主要在于熟悉数据集, ...
- 数据的探索性分析(EDA)
数据的探索性分析(EDA) 1.EDA要做些什么 2.fork from Datawhale 零基础入门数据挖掘-Task2 数据分析 个人收获 (1)要养成看数据集的head()以及shape的习惯 ...
- 数据探索性分析_探索性数据分析
数据探索性分析 When we hear about Data science or Analytics , the first thing that comes to our mind is Mod ...
最新文章
- vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别
- java 日期及别的小技巧
- 信息学奥赛一本通(1063:最大跨度值)
- vue框架导入echarts第一个示例
- [转]MySQL游标特性
- SpringSecurity3.0.4的An AuthenticationManager is...
- 190308每日一句
- Python处理Excel文件(一)
- 解决svn报错 : The pristine text with checksum 'e006b124faa4ddf60d8773d1855e6bfa56145874' was not fou
- Flink On K8S终极实现方案
- 获取flickr网站上某个用户的所有图片url
- 配置Snappy压缩
- CAN总线和CANOpen协议栈总结
- 如何增加你微博的粉丝人数?微博推广20绝招
- AirDIsk产品第三方Samba同步工具
- 按键精灵--日志记录功能和释放附件功能
- 通证(token)是下一代互联网数字经济的关键——元道区块链对话之一
- 中关村往事——和瑞星王莘的午夜聊天
- 今日小程序推荐:熊猫签证-足不出户办签证
- Python版春节快乐虎年大吉代码
热门文章
- Elasticsearch从入门到放弃:分词器初印象
- 一张图进阶 RocketMQ - NameServer
- 7-2 求幂级数展开的部分和 (20分)
- 科学计算机eq7,HiPER Calc Pro(多功能科学计算器)
- 关于OLEDB导入Excel数据,产生科学计数法问题
- b站服务器的硬盘,B站崩了,只因服务器机房发生故障!
- 浅尝辄止 async/await
- 《Web前端开发技术(HTML+CSS+JavaScript)》题库附答案
- Filament 渲染引擎剖析 之 FrameGraph 2 动态构建渲染管线
- 串口IC卡读写器IC-07开发程序包(简单易用)