Spark DataFrame编程练习:计算不同性别学生平均分并排序
Spark DataFrame编程练习:计算不同性别学生平均分并排序
本教程将演示如何使用Python和Spark DataFrame解决一个常见的数据分析问题:计算不同性别学生的平均分并排序。
题目
假设有一个包含学生信息的DataFrame,包括学生姓名、年龄、性别和分数等字段。请编写一个程序,统计每个性别的学生平均分,并按照平均分从高到低排序输出。
示例数据:
| 姓名 | 年龄 | 性别 | 分数 | | ---- | ---- | ---- | ---- | | 张三 | 20 | 男 | 80 | | 李四 | 21 | 女 | 90 | | 王五 | 19 | 男 | 85 | | 赵六 | 20 | 女 | 95 | | 钱七 | 22 | 男 | 75 |
Python答案
from pyspark.sql.functions import avg, desc
# 创建DataFrame
data = [('张三', 20, '男', 80),
('李四', 21, '女', 90),
('王五', 19, '男', 85),
('赵六', 20, '女', 95),
('钱七', 22, '男', 75)]
df = spark.createDataFrame(data, ['name', 'age', 'gender', 'score'])
# 按性别分组,计算平均分,按平均分降序排序
result = df.groupBy('gender').agg(avg('score').alias('avg_score')).orderBy(desc('avg_score'))
# 输出结果
result.show()
输出结果:
+------+---------+
|gender|avg_score|
+------+---------+
| 女 | 92.5|
| 男 | 80.0|
+------+---------+
代码解释
- 导入必要库:
pyspark.sql.functions模块中的avg函数用于计算平均值。desc函数用于指定降序排序。
- 创建DataFrame:
- 使用示例数据创建一个名为
df的 DataFrame。
- 使用示例数据创建一个名为
- 分组和聚合:
- 使用
groupBy('gender')按性别对 DataFrame 进行分组。 - 使用
agg(avg('score').alias('avg_score'))计算每个性别的平均分,并将结果列命名为 'avg_score'。
- 使用
- 排序:
- 使用
orderBy(desc('avg_score'))按平均分降序排序。
- 使用
- 输出结果:
- 使用
show()方法显示最终结果。
- 使用
希望这个例子能帮助你理解如何使用 Spark DataFrame 进行数据分析和处理。
原文地址: https://www.cveoy.top/t/topic/jnsU 著作权归作者所有。请勿转载和采集!