查看原文
其他

NBA与Stata

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:张   宇

文字编辑:张语盈

技术总编:司海涛

好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python爬虫技术,并明确未来更进一步的学习方向。

详细培训大纲及报名方式,请点击文末阅读原文呦~


群雄四起,逐梦奥布莱恩冠军奖杯;巨星闪耀,点燃这个热情火辣的六月。金州勇士足够悲壮,而多伦多猛龙同样令人尊敬!这次NBA总决赛,注定不平凡,注定载入史册。

然而,赛季之初,在考辛斯加入金州勇士的那一刻,有多少人认为NBA的这个赛季已然大结局——五星金州必然会所向披靡,无人能敌。是啊,这个赛季,詹姆斯来到了洛杉矶,带领一众年轻人没能进入季后赛;“圣保罗”签了4000万的大合同,但是岁月拿走了他稳定的中投,也拿走了他的爆发力;这个赛季,“韦大爷”也光荣退役,献给了这个赛场最后一舞; “神龟”的僵尸跳投似乎也不再那么精准;这个赛季,老马刺也进行了大换血,失去了帕克、铁林、还有卡哇伊……这一切,似乎都意味着我们这一代人心中的NBA,即将迎来大结局。

事实也正如人们预料的一样:金州五星闪耀,奥克兰的甲骨文球馆熠熠生辉,似乎要在勇士队“搬家”之前再收获一次总冠军奖杯,为这座球馆积聚荣耀。他们在季后赛首轮击倒了不屈强硬的“平民”快船;在次轮失去“书包杜”之后连胜两场击败了老对手火箭;在西部决赛的舞台上兵不血刃地4:0淘汰了拥有双枪的开拓者。“即使失去了杜兰特,他们仍然是一支常规赛73胜的球队”。而东部风云巨变,扬尼斯再一次进化,带领密尔沃基雄鹿拿到了联盟常规赛第一的宝座;76人天赋满满,冲出东部指日可待;而猛龙队雄踞多伦多,守护着加拿大这一方土地。这一年的东部,没有连续八次进入总决赛的詹姆斯;也没有多次绞杀猛龙进击总决赛的骑士。而这支北境之王多伦多猛龙在历经抢七绝杀76人,连扳四局4:2战胜雄鹿之后,队史第一次站在了总决赛的舞台!自此,总决赛这场战役,正式打响。

开赛之前,几乎所有人都看好金州勇士,即使没有杜兰特,他们依然是那一支四年三冠的冠军球队,是总决赛赛场上更好的那一支队伍。而这支北境球队,是总决赛舞台上的新人,没有任何经验,更没有冠军底蕴。但是,冠军是靠实力与意志来赢得的。要想获得总冠军,必将拥有一个可歌可泣的球队,也会拥有一位冷静如斯的领袖。

今天,小编通过nba2stata这个命令,拿到NBA球员的赛场数据,来感受球队领袖那杀手般的意志。

nba2stata是外部命令,需要使用search nba2stata查找并安装。

nba2stata共有四个语法结构,分别是:

(1)抓取球员比赛数据。

nba2stata playerstats "name_pattern" [, playerstats_options]

(2)抓取球员介绍。

nba2stata playerprofile "name_pattern" [, playerprofile_options]

(3)抓取球队统计数据。

nba2stata teamstats "team_abv" [, teamstats_options]

(4)抓取球队阵容。

nba2stata teamroster "team_abv" [, teamroster_options]

我们主要介绍如何获取一个球员每场比赛的数据,对应的语法结构如下,由于其他语法结构的用法类似,读者可自行查阅help文件。

nba2stata playerstats "name_pattern" [, playerstats_options] 

该命令有如下选项:

(1)stat(career|season|game):将球员的数据类型分为三类,分别是职业生涯数据、赛季数据和每场的比赛数据。如果不指定该选项,默认获得球员的职业生涯数据。

(2)season(numlist):指定获取哪一赛季的数据。比如,括号中填入2018,则获取18/19赛季的球员数据。

(3)seasontype(reg|playoffs):选择获取常规赛数据还是季后赛数据,默认是全部获取。

(4)matchany|matchall:指定matchall需要将球员名字全部写入"name_pattern";而matchany写入部分球员名字即可,例如Stephen Curry可以写成Curry,但是此时也会将他弟弟的数据一并获取。默认是matchany。

(5)clear:清空内存数据。

爬虫俱乐部将于2019年8月22日至28日湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。

初级班主要是为了让学员掌握Stata数据分析技巧,并能独立撰写相关的程序。涉及内容包括多种数据格式的读取和输出、数据的合并、实证结果的输出以及爬虫俱乐部编写的命令介绍等。

高级班主要是为了让学员掌握Stata软件进阶操作,涉及内容包括正则表达式、网络爬虫技巧、文本分析等技术。经过团队精心策划,此次课程新增北大法宝裁判文书信息提取和百度地图api调用两大案例,以及新兴实证研究方法介绍,相信定能让学员受益匪浅!

扫描下方二维码提交报名信息→缴费→发送缴费截图至statatraining@163.com(邮件主题为“爬虫俱乐部2019暑期Stata培训+姓名+单位+班次”)→报名成功。

               

基于上述介绍,我们使用下面的命令获取猛龙当家球星Kawhi Leonard和勇士当家球星Stephen Curry的总决赛数据,并绘制柱状图作比较:

(1)使用nba2stata命令得到莱昂纳德和库里本赛季每场比赛的数据,并按照日期排序:

nba2stata playerstats "Kawhi Leonard" "Stephen Curry", clear season(2018) stat(game) matchany

(2)保留seasontype中包含Playoffs,同时matchup(对阵双方)中包含GSW和TOR的数据,这样总决赛期间两个球员的比赛数据就保存下来了,程序如下:

keep if index(seasontype,"Playoffs") & index(matchup,"GSW") & index(matchup,"TOR")

结果如下:

(3)数据整理。我们需要将数据整理成三个变量:比赛日期、莱昂纳德每场得分、库里每场得分,处理程序如下:

foreach c in "Kawhi Leonard" "Stephen Curry"{preservekeep if playername == "`c'" //保留一名球员数据。keep gamedate pointsscored //保留比赛日期和得分两个变量。if ustrregexm("`c'","(.*?) ") local name = ustrregexs(1) //由于变量名中不能存在空格,这里我们将球员的名提取出来,用来重命名pointsscored变量。di "`name'"rename pointsscored `name'save `name'.dta, replace restore}

4)合并数据并绘图。

use Kawhi.dta ,clear merge 1:1 gamedate using Stephen.dta drop _m gen game = "game" + string(_n)graph bar Kawhi Stephen, over(game) title(季后赛球星得分对比) b1title(game) ytitle(得分) /// legend(label(1 "Kawhi") label(2 "Stephen")) bar(2,bfcolor(gs3))

结果如下:

可以发现,两队当家球星表现互有输赢,但篮球是一个团队运动,经过六场大战,世界见证了猛龙队问鼎总冠军!

关于nba2stata命令的介绍就到这里,希望对大家有所帮助。


对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

       爬虫俱乐部2019暑期Stata编程训练营报名啦!


关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存