作者:Kislay Keshari

翻译:季洋

校对:倪骁然

本文约1900字,建议阅读8分钟

本文中我们将探讨数据框的概念,以及它们如何与PySpark一起帮助数据分析员来解读大数据集。

数据框是现代行业的流行词。人们往往会在一些流行的数据分析语言中用到它,如Python、Scala、以及R。 那么,为什么每个人都经常用到它呢?让我们通过PySpark数据框教程来看看原因。在本文中,我将讨论以下话题:

  • 什么是数据框?

  • 为什么我们需要数据框?

  • 数据框的特点

  • PySpark数据框的数据源

  • 创建数据框

  • PySpark数据框实例:国际足联世界杯、超级英雄


什么是数据框?


数据框广义上是一种数据结构,本质上是一种表格。它是多行结构,每一行又包含了多个观察项。同一行可以包含多种类型的数据格式(异质性),而同一列只能是同种类型的数据(同质性)。数据框通常除了数据本身还包含定义数据的元数据;比如,列和行的名字。

我们可以说数据框不是别的,就只是一种类似于SQL表或电子表格的二维数据结构。接下来让我们继续理解到底为什么需要PySpark数据框。


为什么我们需要数据框?


1. 处理结构化和半结构化数据

数据框被设计出来就是用来处理大批量的结构化或半结构化的数据。各观察项在Spark数据框中被安排在各命名列下,这样的设计帮助Apache Spark了解数据框的结构,同时也帮助Spark优化数据框的查询算法。它还可以处理PB量级的数据。

2. 大卸八块

数据框的应用编程接口(API)支持对数据“大卸八块”的方法,包括通过名字或位置“查询”行、列和单元格,过滤行,等等。统计数据通常都是很凌乱复杂同时又有很多缺失或错误的值和超出常规范围的数据。因此数据框的一个极其重要的特点就是直观地管理缺失数据。

3. 数据源

数据框支持各种各样地数据格式和数据源,这一点我们将在PySpark数据框教程的后继内容中做深入的研究。它们可以从不同类的数据源中导入数据。

4. 多语言支持

它为不同的程序语言提供了API支持,如Python、R、Scala、Java,如此一来,它将很容易地被不同编程背景的人们使用。

数据框的特点

  • 数据框实际上是分布式的,这使得它成为一种具有容错能力和高可用性的数据结构。

  • 惰性求值是一种计算策略,只有在使用值的时候才对表达式进行计算,避免了重复计算。Spark的惰性求值意味着其执行只能被某种行为被触发。在Spark中,惰性求值在数据转换发生时。

  • 数据框实际上是不可变。由于不可变,意味着它作为对象一旦被创建其状态就不能被改变。但是我们可以应用某些转换方法来转换它的值,如对RDD(Resilient Distributed Dataset)的转换。

数据框的数据源


在PySpark中有多种方法可以创建数据框:

可以从任一CSV、JSON、XML,或Parquet文件中加载数据。还可以通过已有的RDD或任何其它数据库创建数据,如HiveCassandra。它还可以从HDFS或本地文件系统中加载数据。

创建数据框


让我们继续这个PySpark数据框教程去了解怎样创建数据框。

我们将创建 Employee 和 Department 实例:

接下来,让我们通过Employee和Departments创建一个DepartmentWithEmployees实例。

让我们用这些行来创建数据框对象:


PySpark数据框实例1:国际足联世界杯数据集


这里我们采用了国际足联世界杯参赛者的数据集。我们将会以CSV文件格式加载这个数据源到一个数据框对象中,然后我们将学习可以使用在这个数据框上的不同的数据转换方法。

1. 从CSV文件中读取数据


让我们从一个CSV文件中加载数据。这里我们会用到spark.read.csv方法来将数据加载到一个DataFrame对象(fifa_df)中。代码如下:

spark.read.format[csv/json]


2. 数据框结构


来看一下结构,亦即这个数据框对象的数据结构,我们将用到printSchema方法。这个方法将返回给我们这个数据框对象中的不同的列信息,包括每列的数据类型和其可为空值的限制条件。


3. 列名和个数(行和列)


当我们想看一下这个数据框对象的各列名、行数或列数时,我们用以下方法:


4. 描述指定列


如果我们要看一下数据框中某指定列的概要信息,我们会用describe方法。这个方法会提供我们指定列的统计概要信息,如果没有指定列名,它会提供这个数据框对象的统计信息。


5. 查询多列


如果我们要从数据框中查询多个指定列,我们可以用select方法。

6. 查询不重复的多列组合



7. 过滤数据


为了过滤数据,根据指定的条件,我们使用filter命令。 这里我们的条件是Match ID等于1096,同时我们还要计算有多少记录或行被筛选出来。


8. 过滤数据(多参数)


我们可以基于多个条件(AND或OR语法)筛选我们的数据:


9. 数据排序 (OrderBy)


我们使用OrderBy方法排序数据。Spark默认升序排列,但是我们也可以改变它成降序排列。


PySpark数据框实例2:超级英雄数据集

1. 加载数据


这里我们将用与上一个例子同样的方法加载数据:


2. 筛选数据


3. 分组数据


GroupBy 被用于基于指定列的数据框的分组。这里,我们将要基于Race列对数据框进行分组,然后计算各分组的行数(使用count方法),如此我们可以找出某个特定种族的记录数。

4. 执行SQL查询


我们还可以直接将SQL查询语句传递给数据框,为此我们需要通过使用registerTempTable方法从数据框上创建一张表,然后再使用sqlContext.sql()来传递SQL查询语句。

到这里,我们的PySpark数据框教程就结束了。

我希望在这个PySpark数据框教程中,你们对PySpark数据框是什么已经有了大概的了解,并知道了为什么它会在行业中被使用以及它的特点。恭喜,你不再是数据框的新手啦!

原文标题:PySpark DataFrame Tutorial: Introduction to DataFrames

原文链接:https://dzone.com/articles/pyspark-dataframe-tutorial-introduction-to-datafra

译者简介

季洋,苏州某IT公司技术总监,从业20年,现在主要负责Java项目的方案和管理工作。对大数据、数据挖掘和分析项目跃跃欲试却苦于没有机会和数据。目前正在摸索和学习中,也报了一些线上课程,希望对数据建模的应用场景有进一步的了解。不能成为巨人,只希望可以站在巨人的肩膀上了解数据科学这个有趣的世界。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | 一文读懂PySpark数据框(附实例)相关推荐

  1. | 一文读懂迁移学习(附学习工具包)

    当一个CNN用于另一个领域,就使用到了迁移学习.迁移学习是一种用于模型领域泛化和扩展的工具. 文章链接:独家 | 一文读懂迁移学习(附学习工具包) 参考:当深度学习成为过去,迁移学习才是真正的未来? ...

  2. 独家 | 一文读懂语音识别(附学习资源)

    原标题:独家 | 一文读懂语音识别(附学习资源) 一.前言 6月27日,美国权威科技杂志<MIT科技评论>公布2017全球最聪明50家公司榜单.科大讯飞名列中国第一.全球第六.全世界排在科 ...

  3. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

  4. 超级干货 :一文读懂大数据计算框架与平台(升级版)

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为 ...

  5. 独家 | 一文读懂数据质量和验证检查(附代码)

    作者:Vinod Kumar 翻译:季洋 校对:王雨桐 本文约1600字,建议阅读8分钟. 本文主要讲述关于数据质量和验证检查的实例,以及运用Apache Spark和Scala采用编码来确保数据质量 ...

  6. 独家 | 一文读懂概率论学习:贝叶斯理论(附链接)

    作者:Jaime Zornoza 翻译:李 洁 校对:郑 滋 本文长度约为3400字,建议阅读10分钟 本文为大家详细介绍了概念学习中常见的贝叶斯理论. 通过一个简单示例,了解概率的基本定理之一. 本 ...

  7. 独家 | 一文读懂神经网络(附解读案例)

    作者:Matthew Stewart 翻译:车前子 校对:陈丹 本文约5500字,建议阅读12分钟. 本文的知识将提供一个强有力的基础,带你入门神经网络的性能,应用于深度学习应用. "你的大 ...

  8. 独家 | 一文读懂机器学习中的贝叶斯统计学

    作者:Matthew Stewart, PhD Researcher 翻译:吴金笛 校对:丁楠雅 本文约4300字,建议阅读15分钟. 本文主要是向新手介绍贝叶斯方法并将其与频率方法进行比较. 你有没 ...

  9. 独家 | 一文读懂序列建模(deeplearning.ai)

    作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议阅读10+分钟. 本文为你详细介绍序列模型,并分析其在不同的真实场景中的应用. 简介 如何预 ...

最新文章

  1. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型
  2. 深度学习的相似度计算 向量之间的相似程度计算 Q K V的注意力权重
  3. node.js 学习笔记三:路由url
  4. 英特尔用ViT做密集预测效果超越卷积,性能提高28%,mIoU直达SOTA|在线可玩
  5. Virtual DOM的简单实现
  6. 解决 vue 项目一直出现 sockjs-node/info?t=1554978**** ,并造成浏览器不能及时更新编码改动结果
  7. devops .net_DevOps vs. Agile:它们有什么共同点吗?
  8. CCF201403-2 窗口
  9. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的电影在线售票系统
  10. java中static和this_理解Java中this和static的含义
  11. 学习笔记 9.22 -9.29 补
  12. Do not use built-in or reserved HTML elements as component id: animate
  13. 二维数组和稀疏数组转化
  14. teamtalk部署启动顺序
  15. excel自动调整列宽_Excel教程:A股上了3000点,来张股市涨跌图
  16. 如何在Mac Finder中查找/Usr 路径?
  17. 打2把王者荣耀的时间,学会JAVA自制验证码图片
  18. 微信内置浏览器不支持打开网页或下载APP怎么办,微信跳转浏览器原理
  19. RMM Level -- 对于REST的层级划分模型
  20. 如何清空python的IDLE?

热门文章

  1. 厌倦了“正在输入…”的客服对话,是时候pick视频客服了
  2. 2016年SDN通往成功路的5大步
  3. python-数据类型
  4. 漏洞检测,流量和性能监控
  5. 51CTO交流摘录(2):SOC的应用现状
  6. 亲历惊心48小时抢救35亿交易数据
  7. 通过了OCP的全部考试后的感受(ZT)
  8. mongodb 对象唯一索引_什么是MongoDB?简介,架构,功能和示例
  9. Anaconda系列:conda是什么?conda与pip的区别是什么?
  10. numpy.array()基本操作