NBA数据分析

第1关:NBA球员国籍分析

任务说明:打开右侧代码文件窗口,在 BeginEnd 区域补充代码,读取 MySQL 中 work.nba_data 表的所有数据进行分析。统计出各个国家中 NBA 球员的数量,最终输出国籍字段 country 和 数量字段 count(注意重命名),将结果存储到 MySQL 中的 result.nba_country表(已创建)。

result.nba_country 表结构如下:

字段类型含义
countryvarchar(50)国籍
countint(5)球员数量

MySQL 数据库连接信息

账号: root 密码:123123 地址:127.0.0.1 端口:3306

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

object First_Question {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("First_Question")
      .master("local[*]")
      .getOrCreate()
    /******************* NBA 球员国籍分析 *******************/
    /******************* Begin *******************/
    // 1. 读取数据
    spark.read.format("jdbc")
                .option("driver","com.mysql.jdbc.Driver")
                .option("url","jdbc:mysql://127.0.0.1:3306/work")
                .option("dbtable","nba_data")
                .option("user","root")
                .option("password","123123")
                .load()
                .createOrReplaceTempView("data")
    // 2. 分析球员国籍分布
    val df:DataFrame=spark.sql("""select country,count(*) count from data group by country""".stripMargin)
    // 3.存储
    df.repartition(1).write.format("jdbc")
      .option("driver","com.mysql.jdbc.Driver")
      .option("url","jdbc:mysql://127.0.0.1:3306/result")
      .option("dbtable","nba_country")
      .option("user","root")
      .option("password","123123")
      .mode(SaveMode.Overwrite)
      .save() 
    /******************* End *******************/
    spark.stop()
  }
}

第2关:NBA球员得分分析

任务说明:打开右侧代码文件窗口,在 BeginEnd 区域补充代码,读取 MySQL 中 work.nba_data 表的所有数据进行分析。统计出各个国家中,场均得分最高的 NBA 球员,只统计赛季为 Career 的数据。 最终输出球员姓名字段 player_name 、场均得分字段 PTS、国籍字段 country,将结果存储到 MySQL 中的 result.nba_pts表(已创建)。

result.nba_pts 表结构如下:

字段类型含义
player_namevarchar(50)球员id
ptsdouble场均得分
countryvarchar(20)国籍

MySQL 数据库连接信息

账号: root 密码:123123 地址:127.0.0.1 端口:3306

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

object First_Question {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("First_Question")
      .master("local[*]")
      .getOrCreate()
    /*******************  NBA 球员得分分析 *******************/
    /******************* Begin *******************/
    // 1. 读取数据
    spark.read
         .format("jdbc")
         .option("driver", "com.mysql.jdbc.Driver")
         .option("url", "jdbc:mysql://127.0.0.1:3306/work")
         .option("dbtable", "nba_data")
         .option("user", "root")
         .option("password", "123123")
         .load()
         .createOrReplaceTempView("data")
    // 2. 分析各国 NBA 球员场均最高得分
    val df: DataFrame =
      spark.sql("""
        select player_name,pts,country
        from
            (select player_name,pts,country,dense_rank() over(partition by country order by pts desc) rank
             from 
              (select * from data where season = "Career")t1 )t2
        where
            rank = 1
        """.stripMargin)
    // 3.存储
    df.repartition(1)
      .write
      .format("jdbc")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://127.0.0.1:3306/result")
      .option("dbtable", "nba_pts")
      .option("user", "root")
      .option("password", "123123")
      .mode(SaveMode.Overwrite)
      .save()
    /******************* End *******************/
    spark.stop()
  }
}

第3关:NBA球员胜率分析

任务说明:打开右侧代码文件窗口,在 BeginEnd 区域补充代码,读取 MySQL 中 work.nba_data 表的所有数据进行分析。统计出经验 work_year在 10 年或以上的 NBA 球员胜率,只统计赛季为 Career 的数据。 最终输出球员姓名字段 player_name 、胜率字段 WS、经验字段 work_year,将结果存储到 MySQL 中的 result.nba_ws表(已创建)。

result.nba_ws 表结构如下:

字段类型含义
player_namevarchar(50)球员id
wsdouble场均得分
work_yearvarchar(20)经验/工作年份

MySQL 数据库连接信息

账号: root 密码:123123 地址:127.0.0.1 端口:3306

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}
object First_Question {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("First_Question")
      .master("local[*]")
      .getOrCreate()
    /******************* NBA 球员胜率分析 *******************/
    /******************* Begin *******************/
    // 1. 读取数据,创建临时视图表
    spark.read
         .format("jdbc")
         .option("driver", "com.mysql.jdbc.Driver")
         .option("url", "jdbc:mysql://localhost:3306/work")
         .option("dbtable", "nba_data")
         .option("user", "root")
         .option("password", "123123")
         .load()
         .createOrReplaceTempView("data")
    // 2. 分析经验在10年或以上的 NBA 球员胜率
    val df: DataFrame =
      spark.sql("select player_name,ws,work_year from data where regexp_extract(work_year,'([0-9]+)') >= 10")
    // 3.存储
    df.repartition(1)
      .write
      .format("jdbc")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://localhost:3306/result")
      .option("dbtable", "nba_ws")
      .option("user", "root")
      .option("password", "123123")
      .mode(SaveMode.Overwrite)
      .save()
    /******************* End *******************/
    spark.stop()
  }
}  

第4关:NBA球员球队分析

任务说明:打开右侧代码文件窗口,在 BeginEnd 区域补充代码,读取 MySQL 中 work.nba_data 表的所有数据进行分析。根据最后效力球队,统计出综合实力前 50 的球队。 综合实力计算:每支球队内所有球员的效率值与胜率相加的平均值即为综合实力值(保留两位小数)。最终输出球队字段 last_team_name(重命名为 team_name) 、综合实力字段 cs(注意重命名),将结果存储到 MySQL 中的 result.nba_cs表(已创建)。

result.nba_cs 表结构如下:

字段类型含义
team_namevarchar(50)球队名称
csdouble综合实力

MySQL 数据库连接信息

账号: root 密码:123123 地址:127.0.0.1 端口:3306

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

object First_Question {
  def main(args: Array[String]): Unit = {

    val spark: SparkSession = SparkSession
      .builder()
      .appName("First_Question")
      .master("local[*]")
      .getOrCreate()
    /******************* NBA 球员球队分析 *******************/
    /******************* Begin *******************/
    // 1. 读取数据,创建临时视图表
    spark.read
         .format("jdbc")
         .option("driver", "com.mysql.jdbc.Driver")
         .option("url", "jdbc:mysql://localhost:3306/work")
         .option("dbtable", "nba_data")
         .option("user", "root")
         .option("password", "123123")
         .load()
         .createOrReplaceTempView("data")
    // 2. 分析综合实力
    val df:DataFrame=spark.sql("""
              select team_name,cs
              from
                   (select team_name,cs,dense_rank() over(order by cs desc) rank
                   from
                       (select last_team_name team_name,cast( avg(per + ws) as decimal(10,2) ) cs from data group by
                       last_team_name)t1)t2
              where
                   rank <= 50
              """.stripMargin)
    // 3.存储
    df.repartition(1)
      .write
      .format("jdbc")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://localhost:3306/result")
      .option("dbtable", "nba_cs")
      .option("user", "root")
      .option("password", "123123")
      .mode(SaveMode.Overwrite)
      .save()
    /******************* End *******************/
    spark.stop()
  }
}

第5关:NBA球员趋势分析

任务说明:打开右侧代码文件窗口,在 BeginEnd 区域补充代码,读取 MySQL 中 work.nba_data 表的所有数据进行分析。根据首秀时间,统计出每年新加入 NBA 的球员数量,过滤掉异常值 9999-99-99 最终输出年份字段 year(注意重命名)和数量字段 count(注意重命名),将结果存储到 MySQL 中的 result.nba_year表(已创建)。

result.nba_year 表结构如下:

字段类型含义
yearint(5)年份
countint(5)数量

MySQL 数据库连接信息

账号: root 密码:123123 地址:127.0.0.1 端口:3306

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

object First_Question {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("First_Question")
      .master("local[*]")
      .getOrCreate()
    /******************* NBA 球员趋势分析 *******************/
    /******************* Begin *******************/
    // 1. 读取数据,创建临时视图表
    spark.read
         .format("jdbc")
         .option("driver", "com.mysql.jdbc.Driver")
         .option("url", "jdbc:mysql://localhost:3306/work")
         .option("dbtable", "nba_data")
         .option("user", "root")
         .option("password", "123123")
         .load()
         .createOrReplaceTempView("data")
    // 2. 分析球员趋势
    val df: DataFrame =
        spark.sql(
            """
              select year,count(*) count
              from
                   (select regexp_extract(firstTime,"([0-9]{4})") year
                   from
                        data
                   where
                       regexp_extract(firstTime,"([0-9]{4})") != 9999)t1
              group by year
              """.stripMargin)
    // 3.存储
    df.repartition(1)
      .write
      .format("jdbc")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://localhost:3306/result")
      .option("dbtable", "nba_year")
      .option("user", "root")
      .option("password", "123123")
      .mode(SaveMode.Overwrite)
      .save()
    /******************* End *******************/
    spark.stop()

  }
}

成 绩 评 定 表 "学生姓名 "严震 "班级学号 "1109010114 " "专 业 "信息与计算科学"课程设计题目 " " " " " "NBA球员技术统计分析" " " " "报告 " "评 " " " " " " " " "语 " " " " " " " " " " " " "组长签字: " "成绩 " " " " " " " " "日期 " " " " " " " " " " " " " " " "20 年 月 日 " 课程设计任务书 "学 院 "理学院 "专 业 "信息与计算科学 " "学生姓名 "严震 "班级学号 "1109010114 " "课程设计题目 " NBA球员技术统计分析报告 " "实践教学要求与任务: " " " "设计要求〔技术参数〕: " "1、熟练掌握SPSS软件的操作方法; " "2、根据所选题目及调研所得数据,运用数据分析知识,建立适当的数学模型; " "3、运用SPSS软件,对模型进行求解,对结果进行分析并得出结论; " "4、掌握利用数据分析理论知识解决实际问题的一般步骤。 " " " " " "设计任务: " "1、查阅相资料,找到NBA球员技术的相指标,获得相数据; " "2、利用数据分析的理论,建立线性回归模型,以及对其进行主成分分析; " "3、利用SPSS软件求解,并给出正确的结论。 " " " " " "工作方案与进度安排: " " " "第一天——第二天 学习使用SPSS软件并选题 " "第三天——第四天 查阅资料 " "第五天——第六天 建立数学模型 " "第七天——第九天 上机求解并完成论文 " "第十天 辩论 " "指导教师: "专业负责人: "学院教学副院长: " " " " " "201 年 月 日 "201 年 月 日 "201 年 月 日 " 摘 要 数据分析析的主要应用有两方面,一是寻求根本结构,简化观测系统,将具有错综复 杂系的对象〔变量或样品〕综合为少数几个因子〔不可观测的,相互独立的随机变量 〕,以再现因子与原变量之间的内在联系;二是用于分类,对个变量或个样 品进行分类。聚类分析一般有两种类型,即按样品聚类或按变量〔指标〕聚类,其根本 思想是通过定义样品或变量间"接近程度〞的度量,将"相近〞的样品或变量归为一类。 本文利用利用数据分析中的因子分析和聚类分析对多个变量数据进行了分析。就是分析 和处理数据的理论与方法,数据分析中提出了广泛的多元数据分析的统计方法,包括线 性回归分析、方差分析、因子分析、主成分分析、典型相分析、判别分析、聚类分析 等。 键词:spss软件;聚类分析;因子分析;线性规划 目 录 1 数据分析的任务和目的 1 1.1 问题的背景 1 1.2 任务和目的 1 2 数据的搜集与整理 2 2.1 数据的来源 2 2.2 数据的处理 2 3 利用SPSS软件对结果进行分析 3 总 结 13 参考文献 14 1 数据分析的任务和目的 1.1 问题的背景 一年一度的NBA赛季让全世界的篮球迷为之疯狂,NBA赛事之所以如此受欢送,最主 要的原因在于NBA球员高超的球技。球队中灵魂人物的个人发挥能够直接影响其球队的成 败。因而对他们的技术统计与分析是一件十分重要的事情。众所周知,科比- 布莱恩特和阿伦- 艾弗森是深受大家喜爱的两位球员,两位球员在赛季的发挥也在一定程度上影响着两队 的战绩。因此,通过两位球员在以往的赛季中的发挥及表现,可以大概的预测两人的得 分及表现,为NBA的商业活动和广阔球迷提供数据上的参考。 1.2 任务和目的 1、频数分析〔对两人平均每场上场时间进行频数分析〕 2、根本描述统计量〔用根本描述统计量的计算结果对两人技术进行分析比拟〕 3、单样本t检验〔检验科比-布莱恩特和阿伦- 艾弗森平均每场犯规次数的均值是否为2.7〕 4、两独立样本t检验〔科比-布莱恩特和阿伦-艾弗森平均每场犯规次数比拟〕 5、 单样本非参数假设检验〔检验科比- 布莱恩特平均每场进攻次数与首发的系根本是否为1:1:10:10:10:10:10:10 :10:10:2〕 6、单样本非参数假设检验(检验科比-布莱恩特和阿伦- 艾弗森平均每场盖帽次数总体的分布是否为正态分布) 7、 单样本非参数假设检验(检验科比- 布莱恩特在某段时间内平均每场得分是否持续正常) 8、单因素方差分析(用单因素方差分析,分别分析科比-布莱恩特和阿伦- 艾弗森平均每场防守次数对平均每场得分有无显著影响) 9、相分析〔研究平均每场三分球命中率与平均每场得分之间是否具有较强的线性 系〕 10、偏相分析〔以平均每场失误次数为控制变量,研究平均每场罚球命中率与平均 每场得分的偏相系〕 11、线性回归分析〔用逐步筛选法找科比- 布莱恩特的平均每场得分的线性回
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值