datawhale数据挖掘心电图Task2

本文介绍了一次关于心电图数据挖掘的任务,重点在于探索性数据分析(EDA)。通过使用pandas、numpy、scipy等数据科学库和matplotlib、seaborn等可视化库,对数据进行载入、观察数据基本信息、识别缺失值和异常值。内容包括数据的总览、预测值的分布特性、skewness和kurtosis的分析,以及利用pandas_profiling生成详细的数据报告,以深入了解数据集和预测目标的关系。
摘要由CSDN通过智能技术生成

Exploratory Data Analysis

在弄清数据之前弄清楚手中的数据.

探索性数据分析是指对数据进行初步调查,以发现模式,发现异常情况,检验假设并在汇总统计信息和图形表示的帮助下检查假设的关键过程。

价值主要在于熟悉数据集,了解数据集,
确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
了解变量间的相互关系以及变量与预测值之间的存在关系。

各种数据科学以及可视化库

数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon;

import warnings
#导入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

载入数据集

Train_data = pd.read_csv('./train.csv') # ...('./train.csv'; sep = ';') sep指数据之间的分隔符。
Test_data = pd.read_csv('./testA.csv')

观察数据初始信息

data.head().append(data.tail())——观察首尾数据
data.shape——观察数据集的行列信息

首尾数据

Train_data.head().append(Train_data.tail())  #默认值是5,也就是0-4行
Train_data.shape
##  >> (100000, 3)
## 也就是说数据集包含100000个观测值和3个特征(一个是数据本身)。

Test_data.shape
## >> (20000, 2)
## 也就是说数据集包含20000个观测值和2个特征。

养成看数据集的head()以及shape的习惯
如果对自己的pandas等操作不放心,建议执行一步看一下,这样会有效的方便你进行理解函数并进行操作

总览数据概况

data.describe()——获取数据的相关统计量
data.info()——获取数据类型

describe 有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值。
主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
describe
%50就是中位数

通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
知道列及其对应的数据类型以及查找它们是否包含空值
在这里插入图片描述

判断数据缺失和异常

data.isnull().sum()——查看每列的存在nan情况

Train_data.isnull().sum()
Test_data.isnull().sum()

了解预测值的分布

Train_data['label']
Train_data['label'].value_counts()
> 0.0    64327
> 3.0    17912
> 2.0    14199
> 1.0     3562
> Name: label, dtype: int64
## 大部分都集中在类别0, 类别2,3数据差不多,少部分在类别1。
Train_data.label.unique() 
>> array([0., 2., 3., 1.])  ##展现label的所有不同取值

总体分布概况(无界约翰逊分布等)

在seaborn中最简便查看单元分布的函数是distplot().该函数默认绘制直方图并拟合内核密度估计。通过调整参数可以分别绘制直方图,拟合内核密度图,地毯图等

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)

该函数结合了matplotlib中的 hist函数(自动计算一个默认的合适的bin大小)、seaborn的kdeplot()和rugplot()函数。它还可以拟合scipy.stats分布并在数据上绘制估计的PDF(概率分布函数)。

a:Series、1维数组或者列表。

观察数据。如果是具有name属性的Series对象,则该名称将用于标记数据轴。

bins

直方图bins(柱)的数目

hist

是否绘制(标准化)直方图.

kde

是否绘制高斯核密度估计图。

rug

是否在横轴上绘制观测值竖线。

fit

一个带有fit方法的对象,返回一个元组,该元组可以传递给pdf方法一个位置参数,该位置参数遵循一个值的网格用于评估pdf。

{hist, kde, rug, fit}_kws

底层绘图函数的关键字参数。

color

可以绘制除了拟合曲线之外所有内容的颜色。

vertical

如果为True,则观测值在y轴显示。

norm_hist

如果为True,则直方图的高度显示密度而不是计数。如果绘制KDE图或拟合密度,则默认为True。

axlabel

横轴的名称。如果为None,将尝试从a.name获取它;如果为False,则不设置标签。

label

图形相关组成部分的图例标签。

## 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)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)查看skewness and kurtosis

峰度(Kurtosis)与偏态(Skewness)就是量测数据正态分布特性的两个指标。
峰度衡量数据分布的平坦度(flatness)。尾部大的数据分布,其峰度值较大。正态分布的峰度值为3。正态分布(峰度值=3),厚尾(峰度值>3),瘦尾(峰度值<3)
偏态量度对称性。0说明是最完美的对称性,正态分布的偏态就是0。右偏态为正,表明平均值大于中位数。反之为左偏态,为负。

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()
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')

在这里插入图片描述
在这里插入图片描述

3) 查看预测值的具体频数

plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()

在这里插入图片描述

用pandas_profiling生成数据报告

import pandas_profiling
pfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值