足球
欧冠杯
篮球
当前位置:
首页 > 
篮球资讯 > 
NBA 史上最弱球队大揭秘:elo 值分析揭示常规赛胜场期望

NBA 史上最弱球队大揭秘:elo 值分析揭示常规赛胜场期望

  • 时间:2024-07-25 22:31:51|
  • 来源:NBA直播吧

雷锋网:我们之前发表过一篇分析NBA历史最强球队的文章,详情请看《分析近四年比赛数据,NBA最强球队原来是这支》,这次我们来看看究竟哪支球队最弱。原文作者为集智总经理景略,原载于集智网专栏,雷锋网已获授权。

文章中部分代码会有标注“Code ”字样的注释,留给读者在线完成并评估,相当于一个小作业,请读者自行填空。(编者注:每处需要补充的部分都会给出提示信息)

01. elo 值

elo值就像竞技类网游中的天梯系统,每场比赛结束后,队伍会根据表现做出调整,胜场增加、负场减少,小胜增加,大胜增加。elo值体现的是一支队伍在常规赛中的表现,比赛预期胜场数为1800,对应的期望胜场数为67场以上,也就是王朝级的队伍。具体天梯段位分布如下:

ELO值匹配记录对应队伍描述

1800 67-15 史诗级

1700 60-22 冠军争夺者

1600 51-31 季后赛水平

1500 41-41 平均

1 乐透级别

1300 22-60 无语

1200 15-67 糟糕

历史最高纪录是1996年总决赛公牛队,一度突破1850分。

知名数据分析网站538()提供了NBA历史赛程的elo值记录(截止到2015赛季),有6万多条数据,这个数据量不算很大,不过直接在本地用Excel打开操作估计体验还是挺痛苦的,这里就给大家介绍一下如何使用+SQL来处理nba球队名称英文,也许对在Excel中苦苦挣扎的小伙伴们有帮助。

02. 元组

Tuple 是另一种常用的数据类型,它和 list 很相似,可以包含若干个元素,元素的调用方式为方括号 [] + index。

= [0,1,2,3]

= (0,1,2,3)

# 列表的第一个元素

[0]

# 元组的第二个元素

[1]

主要区别在于:

● 元组用括号 () 定义,列表用方括号 [] 定义

● 元组是不可变的

● 即使只有一个元素,也需要用逗号隔开,如(item1, ),如果没有逗号,结果依然是元素本身,而不是元组。

元组只有在定义时才可以赋值,如果强行改变它们​​,会收到解释器的错误信息。

“tuple” 不包含项

有些函数并不是返回单个值或者字符,而是返回多个输出nba球队名称英文,这些输出是元组格式的。例如,下面的示例返回两个输入参数的和与乘积。您可以单击“运行”查看两个输出。 ()中。

定义(x,y):

(x + y),(x * y)(2,3)

03.数据库

在前面的教程中,我们接触过一些数据集,有的在程序中生成,有的存储在文本文件中。对于较大的数据集,通常将其存储在文件中。然后将其读入内存。

但是文件存储数据(.txt或者.csv)还是面临很大的问题,首先当数据量大于计算机内存时,会带来很大的计算负担,甚至无法运行;其次数据可能比较高频,比如双11高峰期,电商每秒有几万笔交易,普通的文件格式显然无法处理。

于是数据库就应运而生了。数据库首先是一种结构化存储数据的方式,为了更加灵活的处理数据,程序不再一次性把数据全部读入内存,而是根据特定的需要通过查询来获取相应的数据集。完成这些任务的编程语言就叫做SQL(Query)。稍有计算机知识的朋友一定对这个缩写很熟悉。

著名的关系数据库管理系统有MySQL等。

ab4aa33284977c0de8703015de6d0e2f.png

04.

SQL是一种专为查询和操作数据库而设计的语言,因此它不像Java这样的语言那样功能丰富且可扩展。

一个数据库由若干个表组成,就好比每个Excel文件有多个表一样,每个表有行和列,这个比较容易理解,一行代表一个样本,多个列定义各个维度的属性。

它是一个轻量级的数据库管理系统,占用资源很少,处理速度很快,目前已经更新到3.0版本,有专门用于处理语句的库。

下面我们将以一个历史NBA赛程数据为例,来了解SQL的基本规则和应用方法。(数据来源:)

05.查询

与数据库通讯的最基本形式是查询,查询返回符合条件的数据子集,基本关键字后面跟着的是所选列的表头,前面提到过,一个数据库中可能会有多张表,所以查询语句必须指定源表,关键字是FROM。

,,... 来自表;

注意,SQL 要求句子末尾有分号 (;),这与您的习惯非常不同,可能会唤起曾经被 C++ 主导的恐惧。

NBA数据库只包含一张表nba球队名称英文,名字叫sheet,假设我们要查询sheet中的列,那么对应的SQL为:

从 ;

如果数据库很大,即使你只查询某些列,也需要大量的计算。这里,你可以引入一个新的关键字 LIMIT,后面跟着要查询的行数。例如,如果你只想要前 5 行的列,那么 SQL 就是:

从限制 5 开始;

以下示例通过调用以下命令查询 elo_n 和两列的前 5 行:

conn = .('/mnt/vol0///.db')

当前时间 = 连接数()

# 代码补全

查询 =

# 代码补全

cur.(查询)

elos = cur.()

conn.close()

打印(elos)

完成提示:查看示例,替换关键字之间的名称,并将字符类型分配给变量查询

可以看出查询语句返回的是一个以元组为元素的列表,上面例子的输出是一个5(elo_n, )的列表,应该是:

[(1293.2767, 40.29483),

(1306.7233, 41.70517),

(1309.6521, 42.),

(1297.0712, 40.),

(1279.6189, 38.)]

06. 与

在04节的最后一个例子中,除了SQL语句之外,还有很多命令,这些命令都是调用语句。

连接对象

第一步是与数据库建立连接。.() 会返回实例对象,然后将其存储为 conn 变量。此时,conn 对应于整个数据库。

conn = .(“/mnt/vol0///.db”)

光标对象

对象的 .() 可以创建一个游标对象( ),游标对象可以对数据库执行SQL语句,进行更加灵活的数据操作。

王莽的光标

query 是一个纯粹的 SQL 语句,实际是通过 cur.() 来执行的,此时数据库查询的结果还在 cur 对象中,最后调用 cur.() 返回所有查询结果并存放在变量 elos 中,也就是最终的元组列表。

如果只想返回一个查询结果,可以使用cur.()。

关于和的结合应用,后面会深入讲解,本文依然以SQL语句为中心。

07. 哪里

简单地从数据库的表中查询某一列的前几行数据太过有限,无法满足应用需求。事实上,我们感兴趣的数据子集并不总是按顺序排列的,而是遵循某种限制。

为了进一步缩小精准查询范围,可以使用关键字WHERE。例如我们想查询NBA历史上赛后elo值elo_n高于1850的强队ID,SQL语句为:

,elo_​​n 来自工作表 其中 elo_n > 1850

查询结果显示,历史上唯一一支elo值突破1850的球队是1996年总决赛时期的芝加哥公牛队。

请查询elo_n小于1100的弱队ID及对应的比赛日期,库、连接对象、游标对象都是预定义的,您可以先定义SQL查询语句查询。

# 代码补全

查询 =

# 代码补全

cur.(查询)

= 当前.()

conn.close()

打印()

完成提示:请按照“”、“”、“elo_n”的顺序搜索。

查询筛选结果显示,历史上唯一一支曾经下滑到1100名以下的弱队,是1968年的一支名为“ ”的球队。

我认为他们之所以这么弱,是因为他们的名字不好。“”在英文中是“仆人”的意思。《炉石传说》中有很多仆人的名字叫“”,比如11圣盾战士: