SparkR处理数据框

本教程介绍了如何使用SparkR进行数据处理和分析。首先通过Pandas加载mtcars数据集,然后创建SQLContext,将数据转换为SparkDataFrame。接着展示了如何过滤、处理列、分组及汇总数据。最后,通过注册DataFrame为临时表并运行SQL查询进行数据探索。实验涵盖了数据加载、DataFrame操作和SparkSQL的应用。
摘要由CSDN通过智能技术生成

SparkR处理数据框

1. 实验目标

运用SPARK技术对数据进行分析

2. 实验主要使用的 𝑃𝑦𝑡ℎ𝑜𝑛Python 库

名称版本简介
𝑟𝑒𝑞𝑢𝑒𝑠𝑡𝑠requests2.20.02.20.0线性代数
𝑃𝑎𝑛𝑑𝑎𝑠Pandas0.25.00.25.0数据分析
𝑃𝑦𝑆𝑝𝑎𝑟𝑘PySpark2.4.32.4.3大数据处理
𝑀𝑎𝑡𝑝𝑙𝑜𝑡𝑙𝑖𝑏Matplotlib3.0.13.0.1数据可视化

3. 实验对象

  • 本课程假设您已经学习了 𝑃𝑦𝑡ℎ𝑜𝑛Python 基础,具备可视化基础
  • 学习对象:本科学生、研究生、人工智能、算法相关研究者、开发者
  • 大数据分析与人工智能

DataFrame是二维的。列可以是不同的数据类型。您可以传递索引(行标签)和列(列标签),索引可以是数字,日期或字符串/元组。

Pandas是一个用于数据处理和分析的库。 Pandas提供了用于创建和操作Data Series和DataFrame对象的数据结构和操作。 数据可以从各种数据源导入,例如Numpy数组,Python字典和CSV文件。 Pandas允许您操作,组织和显示数据。

在这个简短的notebook本中,我们将加载并探索mtcars数据集。 具体来说,本教程涵盖:

  1. 将数据加载到内存中
  2. 创建SQLContext
  3. 创建Spark DataFrame
  4. 按列分组数据
  5. 处理列
  6. 从Spark DataFrame运行SQL查询

4. 实验步骤

步骤1 加载到DataFrame中

为了创建一个Spark DataFrame,我们加载一个名为ylw的外部数据框。 这个DataFrame包含了对11个变量的32个观测值:

[, 1] mpg Miles/(US) -->加仑

[, 2] cyl --> 气缸数量

[, 3] disp --> 移位 (cu.in.)

[, 4] hp --> 总马力

[, 5] drat --> 后轴比

[, 6] wt --> 重量 (lb/1000)

[, 7] qsec --> 1/4英里的时间

[, 8] vs --> V/S

[, 9] am --> 变速器 (0 = 自动, 1 = 手动)

[,10] gear --> 前进档的数量

[,11] carb --> 化油器的数量

代码示例:

pip install pandas==0.25.0

代码示例:

import pandas as pd
mtcars = pd.read_csv("/mydata/mtcars.csv")

代码示例:

mtcars.head()

步骤2 初始化SQLContext

要处理数据框,我们需要一个使用SQLContext(sc)创建的SQLContext。 SQLContext使用已经在Data Scientist Workbench中创建的名为sc的SparkContext。

代码示例:

sqlContext = SQLContext(sc)

步骤3 创建Spark 数据框

使用SQLContext和加载的本地DataFrame,我们创建一个Spark DataFrame:

代码示例:

sdf = sqlContext.createDataFrame(mtcars) 
sdf.printSchema()

步骤4 显示数据框的内容

代码示例:

sdf.show(5)

步骤5 显示DataFrame的内容

代码示例:

sdf.select('mpg').show(5)

步骤6 过滤数据

过滤DataFrame以仅保留“mpg”小于18的行

代码示例:

sdf.filter(sdf['mpg'] < 18).show(5)

步骤7 处理列

SparkR还提供了许多可直接应用于数据处理和聚合的列的功能。 下面的示例显示了使用基本算术函数将lb转换为metric ton。

代码示例:

sdf.withColumn('wtTon', sdf['wt'] * 0.45).show(6)

步骤8 分组,汇总

Spark DataFrames支持许多常用的功能来在分组后汇总数据。 例如,我们可以按照如下所示计算汽缸的平均重量:

代码示例:

sdf.groupby(['cyl'])\
.agg({"wt": "AVG"})\
.show(5)

代码示例:

# 我们还可以对汇总的输出进行排序,以获得最常见的汽车
car_counts = sdf.groupby(['cyl'])\
.agg({"wt": "count"})\
.sort("count(wt)", ascending=False)\
.show(5)

步骤9 从Spark DataFrames运行SQL查询

Spark DataFrame也可以在Spark SQL中注册为临时表,并将DataFrame注册为表格,从而允许您对其数据运行SQL查询。 sql函数使应用程序能够以编程方式运行SQL查询并将结果作为DataFrame返回。

代码示例:

# 将此数据框注册为表格。
sdf.registerTempTable("cars")

# SQL语句可以使用sql方法运行
highgearcars = sqlContext.sql("SELECT gear FROM cars WHERE cyl >= 4 AND cyl <= 9")
highgearcars.show(6)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心 ylw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值