栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

PYSPARK中的groupby, agg,alias, orderby多个columns的操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PYSPARK中的groupby, agg,alias, orderby多个columns的操作

 

#Pyspark imports

import pyspark
from pyspark.sql import SQLContext
from pyspark.sql.functions import hour, when, col, date_format, to_timestamp
from pyspark.sql.functions import *


# Define Spark Context

sc = pyspark.SparkContext(appName="Homework")
sqlContext = SQLContext(sc)


# Function to load data

def load_data():
    df = sqlContext.read.option("header",True).csv("yellow_tripdata_2019-01_short.csv")
    return df

df = load_data()

 https://spark.apache.org/docs/3.2.1/api/python/reference/api/pyspark.sql.Dataframe.orderBy.html?highlight=orderby#pyspark.sql.Dataframe.orderBy
 

在pyspark中,可以和pandas一样进行groupby操作,count 也是一样可以做的,例如我们可以使用下面的简单操作来去得到对column1进行group后,计算每个group的计数,并且展示出来。

df.groupy("column1").count().show()

现在我们开始在这个语句上面增加条件,加上各种变化,满足现实中各种奇怪的需求:

1.根据多个columns来进行group?

没问题! 直接groupby 多个列就可以了!

df.groupy(["column1","column2"]).count().show()
2.我需要得到的一个计数之外,还有其他的agg操作,比如avg?

办得到!使用agg:

#1. 方法1 使用字典
 

#2. 方法2 不适用字典,可以加上alias,就是给咱们新生成的column增加别名,推荐这个方案,不然你不好确认你增加了个什么玩意,后续怎么调用
 

#1. 方法1 使用字典
df.groupby(['Column1','Column2']).agg(count("*").alias("count"), avg("Column3").alias("Column4")).show()

#2. 方法2 不适用字典,可以加上alias,就是给咱们新生成的column增加别名,推荐这个方案,不然你不好确认你增加了个什么玩意,后续怎么调用

df.groupby(['Column1','Column2']).agg(count("*").alias("count"), avg("Column3").alias("Column4")).show()
3.我需要得排序啊,而且要对多个字段排序,一会要倒排一会要正排!

阔以!使用orderby:

df.groupby(['column1','columns2']).agg(count("*").alias("count"), avg("column3").alias("column4")).orderBy(['count','column4'],ascending=[0,1])

记得将每次处理后的数据,都保存哦!!么么哒!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号