0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何看懂R中的探索性数据分析(附R代码)

电子工程师 来源:未知 作者:易水寒 2018-11-25 10:52 次阅读

探索性数据分析(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 63, 67, 67, 37, 41, 56, 62, 57, 63, 53, 57, ...

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

## $ thal 6, 3, 7, 3, 3, 3, 3, 3, 7, 7, 6, 3, 6, 7, 7,...

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

## thal frequency percentage cumulative_perc

## 1 3 166 54.79 55

## 2 7 117 38.61 93

## 3 6 18 5.94 99

## 4 2 0.66 100

## 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 = ".")

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

有很多缺失值吗?

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

第三步:分析数值变量

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

1. 绘制图表

plot_num(data)

将图表导出为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显示绝大部分数值的范围。

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

使用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

推荐阅读

(点击标题可跳转阅读)

数据科学家需要知道的 5 个基本统计学概念

2 种数据科学编程中的思维模式,了解一下

数据科学领域,你该选 Python 还是 R ?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • eda
    eda
    +关注

    关注

    71

    文章

    2679

    浏览量

    172690
  • 代码
    +关注

    关注

    30

    文章

    4717

    浏览量

    68197
  • 数据分析
    +关注

    关注

    2

    文章

    1408

    浏览量

    33982

原文标题:一文读懂 R 中的探索性数据分析

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Mini案例(3)#R语言数据分析

    数据分析
    未来加油dz
    发布于 :2023年07月05日 00:28:21

    数据分析需要的技能

    将原始数据转换成方便实用的格式,是数据分析师必备基础能力,需要使用的工具有Excel、R语言以及python编程语言等;可视化报表是对创建和研究数据的视觉表现,方便业务快速
    发表于 04-10 15:59

    怎么有效学习Python数据分析

    的过程。对于新手,如何学好python,这些很关键:Part1:能掌握好Python关键代码以及Pandas、Numpy、Matplotlib、Seaborn这四个基本工具包,便能独立完成一些简单的数据分析
    发表于 06-28 15:18

    什么是探索性测试ET

    探索性测试ET(exploratory)是和ST(script based test)相比较而言的.笼统地说,ST就是有确定的步骤和预期目标的测试.探索性测试可以说是一种测试思维。它没有很多实际
    发表于 07-05 06:38

    数据分析与挖掘实战》总结及代码---chap3数据探索

    数据分析与挖掘实战》总结及代码练习---chap3 数据探索
    发表于 05-25 13:25

    R语言)风电机组运行数据分析 精选资料分享

    风电机组运行数据分析基于R语言,对德国某风电场7台850kw的风电机组运行数据进行分析。约5万条数据。部分
    发表于 07-12 07:10

    数据探索数据预处理

    目录1数据探索数据预处理21.1 赛题回顾21.2 数据探索性分析与异常值处理21.3 相关性
    发表于 07-12 08:37

    探索性数据分析(EDA)及其应用

    所谓探索性数据分析(EDA),是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算
    发表于 01-24 10:02 1496次阅读
    <b class='flag-5'>探索性</b><b class='flag-5'>数据分析</b>(EDA)及其应用

    设计多网络协议的Python网络编程的探索性指南

    很高兴看到本书出版了,我要感谢所有为本书的出版做出贡献的人。本书是Python网络编程方面的探索性指南,涉及了很多网络协议
    发表于 09-14 10:47 5次下载

    探索性数据分析系统对基因组医学研究的帮助

    基于高性能计算集群这样的新一代测序器和快速演化分析平台,基因研究领域已经被海量数据淹没。众多基因、癌症、医学研究机构和制药公司不断产生的海量数据,已不再能被及时的处理并恰当的存储,甚至通过常规通讯
    发表于 10-11 09:46 0次下载
    <b class='flag-5'>探索性</b>大<b class='flag-5'>数据分析</b>系统对基因组医学研究的帮助

    EDA实际应用的典型小案例

    所谓探索性数据分析,是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手
    发表于 04-13 18:38 4301次阅读
    EDA实际应用的典型小案例

    细分模型探索性数据分析和预处理

    交流学习!文章较长,建议收藏~ 客户细分模型是将整体会员划分为不同的细分群体或类别,然后基于细分群体做管理、营销和关怀。客户细分模型常用于整体会员的宏观性分析以及探索性分析,通过细分建立初步认知,为下一步的
    的头像 发表于 11-08 16:05 1527次阅读
    细分模型<b class='flag-5'>探索性</b><b class='flag-5'>数据分析</b>和预处理

    磐石测控:PS-2205ST-R旋钮扭力测试仪的数据分析

    磐石测控:PS-2205ST-R旋钮扭力测试仪的数据分析
    的头像 发表于 02-23 15:57 476次阅读
    磐石测控:PS-2205ST-<b class='flag-5'>R</b>旋钮扭力测试仪的<b class='flag-5'>数据分析</b>?

    Sweetviz让你三行代码实现探索性数据分析

    Sweetviz是一个开源Python库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 如上图所示,它不仅能根据性别、年龄等不同栏目纵向分析
    的头像 发表于 10-17 10:59 419次阅读
    Sweetviz让你三行<b class='flag-5'>代码</b>实现<b class='flag-5'>探索性</b><b class='flag-5'>数据分析</b>

    Sweetviz: 让你三行代码实现探索性数据分析

    Sweetviz是一个开源Python库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 它不仅能根据性别、年龄等不同栏目纵向分析
    的头像 发表于 10-31 10:28 885次阅读
    Sweetviz: 让你三行<b class='flag-5'>代码</b>实现<b class='flag-5'>探索性</b><b class='flag-5'>数据分析</b>