大数据分析_PySpark中类Pandas的df.loc操作(行列定位)

大数据分析_PySpark中类Pandas的df.loc操作(行列定位)

在 PySpark 3.0.3 中, 虽然没有直接类似于 Pandas 中 df.loc 的函数, 但可以通过使用 PySpark 的 select 和 filter 操作来达到类似的功能。

select 用于选择列, 而 filter 用于按条件筛选行。

下面是一个简单的例子, 演示如何使用 PySpark 实现类似于 Pandas 中 df.loc 的功能。

导入 pyspark.sql 相关模块

Spark SQL 是用于结构化数据处理的 Spark 模块。它提供了一种成为 DataFrame 编程抽象, 是由 SchemaRDD 发展而来。

不同于 SchemaRDD 直接继承 RDD, DataFrame 自己实现了 RDD 的绝大多数功能。

from pyspark.sql import SparkSession
from pyspark.sql.functions import col

创建 SparkSession 对象

Spark 2.0 以上版本的 spark-shell 在启动时会自动创建一个名为 spark 的 SparkSession 对象。

当需要手工创建时, SparkSession 可以由其伴生对象的 builder 方法创建出来。

spark = SparkSession.builder.master("local[*]").appName("spark").getOrCreate()

使用 Spark 构建 DataFrame 数据 (行作为元组, 列名作为列表)

当数据量较小时, 可以使用该方法手工构建 DataFrame 数据。

构建数据行 Rows (元组的列表):

Data_Rows = [("Alice", 25, "Female"),("Bob", 30, "Male"),("Charlie", 35, "Male")]

构建数据列名 Cols (字符串的列表):

Data_Cols = ["Name", "Age", "Gender"]

生成 DataFrame 数据框:

SDF = spark.createDataFrame(Data_Rows, Data_Cols)

输出 DataFrame 数据框:

print("[Message] Builded Spark DataFrame:")
SDF.show()

输出:

[Message] Builded Spark DataFrame:
+-------+---+------+
|   Name|Age|Gender|
+-------+---+------+
|  Alice| 25|Female|
|    Bob| 30|  Male|
|Charlie| 35|  Male|
+-------+---+------+

使用 Spark 的 filter 和 select 操作实现类似 Pandas 的 df.loc 的功能

  • SDF.filter(): 筛选名为 “SDF” 数据框中的 行(Row)。

  • SDF.select(): 筛选名为 “SDF” 数据框中的 列(Col)。

Selected_Rows = SDF.filter((col("Age") > 25) & (col("Gender") == "Male")).select(["Name", "Age"])print("[Message] Rows and Cols of Filtered Spark DataFrame:")
Selected_Rows.show()

输出:

[Message] Rows and Cols of Filtered Spark DataFrame:
+-------+---+
|   Name|Age|
+-------+---+
|    Bob| 30|
|Charlie| 35|
+-------+---+

完整代码

#!/usr/bin/python3
# Create By GF 2024-01-06# 在这个例子中, SDF.filter 用于筛选符合条件的行, 然后通过 select 选择特定的列。
# 你可以根据具体的条件和列名来定制这两个操作, 以达到类似于 Pandas 中 df.loc 的效果。
# 请注意, 与 Pandas 不同, PySpark 的 DataFrame 不是按索引定位的, 而是通过列名来选择和筛选数据的。from pyspark.sql import SparkSession
from pyspark.sql.functions import col# Spark 2.0 以上版本的 spark-shell 在启动时会自动创建一个名为 spark 的 SparkSession 对象。
# 当需要手工创建时, SparkSession 可以由其伴生对象的 builder 方法创建出来。
spark = SparkSession.builder.master("local[*]").appName("spark").getOrCreate()# 使用 Spark 构建 DataFrame 数据 (行作为元组, 列名作为列表)。
# 构建数据行 Rows (元组的列表)。
Data_Rows = [("Alice", 25, "Female"),("Bob", 30, "Male"),("Charlie", 35, "Male")]# 构建数据列名 Cols (字符串的列表)。
Data_Cols = ["Name", "Age", "Gender"]# 生成 DataFrame 数据框。
SDF = spark.createDataFrame(Data_Rows, Data_Cols)print("[Message] Builded Spark DataFrame:")
SDF.show()# 使用 Spark 的 filter 和 select 操作实现类似 Pandas 的 df.loc 的功能。
# SDF.filter(): 筛选名为 "SDF" 数据框中的 行(Row)。
# SDF.select(): 筛选名为 "SDF" 数据框中的 列(Col)。
Selected_Rows = SDF.filter((col("Age") > 25) & (col("Gender") == "Male")).select(["Name", "Age"])print("[Message] Rows and Cols of Filtered Spark DataFrame:")
Selected_Rows.show()

其它

在这个例子中, SDF.filter 用于筛选符合条件的行, 然后通过 select 选择特定的列。

你可以根据具体的条件和列名来定制这两个操作, 以达到类似于 Pandas 中 df.loc 的效果。

请注意, 与 Pandas 不同, PySpark 的 DataFrame 不是按索引定位的, 而是通过列名来选择和筛选数据的。

总结

以上就是关于 大数据分析 PySpark中类Pandas的df.loc操作(行列定位) 的全部内容。

更多内容可以访问我的代码仓库:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring声明式事务以及事务传播行为

Spring声明式事务以及事务传播行为 Spring声明式事务1.编程式事务2.使用AOP改造编程式事务3.Spring声明式事务 事务传播行为 如果对数据库事务不太熟悉,可以阅读上一篇博客简单回顾一下:MySQL事务以及并发访问隔离级别 Spring声明式事务 事务一般添加到…

VSCODE使用VSIX安装扩展

VSCode安装扩展特别慢,使用命令行安装告别龟速: code --install-extension当然,我这个是在WSL 的linux上安装的,Windows一样的。 VSCode扩展商店网页链接:https://marketplace.visualstudio.com/vscode

号卡极团分销管理系统 index.php SQL注入漏洞复现

0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…

二十、Rust AOP 切面增强

用过 java spring 的同学,应该会对 AspectJ 的 前置、后置、环绕 增强 念念不忘,巧了 rust 也有类似能力,稍显不同的是,为了向 “零成本抽象” 靠齐,Rust 的 “增强” 是在编译期 完成的。 编译期生成,则离…

数字信号处理实验---FFT分析

一、题目: 二、实验要求: 1、绘制图形时,尽量选用已经提供的函数。 2、所有的图形,需要加上横坐标、纵坐标以及标题的说明。 3、将设计的程序保存为脚本文件,在实验报告中,需写出程序语句。 4、Matlab程…

ECC升级S/4HANA“沙箱模拟方案包“:更适用于升级环境复杂、体量大的客户

“作为一家业务体量大的公司,分支机构众多、数据复杂,想从ECC升级会有什么风险?”面对技术更新换代、公司业务不断扩展、网络安全问题的日益突出,将ECC升级到S/4HANA是企业的当务之急。为解决客户的顾虑,无论是对于历史…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍: •串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的…

设计模式总结-建造者模式

建造者模式 模式动机模式定义模式结构模式分析建造者模式实例与解析实例:KFC套餐 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种…

使用labelImg标注yolov5数据集并在kaggle中使用yolov5

使用labelImg标注yolov5数据集并在kaggle中使用yolov5 文章目录 前言一、labelImg标注1.1. 下载exe文件1.2. labelImg 下载(源码)1.3. 环境配置1.4. 使用1.4.1. 设置1.4.2. 导入图片并标注 二、在kaggle中使用2.1. 下载源码2.2. 编辑配置文件2.3. 将压缩…

[蓝桥杯 2017 国 C] 合根植物

[蓝桥杯 2017 国 C] 合根植物 题目描述 w 星球的一个种植园,被分成 m n m \times n mn 个小格子(东西方向 m m m 行,南北方向 n n n 列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北…

StarRocks使用Minio备份和还原

1.安装minio Centos7安装minio-CSDN博客 minio api端口&#xff1a;9090 下文用到这个端口 必须提前创建好桶: packfdv5 名称自定义和后面对上就可以 2.创建备份仓库 格式&#xff1a; CREATE REPOSITORY <repository_name> WITH BROKER ON LOCATION "s3a:/…

支付类漏洞挖掘技巧总结

前言&#xff1a; 支付类逻辑漏洞在漏洞挖掘中是常常出现的问题之一。此类漏洞挖掘思路多&#xff0c;奖励高&#xff0c;是炙手可热的漏洞。此篇文章主要围绕挖掘支付逻辑漏洞时的一些思路分享。 支付逻辑漏洞成因&#xff1a; 支付漏洞可能由以下原因造成&#xff1a; 前…

mybatis流式游标查询-导出DB大数据量查询OOM问题

问题场景 Mysql数据处理类型分以下三种 com.mysql.cj.protocol.a.result.ResultsetRowsStatic&#xff1a;普通查询&#xff0c;将结果集一次性全部拉取到内存 com.mysql.cj.protocol.a.result.ResultsetRowsCursor&#xff1a;游标查询&#xff0c;将结果集分批拉取到内存&…

【Windows11】cmd下运行python弹出windows应用商店解决方案

【Windows11 】cmd下运行python弹出windows应用商店解决方案 大家好 我是寸铁&#x1f44a; 总结了一篇【Windows11 】cmd下运行python弹出windows应用商店解决方案✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天在安装python时&#xff0c;在命令行窗口输入如下命令&a…

tomcat中的web项目配置指引

文章目录 目录结构I server.xml 配置文件1.1 Host标签1.2 contex标签1.3 server.xml 的端口配置1.4 appBase和docBase的区别1.5 Engine标签1.6 Connector标签II Tomcat应用的配置2.1 配置虚拟路径2.2 配置连接数2.3 使用线程池2.4 配置内存大小III 预备知识

【面试经典150 | 动态规划】不同路径 II

文章目录 写在前面Tag题目1方法一&#xff1a;动态规划方法二&#xff1a;空间优化 题目2方法一&#xff1a;动态规划空间优化 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主…

启动mysql

删除C:\Program Files (x86)\MySQL\MySQL Server 5.7这个路径下的data文件夹&#xff0c;这个很难删除&#xff0c;因为一开机&#xff0c;mysql的某些服务就启动了&#xff0c;每次重新启动mysql之前&#xff0c;都要删除这个文件夹 因为这个文件夹在后端执行一些我们看不到的…

2024.3.31学习记录————树莓派4B学习一:环境配置

2024.3.31学习记录————树莓派4B学习一&#xff1a;环境配置 准备跳槽&#xff0c;重新选择方向以嵌入式为目标进行学习&#xff0c;因没有硬件基础&#xff0c;先选择了树莓派&#xff0c;准备通过树莓派开发板对驱动初步熟悉后再开始STM32和51单片机开发。 硬件配置 硬…

[技术闲聊]我对电路设计的理解(五)-如何获取datasheet

一、序言 电路设计的前提是明确设计规格&#xff0c;并转化为具体功能&#xff0c;依据功能确定芯片选型范围。 元器件选型的前提是了解每一类芯片的功能&#xff0c;界定该芯片是否合适。 了解的前提是有datasheet文件可以看。 二、获取datasheet的途径有三类 一类&#x…

MySQL-逻辑架构:逻辑架构分析、SQL执行流程、数据库缓冲池

逻辑架构 1. 逻辑架构剖析 1.1 第1层&#xff1a;连接层 系统&#xff08;客户端&#xff09;访问MySQL服务器前&#xff0c;做的第一件事就是建立TCP连接。 经过三次握手建立连接成功后&#xff0c;MySQL服务器对TCP传输过来的账号密码做身份认证、权限获取。 用户名或密码…