八、GroupedData
GroupedData
通常由DataFrame.groupBy()
创建,用于分组聚合
8.1 方法
.agg(*exprs)
:聚合并以DataFrame
的形式返回聚合的结果可用的聚合函数包括:
avg、max、min、sum、count
参数:
exprs
:一个字典,键为列名,值为聚合函数字符串。也可以是一个Column
的列表
示例:
df.groupBy(df.name).agg({"*": "count"}) #字典
# 或者
from pyspark.sql import functions as F
df.groupBy(df.name).agg(F.min(df.age)) #字典
统计:
.avg(*cols)
:统计数值列每一组的均值,以DataFrame
的形式返回它是
mean()
的别名参数:
cols
:列名或者列名的列表
示例:
df.groupBy().avg('age')
df.groupBy().avg('age', 'height')
.count()
:统计每一组的记录数量,以DataFrame
的形式返回.max(*cols)
:统计数值列每一组的最大值,以DataFrame
的形式返回参数:
cols
:列名或者列名的列表
.min(*cols)
:统计数值列每一组的最小值,以DataFrame
的形式返回参数:
cols
:列名或者列名的列表
.sum(*cols)
:统计数值列每一组的和,以DataFrame
的形式返回参数:
cols
:列名或者列名的列表
.pivot(pivot_col, values=None)
:对指定列进行透视。参数:
pivot_col
:待分析的列的列名values
:待分析的列上,待考察的值的列表。如果为空,则spark
会首先计算pivot_col
的distinct
值
示例:
df4.groupBy("year").pivot("course", ["dotNET", "Java"]).sum("earnings")
#结果为:[Row(year=2012, dotNET=15000, Java=20000), Row(year=2013, dotNET=48000, Java=30000)]
# "dotNET", "Java" 是 course 字段的值