作者:Pablo Casas
翻译:蒋雨畅
校对:车前子
本文约1500字,建议阅读7分钟。
本文将通过介绍一个代码模板的四个基本步骤,来帮助您完成数据分析的初期探索。
探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。
EDA由单变量(1个变量)和双变量(2个变量)分析组成。在这篇文章中,我们将回顾一些我们在案例分析中使用的功能:
基本EDA中的一些关键点:
结果有两种类型:信息型或操作型。
如果您没有这些扩展包,请删除‘#’来导入:
# install.packages("tidyverse") # install.packages("funModeling") # install.packages("Hmisc") funModeling已发布更新版本的Ago-1,请更新! 现在加载所需的程序包 library(funModeling) library(tidyverse) library(Hmisc)
使用以下函数一键运行本文中的所有函数:
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会返回一个表格,因此很容易筛选出符合某些条件的变量,例如:
建议:
更多相关信息请浏览: 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 <NA> 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"
建议:
更多相关信息请浏览: https://livebook.datascienceheroes.com/exploratory-data-analysis.html
我们将看到:plot_num和profiling_num两个函数,它们都自动统计数据集中所有数值/整数变量:
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]
建议:
更多相关信息请浏览: 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
译者简介
蒋雨畅,中国香港理工大学大三在读,主修地理信息,辅修计算机科学,目前在研究学习通过数据科学等方法探索城市与人类活动的关系。希望能认识更多对数据科学感兴趣的朋友,了解更多前沿知识,开拓自己的眼界。