2020-10-06结构化数据的探索性分析

使用Pandas进行数据进行结构化数据的分析。

1. 文本数据的正则化

原始的数据如下图左,数据列名的格式比较复杂,可以看出有四种情况:
* 英文+\n+中文
* 英文+\u2028+中文
* 英文+\n+英文
* 英文
需要稍微进行一下处理便于后面的分析,有中文的保留中文部分,'ALF\nALF'变成'ALF','PVD'保持不变。主要使用正则表达式进行匹配。修改后的内容如下图右。

!pip install regex

## 导入需要的库
import regex as re
## 原始列名列表
col_names=list(data.columns)
col=[]
for i in range(len(col_names)):
    if re.findall(r"\u2028(.+)",col_names[i])!=[]:
        col.append(re.findall(r"\u2028(.+)",col_names[i])[0])
    elif re.findall(r"\n(.+)",col_names[i])!=[]:
        col.append(re.findall(r"\n(.+)",col_names[i])[0])
    else:
        col.append(col_names[i])
## 处理后的列名列表
col

2. 数据预处理 - 去除缺省值

## 删除缺失值
data=data.dropna(axis=0,how='any')   ##axis=0表示行,axis=1表示列
## 再次查看
data.info()

3. 数据可视化

3.1 绘制散点图

对于不同的ALF针对好胆固醇和坏胆固醇绘制散点图

## 绘制散点图
plt.scatter(data[data.ALF==0]['好胆固醇'],data[data.ALF==0]['坏胆固醇'],label='ALF=0')    ##ALF=0
plt.scatter(data[data.ALF==1]['好胆固醇'],data[data.ALF==1]['坏胆固醇'],label='ALF=1')    ##ALF=1
plt.xlabel('好胆固醇')     ##横轴标签
plt.ylabel('坏胆固醇')     ##纵轴标签
plt.legend()     ##图例
plt.show()     ##展示

3.2 绘制条形图

频率统计。

data['区域'].value_counts()

为了绘制并列条形图,需要先将DataFrame中的数据提取出来,x表示横坐标,共4类,分别标记为1,2,3,4,y1表示ALF=0的各个区域人数,y2表示ALF=1的各个区域人数。

## 导入需要的库
import numpy as np
## 提取数据
x=np.array([1,2,3,4])
y1=[]
y2=[]
for i in data['区域'].unique():
    y1.append(data[(data['ALF']==0) & (data['区域']==i)]['区域'].count())
    y2.append(data[(data['ALF']==1) & (data['区域']==i)]['区域'].count())

## 绘制并列条形图
plt.bar(x,y1,width=0.3,label="ALF=0")
plt.bar(x+0.3,y2,width=0.3,label="ALF=1")  #x+0.3相当于把每个柱子右移0.3
plt.xlabel('区域')
plt.ylabel('人数')
plt.xticks(x+0.15,data['区域'].unique())
plt.legend()

3.3 绘制直方图

## ALF=0
plt.hist(data[data.ALF==0]['体重指数'])
plt.show()

## ALF=1
plt.hist(data[data.ALF==1]['体重指数'])
plt.show()

3.4 箱形图

plt.boxplot([data[data.ALF==0]['总胆固醇'],data[data.ALF==1]['总胆固醇']],labels=[0,1])
plt.xlabel('ALF')
plt.ylabel('总胆固醇')
plt.show()

3.5 饼图

plt.pie(data['性别'].value_counts(),labels=['M','F'],autopct='%1.2f%%')
plt.show()

4. 常见统计信息

4.1 频数、均值、方差、分位数、最小值、最大值

## 查看总体信息
data.describe()

## 查看某个特征的相关统计信息
data['年龄'].describe()

## 偏度
data['年龄'].skew()

## 查看ALF的频率
data['ALF'].value_counts()

## 按ALF分组后查看基本信息
data.groupby('ALF').describe().unstack()

## 只查看某个变量的某个统计量
data.groupby('ALF')['年龄'].mean()  ##此处可改成count/median/min/max/std/quantile等等

## 生成列联表
pd.crosstab(data['ALF'],data['区域'],margins=True)

可以支持的统计量如下:

Image Name

5. 变量相关分析

## 计算相关系数
corrmat=data.corr()
corrmat


## 绘制相关系数图
cov = data.corr()
plt.figure(figsize=(15,10))
img = plt.matshow(cov,cmap=plt.cm.winter,fignum=0)
plt.colorbar(img, ticks=[-1,0,1])
plt.xticks(np.arange(len(data.keys())), data.keys(),rotation='90')
plt.yticks(np.arange(len(data.keys())), data.keys())
plt.show()

 

## 提取与ALF的相关系数的绝对值最大的前10个特征
k=10
cols = corrmat.nlargest(k, 'ALF')['ALF'].index
cols




## 散点图判断多变量之间的关系
col=['年龄','身高','体重指数','最高血压','总胆固醇']    ##指定变量
_ = pd.plotting.scatter_matrix(data[col],figsize=(15,10),
                           diagonal='kde',   ##可选'hist'或'kde'
                           alpha = 0.8,
                           range_padding=0.1)

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
探索性数据分析(EDA) 探索性数据分析(EDA)全文共32页,当前为第1页。 EDA的提出 1977年,美国统计学家John W. Tukey出版了《探索性数据分析》一书,引起了统计学界的关注。该书指出了统计建模应该结合数据的真实分布情况,对数据进行分析,而不应该从理论分布假定出发去构建模型。EDA重新提出了描述统计在数据分析中的重要性,它为统计学指明了新的发展方向——和数据相结合。 探索性数据分析(EDA)全文共32页,当前为第2页。 EDA的定义 探索性数据分析是对调查、观测所得到的一些初步的杂乱无章的数据,在尽量少的先验假定下进行处理,通过作图、制表等形式和方程拟合、计算某些特征量等手段,探索数据的结构和规律的一种数据分析方法。 探索性数据分析(EDA)全文共32页,当前为第3页。 EDA的主要特点 研究从原始数据入手,完全以实际数据为依据 传统的统计分析方法通常是先假定数据服从某种分布,然后用适应这种分布的模型进行分析和预测。但实际上,多数数据(尤其是实验数据)并不能保证满足假定的理论分布。因此,传统方法的统计结果常常并不令人满意,使用上受到很大的局限。 探索性数据分析(EDA)全文共32页,当前为第4页。 分析方法从实际出发,不以某种理论为依据 传统的统计分析方法是以概率论为理论基础,对各种参数的估计、检验和预测给出具有一定精度的度量方法和度量值。而EDA在探索数据内在的数量特征、数量关系和数量变化时,什么方法可以达到这一目的就采用什么方法,灵活对待,灵活处理。方法的选择完全取决于数据的特点和研究的目的。 探索性数据分析(EDA)全文共32页,当前为第5页。 分析工具简单直观,更易于普及 传统的统计分析方法都比较抽象和深奥,一般人难于掌握,EDA则更强调直观及数据可视化,使分析者能一目了然地看出数据中隐含的有价值的信息,显示出其遵循的普遍规律及与众不同的突出特点,促进发现规律,得到启迪,满足分析者的多方面要求,这也是EDA对于数据分析的的主要贡献。 探索性数据分析(EDA)全文共32页,当前为第6页。 数据类型 结构化数据: 二分类型:如性别 多分类型:如职业 有序类型:如收入水平 数值类型:如年龄、收入 非结构化数据: 文本 音频 视频 图片 探索性数据分析(EDA)全文共32页,当前为第7页。 单变量分析 频率和众数:针对于无序的分类的变量 百分位数:针对于有序的或连续的变量 位置度量:均值和中位数 散布度量:方差、标准差、偏度、峰度、四分位数极差 探索性数据分析(EDA)全文共32页,当前为第8页。 偏度和峰度 偏度的计算公式: 偏度是刻画数据对称性的指标。关于均值对称的数据其偏度为0,呈现右偏的数据偏度大于0,呈现左偏的数据偏度小于0。 探索性数据分析(EDA)全文共32页,当前为第9页。 峰度的计算公式: 峰度是刻画分布状态的陡缓程度的指标。峰度等于0,分布呈正态,峰度大于0,分布呈尖峰状态,峰度小于0,分布呈平峰状态。 探索性数据分析(EDA)全文共32页,当前为第10页。 四分位数极差 四分位数极差定义: 判断数据异常点的方法:称 为数据的下、上截断点。大于上截断点或小于下截断点的数据均为异常点。 探索性数据分析(EDA)全文共32页,当前为第11页。 直方图 对于分类属性,每个值在一个箱中。对于连续属性,将值域划分成箱(通常是等宽的)并对每个箱中的值计数。 正常型直方图: 它的形状是中间高 两边低,左右近似对称。 探索性数据分析(EDA)全文共32页,当前为第12页。 双峰型直方图: 当直方图中出现了两个峰, 这是由于观测值来自两个总 体、两个分布的数据混合在 一起造成的。 平顶型直方图: 当直方图没有突出的顶峰, 呈平顶型 。形成的原因: 1.多个总体多个分布混合在 一起;2.变量在某个区间 均匀变化。 探索性数据分析(EDA)全文共32页,当前为第13页。 偏态型直方图: 偏态型直方图是指图的 顶峰有时向左偏、 有时向右偏。 孤岛型直方图: 在直方图旁边有孤立的小岛出现。 探索性数据分析(EDA)全文共32页,当前为第14页。 直方图作用 数据是否接近对称 数据分散性如何 数据是否有异常值 数据中是否有间隙 探索性数据分析(EDA)全文共32页,当前为第15页。 箱线图 箱线图是一种显示 一维数值属性值分布 的图形。 它有6个数据节点: 上边缘、上四分位数 中位数、下四分位数 下边缘、异常值。 箱线图的作用: 识别异常值;判断数据的偏态;比较几批数据的形状。 探索性数据分析(EDA)全文共32页,当前为第16页。 正态性检验 正态分布是许多检验的基础,比如F检验,t检验,卡方检验等。因此,对于一个样本是否来自正态总体的检验是至关重要的。 图示法 直方图:是否以钟型分布 箱线图:观测矩形位置和 中

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值