发布信息

tidyverse:处理数据的R包集合,优化数据清理流程

作者:软荐小编      2025-04-09 16:03:33     126

使用 tidyverse 后,你能花费更少时间去清理数据,进而能将更多精力放在分析、可视化和建模数据上。

一、干净数据和混乱数据的特征

什么是干净数据?干净数据具有准确性,它是完整的,并且其格式便于进行分析。干净数据的特征包含以下这些数据:

1、没有重复的行/值

2、无错误(例如,没有拼写错误)

3、相关(例如,无特殊字符)

4、适当的数据类型进行分析

5、没有异常值(或仅包含已识别/理解的异常值)

6、遵循“整洁的数据”结构

数据混乱的常见症状包括包含以下内容的数据:

1、特殊字符(例如,数字中的逗号)

2、存储为文本/字符数据类型的数值

3、行重复

4、拼写错误

5、不正确的地方

6、空格

7、缺失数据

8、零而不是空值

二、动机

大数据分析的 R 语言 tidyverse 数据清洗工具教程文章里,我们会运用五个能够在纽约市财政部滚动销售数据网站上公开获取到的房地产销售数据集。我们希望您能够下载这些数据集并继续展开学习!每个文件都涵盖了纽约市五个行政区中的其中一个行政区一年的房地产销售数据。我们将使用如下这些 Microsoft Excel 文件:

1、Rollingsales_bronx.xls

2、Rollingsales_brooklyn.xls

3、Rollingsales_manhattan.xls

4、Rollingsales_queens.xls

Rollingsales 在斯塔滕岛的文件名为 xls 。

当处理大数据分析 R 语言 tidyverse 数据清洗工具教程文章时,想象您在帮助一位朋友在纽约市开展房屋检查业务。您能通过分析数据来协助他们,以便更好地了解房地产市场。然而您察觉到,在分析 R 中的数据之前,需要先进行诊断和清理。在诊断数据之前,要将其加载到 R 中。

三、使用readxl将数据加载到R中

使用 tidyverse 工具的好处在数据加载时通常较为明显。很多时候,当把 Microsoft Excel 数据加载到 R 中时,tidyverse 软件包能为您清理一些数据。如果您使用的是 CSV 数据,那么 tidyverse 的 readr 软件包中的 read_csv()功能是需要使用的功能(稍后会介绍)。

让我们来看一个例子。这是布鲁克林区的Excel文件的外观:

数据分析与r软件_软件数据分析师是做什么_软件数据分析做什么的

现在,我们要把 Brooklyn 数据集从 Excel 文件加载到 R 中。我们会使用 readxl 包。我们指定函数的自变量 skip = 4,这是因为我们要用作标题的行(也就是列名)实际上是第 5 行。我们能够完全忽略前四行,然后从第 5 行开始将数据加载到 R 中。以下是代码:

请注意,我们将此数据集保存为名为“brooklyn”的变量,以便将来使用。

四、使用tidyr :: glimpse()查看数据

tidyverse 提供了一种对用户友好的方式数据分析与r软件,即可以使用 glimpse()函数,通过 tibble 包装中的功能来查看数据。若要使用此程序包,我们需要将其加载,以便在当前会话中使用。并且,我们不仅能够单独加载此程序包,还可以一次性加载多个 tidyverse 程序包。如果计算机上没有 tidyverse 软件包集合,那么可以在 R 或者 R Studio 会话中使用以下这些命令来将其安装在计算机上。

安装软件包后,将其加载到内存中:

现在已经把 tidyverse 加载到了内存里,接着对布鲁克林数据集进行了“瞥见”操作。 现在 tidyverse 已在内存中,然后对布鲁克林数据集进行了“瞥见”这一动作。 已经将 tidyverse 加载至内存,随后对布鲁克林数据集进行了“瞥见”。 现已把 tidyverse 加载进内存,接着对布鲁克林数据集进行了“瞥见”行为。 当下已将 tidyverse 加载到内存之中,之后对布鲁克林数据集进行了“瞥见”。

软件数据分析做什么的_软件数据分析师是做什么_数据分析与r软件

该功能 glimpse() 提供了一种用户友好的方式,能够查看数据框中所有列或变量的列名以及数据类型。在大数据分析的 R 语言 tidyverse 数据清洗工具教程中使用此功能,我们还可以查看数据框中的前几个观察值。此数据框包含 20185 个观测值,也就是房地产销售记录。并且它有 21 个变量或列。

五、数据类型

查看每一列的数据类型,我们一般能发现数据是以一种随时能够使用的格式被存储的。例如:

NEIGHBORHOOD 属于“字符”类型,并且它也被称作字符串。

GROSS SQUARE FEET(也就是属性的大小),其类型为“double”,它属于 R 中的“数字”类的一部分。

3、SALE PRICE 也是数字。

4、SALE DATE 以代表日历日期和时间的格式存储。

为什么这很重要呢?因为 GROSS SQUARE FEET 以及 SALE PRICE 都属于数字,所以我们能够即刻对这些数据进行算术运算。比如,我们可以算出所有物业的平均售价。

软件数据分析师是做什么_软件数据分析做什么的_数据分析与r软件

六、准备绘图!

以表示日历日期和时间的格式存储 SALE DATE 数据是很有用的,因为这样我们就能够使用一行代码来按日期绘制房地产销售的直方图。

数据分析与r软件_软件数据分析师是做什么_软件数据分析做什么的

请注意,2020 年 4 月房地产销售呈现出急剧下降的态势。这一现象有可能与 COVID-19 大流行存在关联吗?如您所见,仅仅通过几行代码,我们便能够着手对数据进行探索,并提出一些颇具趣味性的问题。

请注意,制作直方图所使用的 qplot()函数来源于 ggplot2 软件包,而 ggplot2 是一个核心的 tidyverse 软件包。

七、与read.csv()比较

该 readxl()功能对我们的帮助有多大呢?让我们把它和 R 中内置的 read.csv()功能做一下比较。为此数据分析与r软件,我们下载了原始的 Excel 文件,接着在 Mac 上的 Numbers 程序中打开了它,之后又把文件转换成了 CSV。当然,这种工作流程不是很理想,但是对于分析人员来说,更喜欢以 CSV 格式读取表格数据这种情况并不少见。

这是我们在使用 CSV 格式加载相同数据时所看到的 read.csv()的内容:

软件数据分析师是做什么_数据分析与r软件_软件数据分析做什么的

这些数据比较混乱!方法如下:

字符(字符串)数据 ADDRESS 已被存储为“factor”类。把因素当作类别或者存储桶。

GROSS.SQUARE.FEET 被存储为一个因素,SALE.PRICE 也被存储为一个因素。我们无法在一个因子上进行算术运算,比如计算均值。

SALE.DATE 不会以代表日历日期和时间的格式进行存储。所以,我们没办法建立像上面所看到的那种直方图。不过,我们是可以制作一个直方图的,只是这会比较麻烦,并且也没有什么实际意义。

SALE.PRICE 列包含特殊字符,逗号(,)。

但是,如果我们加载与 read_csv() 相同的数据集,read_csv() 是从 readr 包装而来的,readr 属于 tidyverse 的一部分。那么,我们会看到类似于使用原来的 readxl() 做法所得到的结果。

软件数据分析做什么的_数据分析与r软件_软件数据分析师是做什么

总而言之,使用 readxl() 或者将数据加载到 R 中的关键区别在于 read_csv()。没有变量被强制转换为 factor 数据类型,而是许多变量被加载为字符或字符串数据类型。

另外,请注意,在该 Sale Price 列中没有特殊字符。同时,该列已被加载为 double 或数字数据类型。这表明我们能够立刻进行与销售价格相关的计算,并且无需进行额外步骤将该列转换为数字。

八、合并数据集

如果要对纽约市的所有五个行政区进行数据分析,那么将数据集组合起来会很有帮助。并且,如果数据需要进行任何其他清理工作,最好只在一个地方而不是在五个地方进行清理。我们已经证实了五个 Excel 文件中的每一个列名都相同。因此,我们能够把数据框和包里面的 bind_rows()功能结合起来,这个功能属于 dplyr(它是另一个 tidyverse 包!)。

数据分析与r软件_软件数据分析师是做什么_软件数据分析做什么的

数据分析与r软件_软件数据分析师是做什么_软件数据分析做什么的

该 NYC_property_sales 数据框包含 21 个变量,其中有 brooklyn 数据框等。这是很好的,因为它能确认所有五个数据集都有完全相同的列名,所以我们无需进行任何更正就可以合并它们。该 bind_rows()函数实际上是把五个数据帧相互堆叠在一起,从而形成一个。

如果把这些数据框组合起来,并且得到的列比 brooklyn 数据框的列更多,那就可能意味着存在问题,像是其中一个数据集中的列名有误。然而这种情况并没有出现,所以我们能够继续清理列名。

九、用magrittr Magic清理列名!

现在是在 AAA 教育上获取我们所喜爱的某一个数据清理技巧的时候了。

列名包含空格,在 tidyverse 中使用起来或许会比较困难。而且,列名称中还有大写字母。我们不想在分析过程中为空格而担忧,也不想记住大写的变量名!让我们借助 magrittr 包中的便捷方法,迅速清除列名。首先把这个包加载到内存中,如果需要的话,再安装这个软件包。在 tidyverse 中使用了“magrittr”包,然而,我们需要将其显式加载,这样才能访问它的其中一个内置函数。

我们将利用 magrittr 软件包里的“分配管道”功能,以高效的方式更新所有的变量名称。“分配管道”是一种功能强大的工具,它能够让 R 用户一次性将多个操作连接起来。这种管道还使得 R 代码更具可读性,也更易于理解。在使用 tidyverse 工具的时候,管道被广泛地应用。

让我们把赋值管道运算符和 str_replace_all()这个 tidyverse stringr 包中的函数组合起来,用下划线去替换所有的空格。NYC_property_sales 数据框的代码呈现为如下这样:

这是怎么一回事呢?所想到的意思是“进行更新”。让我们把它放到具体的情境中去。上面的那行代码实际上意味着:

获取 NYC_property_sales 数据框的列名,接着把所有列名里的空格用下划线替换掉,之后再将所有列名转为小写。

这句话很长。不过,这体现了管道运算符把多个命令连接在一起的价值。让我们来看一下更新后的列名称:

软件数据分析做什么的_数据分析与r软件_软件数据分析师是做什么

看起来更好!

十、管道操作

通常,在使用 tidyverse 工具时,我们会用到 magrittr 中的单管道(%>%)。管道是把多个命令连接起来的一种手段。回想一下,我们是如何将其视为“接着进行更新”的呢?其实,单个管道可以简单地理解为“接着”。这是一个运用我们到目前为止所学命令的示例:

这大致可转换为:

让我们抓住那个名为 NYC_property_sales 的数据框,接着去看一眼其中的数据。

回顾

- 讲解了数据清洗工具的使用方法。

read_excel()利用 readxl 包的功能把 Microsoft Excel 平面文件载入到 R 中。

使用软件包中的 read_csv() 功能来导入 CSV 文件。具体来说,就是利用 readr 相关的功能来进行 CSV 文件的导入操作。

使用包中的功能来查看数据帧特征 tibble,其中包括使用 glimpse()功能

4、使用包中的qplot()函数生成直方图ggplot2

将数据框与 dplyr 包中的 bind_rows()功能进行组合。

使用 magrittr 包中的函数来清理列名,同时也使用 stringr 包中的函数来清理列名。

7、将命令与单管道(%>%)链接在一起magrittr

如您所见,tidyverse 软件包具备强大的功能,可用于加载、清理和检查数据。所以,您能够即刻开始对数据进行分析!请牢记,您可以通过一次加载所有这些软件包,即使用 library(tidyverse)。

其他资源

如果您对 R 和 tidyverse 不熟悉,我们建议您从 R 课程的 AAA 教育数据分析入门开始学习。此课程是 AAA 教育 Data Analyst 中 R 路径的首门课程。

哈德利·威克汉姆和加勒特·格罗勒蒙德所著的《R for Data Science》这本书涵盖了诸多内容,其中有很多是我们在这里所介绍的,并且还有更多内容。我们向所有学习 R 的人推荐这本书。

奖励:备忘单

RStudio 发布了许多使用 R 和 tidyverse 工具的备忘单。其中与该职位相关的备忘单有:

1、数据导入备忘单

2、数据转换指南

3、使用字符串备忘单

4、数据可视化备忘单

可以通过选择 RStudio 中的“Help > Cheatsheets”来选择备忘单。

相关内容 查看全部