分组与聚合 I
聚合之所以强大,部分原因在于可以配合分组使用。PySpark 专门提供了一个用于分组数据帧的类:pyspark.sql.GroupedData,您在前两个练习中已经见过。
您已经学会在不传入参数的情况下,对 DataFrame 调用 .groupBy() 来创建分组的 DataFrame。
现在,您将看到:当向 .groupBy() 传入一个或多个列名时,随后的聚合方法就会像在 SQL 查询中使用 GROUP BY 语句一样工作!
请记住,名为 spark 的 SparkSession 已经在您的工作区中,同时还有 Spark DataFrame flights。
本练习是课程的一部分
PySpark 基础
练习说明
- 创建按列
tailnum分组的 DataFrame,命名为by_plane。 - 使用不带任何参数的
.count()方法,统计每架飞机执行的航班次数。 - 创建按列
origin分组的 DataFrame,命名为by_origin。 - 计算
air_time列的.avg(),以求出来自 PDX 和 SEA 的航班平均飞行时长。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Group by tailnum
by_plane = flights.groupBy("____")
# Number of flights each plane made
by_plane.____.show()
# Group by origin
by_origin = flights.groupBy("____")
# Average duration of flights from PDX and SEA
by_origin.avg("____").show()