从0开始学习pyspark--Spark DataFrame数据的选取与访问[第5节]

在PySpark中,选择和访问数据是处理Spark DataFrame的基本操作。以下是一些常用的方法来选择和访问DataFrame中的数据。

  1. 选择列(Selecting Columns):
    • select: 用于选择DataFrame中的特定列。
    • selectExpr: 用于通过SQL表达式选择列。
    df.select('name', 'age')  # 选择'name'和'age'列
    df.select(df.name, df.age + 10)  # 选择'name'列和'age'列加10
    df.selectExpr('name', 'age + 10 as age_plus_10')  # 使用SQL表达式选择列
    
  2. 筛选行(Filtering Rows):
    • filter: 用于根据指定条件筛选DataFrame中的行。
    df.filter(df.age > 30)  # 筛选年龄大于30的行
    df.filter((df.age > 30) & (df.gender == 'male'))  # 筛选年龄大于30且性别为男的行
    
  3. 排序数据(Sorting Data):
    • orderBy: 用于根据指定列排序DataFrame。
    • sort: 与orderBy类似,用于排序DataFrame。
    df.orderBy('age', ascending=False)  # 按年龄降序排序
    df.sort(df.age.desc())  # 按年龄降序排序
    
  4. 抽样数据(Sampling Data):
    • sample: 用于对DataFrame进行随机抽样。
    df.sample(0.5, seed=42)  # 抽取50%的数据,随机种子为42
    
  5. distinct 数据(Distinct Data):
    • distinct: 用于去除DataFrame中的重复行。
    df.distinct()  # 去除重复行
    
  6. 随机分割数据(Randomly Splitting Data):
    • randomSplit: 用于将DataFrame随机分割成多个DataFrame。
    df.randomSplit([0.7, 0.3], seed=42)  # 将数据随机分割为70%和30%
    
  7. 列操作(Column Operations):
    • withColumn: 用于添加或替换DataFrame中的列。
    • withColumnRenamed: 用于重命名DataFrame中的列。
    df.withColumn('age_plus_10', df.age + 10)  # 添加新列'age_plus_10'
    df.withColumnRenamed('old_name', 'new_name')  # 重命名列
    
  8. 聚合数据(Aggregating Data):
    • groupBy: 用于对DataFrame进行分组。
    • agg: 用于对分组后的DataFrame进行聚合操作。
    df.groupBy('gender').agg({'age': 'mean'})  # 按性别分组并计算平均年龄
    
  9. 窗口函数(Window Functions):
    • window: 用于创建一个窗口 specification,用于窗口函数的计算。
    • over: 用于指定窗口函数的应用范围。
    from pyspark.sql.window import Window
    windowSpec = Window.partitionBy('gender').orderBy('age')
    df.withColumn('row_number', row_number().over(windowSpec))  # 计算行号
    
  10. 集合操作(Set Operations):
    • union: 合并两个DataFrame,去除重复行。
    • unionAll: 合并两个DataFrame,不去除重复行。
    • intersect: 获取两个DataFrame的交集。
    • except: 获取两个DataFrame的差集。
    df1.union(df2)  # 合并df1和df2,去除重复行
    df1.unionAll(df2)  # 合并df1和df2,不去除重复行
    
  11. 访问数据(Accessing Data):
    • collect: 将DataFrame的数据作为一个Python列表返回。
    • take: 返回DataFrame中的前几行。
    • show: 显示DataFrame的内容。
    df.collect()  # 返回DataFrame的所有数据
    df.take(5)  # 返回DataFrame的前5行
    df.show()  # 显示DataFrame的内容
    

这些是PySpark中选择和访问数据的一些基本操作。你可以根据需要组合使用这些操作来处理和分析数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开放签电子签章,让签字有迹可循

开放签(企业版)V2.0.5版本上线后,系统支持一键查询电子文件的签署操作记录,支持一键生成详细的签署记录报告,详细请看下图: 1、操作记录详情: 从合同发起、填写、签署、撤销等环节全流程展示操…

Python学习篇:PyCharm的基本使用教程(二)

目录 1 前言 2 创建Python项目 3 创建Python文件 4 编写 Hello World 并运行 5 PyCharm界面简介 1 前言 PyCharm的使用贯穿整个Python的学习,所以单独拿出来出教程不合适,说多了对于新手来说也还是不明白,这里我们先从学习开始前大家需…

【论文阅读】XuanYuan: An AI-Native Database

XuanYuan: An AI-Native Database 这篇文章主要是讨论了AI4DB 和 DB4AI 集成的数据库架构,以此提出了AI原生的数据库,架构如下: 而具体发展阶段来说,AI原生数据库主要由五个阶段组成 第一阶段,AI建议型数据库&#xf…

MQ运行时遇到的问题

遇到的问题描述:我在绑定通道的时候发现了通道绑定失败, 原因: 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的,导致后面的代码再去进行注册的时候并没有实现那个类型 解决: 更改代码&#xff0…

对不起,AI大模型不是风口

“我们正处在全新起点,这是一个以大模型为核心的人工智能新时代,大模型改变了人工智能,大模型即将改变世界。”——5月26日,百度创始人、董事长兼CEO李彦宏先生在2023中关村论坛发表了《大模型改变世界》演讲。 李彦宏指出&#…

S7---代码编译和固件下载

目录 1.代码下载 2. 工具安装 3.环境变量 4.驱动安装 5.代码编译 6.固件下载 S7和S7 Pro Gen 1音频平台 S7 Gen 1音频平台基于QCC722x蓝牙音频SoC,针对耳塞和其他便携式和可穿戴应用。 S7 Pro Gen 1音频平台基于QCC722x蓝牙音频SoC和QCP7321微电源Wi-Fi收发器…

Nacos2.3.x动态刷新不生效

1.日志分析 Ignore the empty nacos configuration and get it based on dataId[null.yaml] & group[DEFAULT_GROUP] Ignore the empty nacos configuration and get it based on dataId[null-local.yaml] & group[DEFAULT_GROUP] 从日志文件分析中可以得到 dataId[n…

TypeScript 中 const enum 和 enum 的核心区别在哪?日常开发应该使用哪个?

编译结果 enum 会生成一个对象,引用的地方保持对其引用 const enum 会擦除 enum 定义的代码,引用的地方会生成 inline code 使用enum: 使用const enum: PS:编译选项 preserveConstEnums 可以使 const enum 不去擦除 …

深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测? 传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我…

镜像私服Harbor 2.0安装-探索工厂模式:如何优化Harbor项目管理与API集成

文章目录 一、docker-compose1. 下载 Docker Compose:2.添加执行权限:3.验证安装 二、安装harbor 2.01.下载harbor离线包2. 根据需求配置 Harbor3.给harbor创建SSL证书4.预编译harbor5. 安装并启动 Harbor (必须到你安装的目录) 三、登录harbor的web页面…

哈尔滨如何选择合适的等保测评机构?

选择合适的等保测评机构确实需要细致考虑,您提到的八个方面已经非常全面,涵盖了资质、专业能力、服务质量和合规性等多个关键点。为了进一步确保所选机构的可靠性,还可以考虑以下几点: 1.技术创新与工具:了解测评机构是…

鸿蒙生态应用开发白皮书V3.0

来源:华为: 近期历史回顾:

红酒SPA:享受放松与奢华的很好结合

在繁忙的都市生活中,人们总是渴望找到一片宁静的天地,让疲惫的身心得到很好的放松。而红酒SPA,作为一种不同的放松方式,将红酒的浪漫与SPA的舒适整合,为现代人带来了一场奢华享受。 一、红酒的浪漫与SPA的舒适 红酒&a…

北京网站建设怎么开始做

北京作为中国的首都,拥有众多的企业和机构,网站建设不仅是一种宣传和推广的手段,更是企业发展的必备工具。但是对于很多企业来说,网站建设是一个相对陌生的领域,不知道从哪里开始。今天我们就来谈一谈北京网站建设的步…

算法-位图与底层运算逻辑

文章目录 1. 位图的理论基础2. 完整版位图实现3. 底层的运算逻辑-位运算 1. 位图的理论基础 首先我们要理解什么是位图, 位图的一些作用是什么 位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又…

【HDC.2024】探索无限可能:华为云区块链+X,创新融合新篇章

6月23日,华为开发者大会2024(HDC 2024)期间, “「区块链X」多元行业场景下的创新应用”分论坛在东莞松山湖举行,区块链技术再次成为焦点。本次论坛以"区块链X"为主题,集结了行业专家、技术领袖、…

fyne的MultiLineEntry设置大小

MultiLineEntry设置大小 在另一篇文章讲过,放入border布局中,可以最大化MultiLineEntry。 这里再介绍另一种方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible强制mult…

Typora(跨平台 Markdown 编辑器 )正版值得购买吗

Typora 是一款桌面 Markdown 编辑器,作为国人开发的优秀软件,一直深受用户的喜爱。 实时预览格式 Typora 是一款适配 Windows / macOS / Linux 平台的 Markdown 编辑器,编辑实时预览标记格式,所见即所得,轻巧而强大…

Linux kernel 与 设备树

Linux kernel 与 设备树 1 介绍1.1 概述1.2 发展历程1.3 各版本发布时间及特色1.4 Linux 单内核1.5 Linux 内核网址1.6 NXP 官方镜像与 野火 鲁班猫镜像的区别 2 Linux 内核组成2.1 进程管理2.2 内存管理2.3 文件系统2.4 设备管理2.5 网络功能 3 Linux 内核编译3.1 编译 Kernel…

llm学习-2(使用embedding和数据处理)

首先可以简单了解一下向量数据库相关知识: 向量数据库相关知识(搬运学习,建议还是看原文,这个只是我自己的学习记录)-CSDN博客 补充: 使用embedding API 文心千帆API Embedding-V1是基于百度文心大模型…