运维开发网

[原]数据科学教程:R语言与DataFrame

运维开发网 https://www.qedev.com 2020-03-18 17:12 出处:网络 作者:运维开发网整理
什么是DataFrame 引用 r-tutor上的定义: DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量。 没错,DataFrame就是类似于Excel表格和MySQL数据库一样是一个结构化的数据体。而这种结构化的数据体是当代数据流编程中的中流砥柱,几乎所有先进算法的载体都是DataFrame,比如现在我们耳熟能详的逻辑回归算法、贝叶斯算法、支持向量机

[原]数据科学教程:R语言与DataFrame

raw_matrix %>%
DT::datatable(options = list(pageLength = 30, dom = 'tip')) %>% 
  DT::formatStyle(columns = c("A","B")
    background = styleColorBar(c(0, max(raw_matrix,na.rm = TRUE)), 'steelblue'),
    backgroundSize = '100% 50%',
    backgroundRepeat = 'no-repeat',
    backgroundPosition = 'center')

分布式DataFrame

DDF

DDF的全称是 Distributed Data Frame, 也就是分布式数据框。DDF用一个统一的跨引擎API简化了多数据源的分析操作,进一步将data frame底层的分布式傻瓜化。

在R中使用DDF,我们不需要修改之前任何的代码,并且绕过Hadoop的绝对限制,就可以让data frame格式的数据,自动获得分布式处理的能力!

# 创建 DDF 管理器来运行Spark引擎
dm <- DDFManager("spark")

# 从表格中创建 DDF
ddf <- sql2ddf(dm, "select * from mtcars")

/*Basic Stats*/
# 返回行/列的值
ncol(ddf)
nrow(ddf)

# 在 DDF 上进行运行标准汇总
summary(ddf)

更多具体操作可以参考官方指南

DataFrame在R、Python和Spark三者中的联系

操作 R Python Spark
base Pandas spark SQL
读取csv read.csv() read_csv() spark-csv
计数 nrow() pandasDF.count() sparkDF.count()
分片 head(data,5) pandasDF.head(5) sparkDF.show(5)
推断类型 自动推断 自动推断 默认为string类型
标准差计算中的NaN处理 视为NA 自动排除 视为NaN
特征工程 dplyr::mutate() pandasDF['new'] sparkDF.withColumn()

DataFrame 之我见

  1. 处理数据的第一语言还是 SQL语句,因为SQL是DSL,这样就对使用者没有Python或者R的要求,也方便与DBA的维护。在R中可以使用 sqldf 通过SQL直接操作DataFrame,在Python中可以使用 pysqldf

  2. 处理数据的第二语言则是 tidyverse 或者 pandas,使用这样的链式调用方法可以提升数据流的处理效率,规避一些原生SQL在不同数据库中执行情况不同或者可读性较差的问题。

  3. 处理数据的第三语言则是 data.table 或者 scala,使用这样高性能的方法可以在关键步骤提升数据处理效率到极致,不过会牺牲一部分维护性。

参考资料

  • Medium:6 Differences Between Pandas And Spark DataFrames

  • Quora:What are the differences of DataFrame between R and Pandas?

  • R Tutorial: Data Frame

  • Python Pandas 官方文档

  • 知乎:R语言读大数据?

  • 知乎的高分问答:如何使用 ggplot2?

  • R Graphs Cookbook

  • SparkR: Distributed data frames with Spark and R

  • Vimeo:R Data Structures

  • Announcing SparkR: R on Spark

  • amplab: SparkR R frontend for Spark

  • codementor: data frame operations with SparkR

  • Spark Summit: Distributed DataFrame (DDF) Simplifying Big Data For The Rest Of Us

  • SparkR 官方文档

  • 粉丝日志: 超高性能数据处理包data.table

  • yhat ggplot2 doc

  • Fast Data Processing with Spark, 2nd Edition

作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR专栏:https://segmentfault.com/blog...,如果涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio商业使用请联系作者。

0

精彩评论

暂无评论...
验证码 换一张
取 消