r生成新的dataframe_[原] 数据科学教程:R语言与DataFrame[2019版]

本文介绍了R语言中DataFrame的最新进展,重点关注tidyverse框架,强调其在数据处理中的核心地位,以及如何通过sparklyr进行分布式计算。文章还提到了空间计算的新工具sf,以及图数据处理库tidygraph,展示了它们在数据科学中的应用和优势。
摘要由CSDN通过智能技术生成

前言

9102年是互联网大环境不太好的一年,这一年更需要苦练基本功,数据科学领域的基本功无非就是数据处理,而 DataFrame 是其中的核心。那么,都9102年了,如何在 R 语言中优雅地使用 DataFrame 呢?是否优雅是矿工生产力差异的重要来源,本文将介绍最近三年来 DataFrame 的最近进展。

R 中的 DataFrame 新趋势

tidy 编程流

分布式计算

集成 NoSQL

集成各领域核心算法

按照功能来划分:

核心计算:tidyverse/sparklyr

空间计算:sf/geospark/tidyraster

文本计算:tidytext/tabulizer

深度学习:keras

核心计算

tidyverse 介绍

谈到数据处理的基本功必须先了解 DataFrame 的最核心能力:比SQL还要优雅地处理数据。作为第四代数据处理语言的核心 tidyverse 是必须要了解的。

tidyverse 实现了核心计算的大一统,它囊括了八个数据科学最高频的操作:

ggplot2, 支持数据可视化

dplyr, 数据操作

tidyr, 数据清洗

readr, 数据IO

purrr, 函数式编程

tibble, 数据框轻量化格式

stringr, 文本处理

forcats, 因子类型处理

对于 tidyverse 的各个子模块可以参考 R语言与DataFrame 2016版, 其中详细介绍了各模块的情况,本文不再赘述,更多着墨与新趋势。八大模块中,dplyr 是核心中的核心,因为它实现了数据处理的前后端分离,支持 R 语言的前端和多种结构化数据库的后端,比如 RPostGIS,RMySQL,sparklyr 等。

Spark 数据处理举例

下面举一个 sparklyr 处理 iris 数据的例子来感受一下现代数据处理:

步骤一:数据库连接

library(sparklyr)

library(tidyverse)

# 分布式OLAP数据库 Hive 连接

sc

spark_home = "/data/FinanceR/Spark",

version = "2.2.0",

config = sparklyr::spark_config())

# 或者分布式OLTP数据库 tidb 连接

# sc

# user="FinanceR", password="FinanceR",

# dbname="FinanceR", host="192.168.1.100")

# 或者基于内存索引的 MPP数据库 impala 链接

# impala

# drv = odbc::odbc(),

# driver = "Cloudera ODBC Driver for Impala",

# host = "host",

# port = 21050,

# database = "default",

# uid = "username",

# pwd = "password"

# )

步骤二:数据操作

# 在 mutate 中支持 Hive UDF

remote_df = copy_to(sc,iris,"iris_tbl")

remote_df = dplyr::tbl(sc,from = "db.iris_tbl") # 定义数据源表

# 或者 remote_df = dplyr::tbl(sc,from = dplyr::sql("select * from db.iris_tbl limit 10")) #

# 以比SQL更接近于自然语言的方法编程,以基本的 过滤、聚合、排序为例

remote_df %>%

dplyr::mutate(a = Sepal_Length+2) %>% # 在 mutate 中支持 Hive UDF

dplyr::filter(a > 2)%>%

dplyr::group_by(Species)%>%

dplyr::summarize(count = n())%>%

dplyr::select(cnt = count)%>%

dplyr::arrange(desc(cnt)) %>%

dplyr::mutate_if(is.double,as.character) -> # 配合 逆天的批量操作

pipeline

步骤三:检验语法

## 一顿操作猛如虎之后,将数据操作的对应SQL执行过程打印出来

pipeline %>%

dbplyr::sql_render()

# SELECT CAST(`cnt` AS STRING) AS `cnt`

FROM (SELECT *

FROM (SELECT `count` AS `cnt`

FROM (SELECT `Species`, count(*) AS `count`

FROM (SELECT *

FROM (SELECT `Sepal_Length`, `Sepal_Width`, `Petal_Length`, `Petal_Width`, `Species`, `Sepal_Length` + 2.0 AS `a`

FROM `iris_tbl`) `nmpfznbuzf`

WHERE (`a` > 2.0)) `ygjaktrzzu`

GROUP BY `Species`) `lbmpsjksox`) `tdrwlnidxw`

ORDER BY `cnt` DESC) `mzuwuocxay`

步骤四:数据存储

## 将 pipeline 结果自动缓存为临时表 tmp_tbl

tmp_tbl = pipeline %>% compute("tmp_tbl")

# 将 临时表按照条件过滤后再写回 Hive 数据库,省去建表过程

tmp_tbl %>%

filter(cnt > 10) %>%

sparklyr::spark_write_table("db.financer_res")

通过上面的例子,我们可以看到使用 sparklyr 而不是直接使用 Hive ,能够使得数据分析流程变得更加高效和方便。

空间计算

在 Edzer 等人的努力之下,空间计算社区逐渐建立起来一套优雅的以 sf 为核心的空间计算工作流。

核心组成主要包括

sf:矢量空间核心计算框架,实现九交模型、Voronoi图、凸包计算、GROUP BY、数据IO等标准操作。

stars:栅格空间核心计算框架,实现了核心multi-dimension的数据结构和数据IO,使得卫星影像时序数据处理更加高效。

rpostgisLT:基于PostGIS的轨迹数据分析工具

leaflet:轻量级的空间可视化组件

mapview:基于leaflet的高级空间可视化集成方案</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值