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|
+------+---------+

代码解释

  1. 导入必要库:
    • pyspark.sql.functions 模块中的 avg 函数用于计算平均值。
    • desc 函数用于指定降序排序。
  2. 创建DataFrame:
    • 使用示例数据创建一个名为 df 的 DataFrame。
  3. 分组和聚合:
    • 使用 groupBy('gender') 按性别对 DataFrame 进行分组。
    • 使用 agg(avg('score').alias('avg_score')) 计算每个性别的平均分,并将结果列命名为 'avg_score'。
  4. 排序:
    • 使用 orderBy(desc('avg_score')) 按平均分降序排序。
  5. 输出结果:
    • 使用 show() 方法显示最终结果。

希望这个例子能帮助你理解如何使用 Spark DataFrame 进行数据分析和处理。

Spark DataFrame编程练习:计算不同性别学生平均分并排序

原文地址: https://www.cveoy.top/t/topic/jnsU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录