2015-2016賽季NBA賽事比分簡單數(shù)據(jù)分析
數(shù)據(jù)來源:某數(shù)據(jù)分析QQ群(群友下載于NBA官方網(wǎng)站)
原始數(shù)據(jù)比較簡單,依次包含了比賽日期、比賽開始時間、客隊、客隊得分、主隊、主隊得分、個人比賽數(shù)據(jù)(Box Score)、是否有加時賽、備注等。雖然數(shù)據(jù)簡單,但依然有非常大的分析空間。本文為了實踐之前學(xué)習(xí)的R語言相關(guān)內(nèi)容,只做了一項非常簡單的數(shù)據(jù)分析。

導(dǎo)入數(shù)據(jù)
數(shù)據(jù)為CSV文件,直接使用R語言導(dǎo)入CSV文件的方法。
其中,第二個參數(shù)header默認(rèn)為FALSE,即數(shù)據(jù)框的列名為“V1,V2...”,設(shè)置為TRUE時以CSV文件的第一行作為列名。參數(shù)sep是分隔數(shù)據(jù)的分隔符,默認(rèn)為空格,可以設(shè)置為逗號(sep=,),分號(sep=;)和制表符(tab)。參數(shù)colClasses 為每一列指定一個類,為了方便處理,先將所有的數(shù)據(jù)都指定為字符型(character)。由于字符型數(shù)據(jù)在讀入時自動轉(zhuǎn)換為因子,所以參數(shù)stringAsFactors=FALSE是為了防止導(dǎo)入的數(shù)據(jù)進(jìn)行任何的因子轉(zhuǎn)換。
具體可查閱《R語言實戰(zhàn)(第2版)》第二章中“2.3.2 從帶分隔符的文本文件導(dǎo)入數(shù)據(jù)”相關(guān)內(nèi)容。關(guān)于如何導(dǎo)入Excel數(shù)據(jù)可以參考文章【R語言】:導(dǎo)入Excel數(shù)據(jù) 和【R語言】:簡單數(shù)據(jù)處理分析。
數(shù)據(jù)預(yù)處理
一、重命名列名
為了方便處理,在導(dǎo)入數(shù)據(jù)時保留了文件中的第一行作為列名。

首先對原始數(shù)據(jù)進(jìn)行初步分析:第一列比賽日期(Date)的列名無需更改;第二列為比賽開始時間,原列名包含有英文縮寫ET,推測其為美國東部時間East Time的縮寫,決定把列名更改為Start_time;第三列為客場或中立球隊,更改為V_team;第四列是客隊得分,更改為V_PTS;第五列是主場或中立球隊,更改為H_team;第六列是主隊得分,更改為H_PTS;第七列是詳細(xì)的個人比賽數(shù)據(jù),應(yīng)該有內(nèi)鏈,但沒有抓取到,隨后刪除;第八列標(biāo)記了是否進(jìn)行了加時賽(如果有是OT,沒有為空);第九列是備注,全部為空,隨后刪除。
二、刪除無效數(shù)據(jù)和缺失值
1、刪除第七列和第九列的無效數(shù)據(jù)
可參考文章:【R語言】:基本數(shù)據(jù)管理(2)
2、刪除觀測的缺失值
比賽日期、客隊、客隊得分、主隊、主隊得分這五個列向量為空的數(shù)據(jù)都需要刪除。
應(yīng)該能用更簡單的代碼來實現(xiàn),但暫時不清楚,以后遇到了再補(bǔ)充更改。
三、處理日期、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)排序
1、處理日期
比賽日期這一列包含的內(nèi)容為星期(縮寫)+月(縮寫)+日(數(shù)字)+年(數(shù)字),利用函數(shù)str_split_fixed()將該列拆分為星期、月日年兩列。
這兩列數(shù)據(jù)在隨后數(shù)據(jù)分析中都有用,將在分析之前再跟實際需求分別賦值到數(shù)據(jù)框中。

2、數(shù)據(jù)類型轉(zhuǎn)換
將比賽分?jǐn)?shù)轉(zhuǎn)換為數(shù)值格式,以便于之后的相關(guān)計算。
3、數(shù)據(jù)排序
此外,原始數(shù)據(jù)已經(jīng)按照比賽時間的升序排列,目前暫時不變,之后將根據(jù)需要另做排序。
簡單數(shù)據(jù)分析
NBA整個賽季的比賽非常多,整個賽季總共近1300場比賽??梢粋€賽季下來,一周7天從星期一到星期天,到底聯(lián)盟更喜歡把比賽安排到哪一天呢?會是周五晚上,還是周六晚上呢?還是其他某天晚上呢?
運(yùn)行代碼后可得

1、統(tǒng)計每天比賽的數(shù)量
2、新建數(shù)據(jù)框,包含星期和天數(shù)(參考【R語言】:基本數(shù)據(jù)管理(1))
3、2015-2016賽季NBA一周每天的比賽數(shù)量
其中,關(guān)于函數(shù)text()和函數(shù)minor.tick()的詳細(xì)用法可參考:【R語言】:圖形初階(3)

4、簡單分析
NBA整個2015-2016賽季(包含常規(guī)賽和季后賽),在一周內(nèi)周三晚上的比賽數(shù)量最多(竟然不是周末),其次是周五晚上,周一晚上和周六晚上的比賽數(shù)量一樣多,并列第三。
后記
NBA的各項數(shù)據(jù)是一個非常大的數(shù)據(jù)寶藏,今天這個非常簡單的數(shù)據(jù)分析的小例子,僅僅利用非常少量的數(shù)據(jù)以及非常簡單的數(shù)據(jù)源。
稍微展開,就能想到更多復(fù)雜的分析,比如:
所有NBA球隊常規(guī)賽(季后賽)主場(客場)平均得分(失分);
某支球隊常規(guī)賽主場平均得分(失分)、客場平均得分(失分),季后賽主場平均得分(失分)、客場平均得分(失分);
某支球隊常規(guī)賽(全部、主場、客場)的勝率、季后賽(全部、主場、客場)的勝率、包含加時賽(全部、主場、客場)勝率、得分(失分)上百(未上百)的比賽勝率;
某支球隊周幾的比賽勝率最高、幾點開始的比賽勝率最高。NBA數(shù)據(jù)幾乎擁有無限多可以分析的點以及可以深挖的內(nèi)容,并且NBA各支球隊目前也非常重視各項數(shù)據(jù),并且用于指導(dǎo)球隊的技戰(zhàn)術(shù)提升和比賽。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由財神資訊-領(lǐng)先的體育資訊互動媒體轉(zhuǎn)載發(fā)布,如需刪除請聯(lián)系。