通過nba近三十年的資料來看:
。匯入所需包
# -*- coding: utf-8 -*-
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.font_manager import fontproperties
import numpy as np
import matplotlib as mpl
import warnings
import re
warnings.filterwarnings('ignore')
plt.rcparams['font.family'] = ['microsoft yahei']
匯入資料
匯入資料並生根據比賽比分生成一列分差:
data_team = pd.read_csv('/home/kesci/input/nbadata/team_season.csv',encoding ='utf-8')
# 根據比分生成一列分差
data_team[u'分差'] = (data_team[u'比分'].str.extract(r"(\d+\.?\d*)-(\d+\.?\d*)", expand=false)[0].astype('int')
- data_team[u'比分'].str.extract(r"(\d+\.?\d*)-(\d+\.?\d*)", expand=false)[1].astype('int'))
資料相關性
解析來我們看下各項統計資料之間有何相關性,使用的是pandas的內建函式dataframe.corr()來計算資料之間的皮爾遜相關係數,絕對值越接近1表明相關性越強。
data_corr = data_team.corr()
plt.figure(figsize = (15,12))
sns.heatmap(data = data_corr,cmap = 'blues',linewidths=0.25,annot=true)
plt.show()
我們通過seaborn的heatmap來展示:
我們能看到什麼:
三十年,風格變了嗎
可能看了很多年的球迷都在感嘆:
但事實真的是這樣的嗎或者說這些變化又是怎麼體現到資料之中的,我們接下來看一看。
# 對比賽時間處理,取年份用於分組
data_team[u'年份'] = data_team[u'時間'].str.split('-').str[0]
data_team[u'月份'] = data_team[u'時間'].str.split('-').str[1]
data_grouped_years = data_team.groupby(data_team[u'年份']).mean().reset_index()
plt.figure(figsize=(15, 12))
for i, column in enumerate(data_grouped_years.iloc[:, 1:19].columns, 1):
plt.subplot(6, 3, i)
plt.plot(data_grouped_years[u'年份'], data_grouped_years[column], 'r')
my_x_ticks = ['1985', '1990', '1995', '2000', '2005', '2010', '2016']
plt.xticks(my_x_ticks)
plt.ylabel(column)
plt.show()
通過繪製折線圖我們看下各項資料在三十年間的變化:
我們能看到什麼:
總體來說,防守型的資料都是在下降,無論是籃板,搶斷還是蓋帽,外線出手暴漲。以前是內線的時代,現在是小球時代,中鋒作用被弱化。畢竟nba是乙個商業聯盟,更多的是迎合市場,乙個更能得分的球員總是會比乙個更能搶籃板的球員更受歡迎。
三分的變化
前文中我們也看到了,三分球這些年越來越被重視,我們接下來更加直觀來展現下這些年三分選擇的變化:
data_team[u'三分佔比'] = data_team[u'三分命中']*3/data_team[u'得分']
data_team_3ps_grouped = data_team[u'三分佔比'].groupby(
[data_team[u'年份'], data_team[u'月份']]).mean().reset_index()
data_team_pivot = data_team_3ps_grouped.pivot(u'月份', u'年份', u'三分佔比')
plt.figure(figsize=(20, 5))
with sns.axes_style("white"):
sns.heatmap(data=data_team_pivot, annot=true, linewidths=.5, cmap='reds')
plt.ylabel(u'月份')
plt.show()
我們統計來這些年來三分球佔比的情況,通過seaborn的heatmap做如下展示:
我們能看到什麼:
現在都這麼拼命的扔三分,真的就很合理嗎?
在討論三分合理性之前,我們先引入乙個概念——有效命中率
efg%(effective field goal percentage)通常翻譯為「有效命中率」,該資料優化了三分球對於球員命中率的影響。 考慮到每乙個三分球實際上相當於命中了1.5個兩分球,因此,efg%的計算公式為:efg% = ( fg + 0.5 * 3p ) / fga,其中: fg:投籃命中數; 3p:三分命中數 fga:投籃出手總數
其實簡單來說,投中乙個三分,算1.5個投籃命中數,下面我們來看下近三十年來,有效命中率是怎麼在變化。
data_team[u'有效命中率'] = (data_team[u'命中']+0.5 *
data_team[u'三分命中'])/data_team[u'出手']
data_team_efg_grouped = data_team.groupby(
[u'年份'])[u'有效命中率', u'投籃'].mean().reset_index()
plt.figure(figsize=(15, 5))
plt.plot(data_team_efg_grouped[u'年份'], data_team_efg_grouped[u'有效命中率'], 'r')
plt.plot(data_team_efg_grouped[u'年份'], data_team_efg_grouped[u'投籃'], 'g')
my_x_ticks = ['1985', '1990', '1995', '2000', '2005', '2010', '2016']
plt.xticks(my_x_ticks)
plt.legend(loc='best')
plt.show()
我們使用折線圖來看這些年真實命中率的變化:
我們可以看到,這些年整體命中率雖然是在下降,不過真實命中率反而要高於以前了,可能對於很多老球迷來說,這樣的nba少了很多對抗,觀賞性不如以前,不過我們還是可以看到,進攻效率卻更高了,當然這樣的變化是好是壞,就因人而異了。
結論性的東西就不說了,前文都已經說了很多了。
nba這麼多年變化不少,作為乙個球迷的我來說,變化其實也不小,想著以前高中大學的時候,為了自己喜歡的球星,跟同學爭的面紅耳赤也爭不出個好歹,大學的時候只要上午有比賽,鐵定是逃課去看比賽的,漸漸的參加工作之後,看nba的時間沒那麼多了,搞得現在好多新生輩的球員都不認識了,關注的永遠只有老詹,有時候看到一些說老詹不好的話,也沒那麼生氣了,現在希望的就是老詹還能多打幾年,等老詹退役了,我也應該就不再年輕了。
peace~
《激盪三十年》
上冊 1.從改革開放元年開始寫,那重點就是中國改革,不錯,吳曉波確實這麼幹,主要講述了中國的制度改革及其發生的種種大事記。2.很多領導需要有no1,但是不是誰都敢上的,也許你想的比誰都早,並且比誰都早做,但不一定最後成功的是。比如 info hightway,比如飯否 題外話,不過王興說的確實很對,...
三十年河東三十年河西
長安.書生 夜空的煙火劃過 聽聞這一屆的學子出了個學識驚人的狀元,著一身粗布衣裳的書生站在榜文不遠處眸子黯淡了下來。十載苦讀,仍是落榜了,卻是因為他沒有錢財去打點,這讓他如何自處。榜首之人的文章原是自己所書,如今被盜用。想到母親殷切等待的神色,他垂眸神傷。想起昨夜來找自己的人,他內心暗自掙扎了一番,...
三十年一開花 三十年一結果
就在剛才,中國男子足球國家隊創造了乙個新的歷史 三十年來首次戰勝宿敵南韓隊!而且是3 0完勝!作為一名 老 準球迷,在全場 我愛你 的助威聲中心潮澎湃,更是在終場哨音響起的時候,禁不住落淚!無數的辛酸,使現在 中國隊的比賽已經是有一搭無一搭的事情,下午無意中看到女足的比賽,才知道稍後有男足。但是,今...