综合练习:学生课程分数

网盘下载sc.txt文件,分别创建RDD、DataFrame和临时表/视图;

 

 

 

分别用RDD操作、DataFrame操作和spark.sql执行SQL语句实现以下数据分析:

  1. 总共有多少学生?

    1. scm.map(lambda a:a[0]).distinct().count()
    2.  

       

       

  2. 总共开设了多少门课程?

    1. scm.map(lambda a:a[1]).distinct().count()
    2.  

       

  3. 每个学生选修了多少门课?

    1. scm.map(lambda a:(a[0],a[1])).countByKey()
    2.  

       

  4. 每门课程有多少个学生选?

    1. scm.map(lambda a:a[1]).countByValue()
    2.  

       

  5. 每门课程>95分的学生人数
    1. scm.filter(lambda a:a[2]>95).map(lambda a:a[1]).countByValue()
  6. 课程'Python'有多少个100分?

    1. scm.filter(lambda a:a[1]=='Python').map(lambda a:a[2]).countfByValue()[100]
  7. Tom选修了几门课?每门课多少分?

    1. scm.filter(lambda a:a[0]=='Tom').count()
    2.  

       

    3. scm.filter(lambda a:a[0]=='Tom').collect()
    4.  

       

  8. Tom的成绩按分数大小排序。

    1. scm.filter(lambda a:[0]=='Tom').map(lambda a:(a[1],a[2])).sortBy(lambda a:a[2],False).collect()
    2.  

       

  9. Tom选修了哪几门课?

  10. Tom的平均分。

      1. import numpy as np  np.mean(list(map(int,scm.map(lambda a:(a[0],a[2])).lookup('Tom'))))
      2.  

         

  11. 'OperatingSystem'不及格人数

    1.  

       

  12. 'OperatingSystem'平均分

  13. 'OperatingSystem'90分以上人数

    1.  

       

  14. 'OperatingSystem'前3名

    1. scm.filter(lambda a:a[1]=='OperatingSystem').map(lambda a:(a[0],a[2])).sortBy(lambda a:a[2],False).take(3)
  15. 每个分数按比例+20平时分。

    1.  

       

  16. 求每门课的平均分

    1.  

       

  17. 选修了7门课的有多少个学生?

  18. 每门课大于95分的学生数

 

posted on 2022-05-27 08:17  诙谐的天  阅读(108)  评论(0)    收藏  举报