推荐 :一文读懂R中的探索性数据分析(附R代码)

作者:Pablo Casas翻译:蒋雨畅;校对:车前子;

本文约1500字,建议阅读7分钟

本文将通过介绍一个代码模板的四个基本步骤,来帮助您完成数据分析的初期探索。

 

探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。

 

简介


EDA由单变量(1个变量)和双变量(2个变量)分析组成。在这篇文章中,我们将回顾一些我们在案例分析中使用的功能:


  • 第1步:取得并了解数据;

  • 第2步:分析分类变量;

  • 第3步:分析数值变量;

  • 第4步:同时分析数值和分类变量。


基本EDA中的一些关键点:


  • 数据类型

  • 异常值

  • 缺失值

  • 数值和分类变量的分布(数字和图形的形式)


分析结果的类型


结果有两种类型:信息型操作型


  • 信息型:例如绘图或任何长变量概要,我们无法从中过滤数据,但它会立即为我们提供大量信息。大多数用于EDA阶段。

  • 操作型:这类结果可直接用于数据工作流(例如,选择缺失比例低于20%的变量)。最常用于数据准备阶段。


准备开始


如果您没有这些扩展包,请删除‘#’来导入:


# install.packages("tidyverse")

# install.packages("funModeling")

# install.packages("Hmisc")

funModeling已发布更新版本的Ago-1,请更新!

现在加载所需的程序包

library(funModeling) 

library(tidyverse) 

library(Hmisc)


tl; dr(代码)


使用以下函数一键运行本文中的所有函数:


basic_eda <- function(data)

{

  glimpse(data)

  df_status(data)

  freq(data) 

  profiling_num(data)

  plot_num(data)

  describe(data)

}


替换data为您的数据,然后就可以啦!


basic_eda(my_amazing_data)


创建示例数据:


使用heart_disease数据(来自funModeling包)。为了使本文容易理解,我们只选取四个变量。


data=heart_disease %>% select(age, max_heart_rate, thal, has_heart_disease)


第一步:了解数据


统计第一个例子中观测(行)和变量的数量,并使用head显示数据的前几行。


glimpse(data)

## Observations: 303

## Variables: 4

## $ age               <int> 63, 67, 67, 37, 41, 56, 62, 57, 63, 53, 57, ...

## $ max_heart_rate    <int> 150, 108, 129, 187, 172, 178, 160, 163, 147,...

## $ thal              <fct> 6, 3, 7, 3, 3, 3, 3, 3, 7, 7, 6, 3, 6, 7, 7,...

## $ has_heart_disease <fct> no, yes, yes, no, no, no, yes, no, yes, yes,...


获取有关数据类型,零值,无穷数和缺失值的统计信息:


df_status(data)

##            variable q_zeros p_zeros q_na p_na q_inf p_inf    type unique

## 1               age       0       0    0 0.00     0     0 integer     41

## 2    max_heart_rate       0       0    0 0.00     0     0 integer     91

## 3              thal       0       0    2 0.66     0     0  factor      3

## 4 has_heart_disease       0       0    0 0.00     0     0  factor      2


df_status会返回一个表格,因此很容易筛选出符合某些条件的变量,例如:


  • 有至少80%的非空值(p_na < 20)

  • 有少于50个唯一值(unique <= 50)


建议:


  • 所有变量都是正确的数据类型吗?

  • 有含有很多零或空值的变量吗?

  • 有高基数变量吗?


更多相关信息请浏览:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html


第二步:分析分类变量


freq 函数自动统计数据集中所有因子或字符变量:


freq(data)

 

640?wx_fmt=jpeg


##   thal frequency percentage cumulative_perc

## 1    3       166      54.79              55

## 2    7       117      38.61              93

## 3    6        18       5.94              99

## 4 <NA>         2       0.66             100

 

640?wx_fmt=jpeg


##   has_heart_disease frequency percentage cumulative_perc

## 1                no       164         54              54

## 2               yes       139         46             100

## [1] "Variables processed: thal, has_heart_disease"

 

建议:


  • 如果freq用于一个变量 -freq(data$variable),它会生成一个表格。这对于处理高基数变量(如邮政编码)非常有用。

  • 将图表以jpeg格式保存到当前目录中:

    freq(data, path_out = ".")

  • 分类变量的所有类别都有意义吗?

  • 有很多缺失值吗?

  • 经常检查绝对值和相对值。

更多相关信息请浏览:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html


第三步:分析数值变量


我们将看到:plot_num和profiling_num两个函数,它们都自动统计数据集中所有数值/整数变量:


1. 绘制图表


plot_num(data)

 

640?wx_fmt=jpeg


将图表导出为jpeg格式: 


plot_num(data, path_out = ".")


建议:


  • 试着找出极度偏态分布的变量。

  • 作图检查任何有异常值的变量。


更多相关信息请浏览:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html


2. 定量分析


profiling_num 自动统计所有数值型/整型变量:


data_prof = profiling_num(data)

##         variable mean std_dev variation_coef p_01 p_05 p_25 p_50 p_75 p_95

## 1            age   54       9           0.17   35   40   48   56   61   68

## 2 max_heart_rate  150      23           0.15   95  108  134  153  166  182

##   p_99 skewness kurtosis iqr        range_98     range_80

## 1   71    -0.21      2.5  13        [35, 71]     [42, 66]

## 2  192    -0.53      2.9  32 [95.02, 191.96] [116, 176.6]


建议:


  • 尝试根据其分布描述每个变量(对报告分析结果也很有用)。

  • 注意标准差很大的变量。

  • 选择您最熟悉的统计指标:data_prof %>% select(variable, variation_coef, range_98):variation_coef得到较大值可能提示异常值。range_98显示绝大部分数值的范围。

更多相关信息请浏览:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html


第四步:同时分析数值和分类变量


使用Hmisc包的describe。


library(Hmisc)

describe(data)

 

## data 

## 

##  4  Variables      303  Observations

## ---------------------------------------------------------------------------

## age 

##        n  missing distinct     Info     Mean      Gmd      .05      .10 

##      303        0       41    0.999    54.44     10.3       40       42 

##      .25      .50      .75      .90      .95 

##       48       56       61       66       68 

## 

## lowest : 29 34 35 37 38, highest: 70 71 74 76 77

## ---------------------------------------------------------------------------

## max_heart_rate 

##        n  missing distinct     Info     Mean      Gmd      .05      .10 

##      303        0       91        1    149.6    25.73    108.1    116.0 

##      .25      .50      .75      .90      .95 

##    133.5    153.0    166.0    176.6    181.9 

## 

## lowest :  71  88  90  95  96, highest: 190 192 194 195 202

## ---------------------------------------------------------------------------

## thal 

##        n  missing distinct 

##      301        2        3 

##                          

## Value         3    6    7

## Frequency   166   18  117

## Proportion 0.55 0.06 0.39

## ---------------------------------------------------------------------------

## has_heart_disease 

##        n  missing distinct 

##      303        0        2 

##                     

## Value        no  yes

## Frequency   164  139

## Proportion 0.54 0.46

## ---------------------------------------------------------------------------


这对于快速了解所有变量非常有用。但是当我们想要使用统计结果来改变我们的数据工作流时,这个函数不如freq和profiling_num好用。


建议:


  • 检查最小值和最大值(异常值)。

  • 检查分布(与之前相同)。


更多相关信息请浏览:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html


原文标题:

Exploratory Data Analysis in R (Introduction)

原文链接:

https://dzone.com/articles/exploratory-data-analysis-in-r-introduction 


译者简介:蒋雨畅,香港理工大学大三在读,主修地理信息,辅修计算机科学,目前在研究学习通过数据科学等方法探索城市与人类活动的关系。希望能认识更多对数据科学感兴趣的朋友,了解更多前沿知识,开拓自己的眼界。

「完」


本次转自:THU数据派 微信公众号;

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。

关联阅读

原创系列文章:

1:从0开始搭建自己的数据运营指标体系(概括篇)

2 :从0开始搭建自己的数据运营指标体系(定位篇)

3 :从0开始搭建自己的数据运营体系(业务理解篇)

4 :数据指标的构建流程与逻辑

5 :系列 :从数据指标到数据运营指标体系

6:   实战 :为自己的公号搭建一个数据运营指标体系

7:  从0开始搭建自己的数据运营指标体系(运营活动分析)

数据运营 关联文章阅读:  

运营入门,从0到1搭建数据分析知识体系    

推荐 :数据分析师与运营协作的9个好习惯

干货 :手把手教你搭建数据化用户运营体系

推荐 :最用心的运营数据指标解读

干货 : 如何构建数据运营指标体系

从零开始,构建数据化运营体系

干货 :解读产品、运营和数据三个基友关系

干货 :从0到1搭建数据运营体系

数据分析、数据产品 关联文章阅读:

干货 :数据分析团队的搭建和思考

关于用户画像那些事,看这一文章就够了

数据分析师必需具备的10种分析思维。

如何构建大数据层级体系,看这一文章就够了

干货 : 聚焦于用户行为分析的数据产品

如何构建大数据层级体系,看这一文章就够了

80%的运营注定了打杂?因为你没有搭建出一套有效的用户运营体系

从底层到应用,那些数据人的必备技能

读懂用户运营体系:用户分层和分群

做运营必须掌握的数据分析思维,你还敢说不会做数据分析

合作请加qq:365242293  


更多相关知识请回复:“ 月光宝盒 ”;

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值