用Python製作歐洲盃視覺化圖表!

用Python製作歐洲盃視覺化圖表!

最近不少小夥伴都會熬夜看歐洲盃。

今年的歐洲盃相比起往年的歐洲盃來說,可謂是冷門頻出,出乎意料。

真的不知道,第一會花落誰家~

本期小編就和大家分享一下,用Python和Matplotlib繪製一個足球運動員的資料視覺化圖表。

很多小夥伴在學習python的時候總會遇到一些問題和瓶頸,沒有方向感,不知道該從哪裡入手去提升,對此我整理了一些資料,希望能夠去幫助到小夥伴們,可以關注up主,並在後臺私信小編:“資料”即可領取。

來看一下C羅的情況,跟老詹一樣高齡,真的佩服。

用Python製作歐洲盃視覺化圖表!

資料來源於下面兩個網站,Understat和Fbref。

用Python製作歐洲盃視覺化圖表!

用Python製作歐洲盃視覺化圖表!

連結:https://understat。com/

連結:https://fbref。com/en/

歐洲足球五大聯賽,英超、意甲、西甲、德甲、法甲。

先看一下射門資料的視覺化,本質上和籃球的出手點圖差不多,都是散點圖型別。

匯入相關的Python庫。

用Python製作歐洲盃視覺化圖表!

從Understat網站爬取射門資料,使用BeautifulSoup、JSON和pandas解析和處理資料。

用Python製作歐洲盃視覺化圖表!

此處的ID,透過查詢球員名字可知

用Python製作歐洲盃視覺化圖表!

查詢中國球員武磊,點選訪問,在位址列處,可以看到球員ID。

得到資料如下。

用Python製作歐洲盃視覺化圖表!

包含射門位置(x、y)、xG(預期進球)、射門結果、賽季。

其中x、y的座標值為0~1之間,不適合在Matplotlib顯示,所以選擇放大100倍。

用Python製作歐洲盃視覺化圖表!

得到結果如下。

用Python製作歐洲盃視覺化圖表!

既然已經成功獲取Understat網站的資料,就可以去獲取Fbref網站的資料啦。

這裡是球員的一些個人資訊,以及賽季的平均資料。

用Python製作歐洲盃視覺化圖表!

比如全名、國家、位置、俱樂部、聯賽、年齡、出生年份、上場時間、得分資料等等。

因為網頁的資料是表格形式,所以直接使用pandas的read_html函式,解析表格爬取資料。

這個網站需要取消一下證書驗證,要不然連線不成功。

用Python製作歐洲盃視覺化圖表!

獲取球員的相關資料。

用Python製作歐洲盃視覺化圖表!

得到結果如下。

用Python製作歐洲盃視覺化圖表!

資料都已經準備好了,那麼我們就可以將資料繪製到圖表上。

用Python製作歐洲盃視覺化圖表!

裝mplsoc

cer

、h

ighlight_tex

t這兩個Python庫

用Python製作歐洲盃視覺化圖表!

其中mplsoccer庫可以自定義繪製足球場,無需我們自己繪製場地圖。

想了解更多,可以訪問它的GitHub地址。

https://github。com/andrewRowlinson/mplsoccer

用Python製作歐洲盃視覺化圖表!

初始化一些設定,畫布背景色、字型顏色、預設字型,字型大小,此處選擇中文字型。

用Python製作歐洲盃視覺化圖表!

新建一個畫布。

用Python製作歐洲盃視覺化圖表!

顯示如下。

用Python製作歐洲盃視覺化圖表!

繪製19-20賽季,C羅的進球情況。

用Python製作歐洲盃視覺化圖表!

透過設定mplsoccer的引數,繪製半個足球場。

用Python製作歐洲盃視覺化圖表!

果然,左下方有半個足球場。

將射門資料用散點圖表示,分為進球得分和未成功進球得分兩種情況。

用Python製作歐洲盃視覺化圖表!

未得分射門散點圖。

用Python製作歐洲盃視覺化圖表!

得分散點圖。

用Python製作歐洲盃視覺化圖表!

結果如下,失敗的比成功的多。

用Python製作歐洲盃視覺化圖表!

這樣,我們就將C羅在2019-2020賽季的所有射門點資料可視化出來了。

其中散點的大小,是預期進球的大小。

新增標籤及圖例,設定相應的位置、文字、字型等設定。

用Python製作歐洲盃視覺化圖表!

成功新增附加資訊。

用Python製作歐洲盃視覺化圖表!

顯示賽季、xG、得分次數、射門次數資訊。

同樣將20-21賽季的資料繪製出來,放置在19-20賽季的右側。

用Python製作歐洲盃視覺化圖表!

結果如下。

用Python製作歐洲盃視覺化圖表!

C羅老當益壯啊,狀態一點也沒有下滑。

下面接著繪製所有球員的資料散點圖,看看C羅的資料能在哪一檔?

用Python製作歐洲盃視覺化圖表!

建立一個座標軸。

用Python製作歐洲盃視覺化圖表!

首先對資料進行篩選,上場時間最少要有900s,而且位置為前鋒此類的。

畢竟我們不能拿個守門員,跟C羅比資料吧,參考意義不大。

用Python製作歐洲盃視覺化圖表!

所有球員每90s預期進球和得分次數的資料情況。

用Python製作歐洲盃視覺化圖表!

現在我們篩選出C羅的資料,在散點圖上用不同的顏色及透明度來突出顯示它。

用Python製作歐洲盃視覺化圖表!

結果如下。

用Python製作歐洲盃視覺化圖表!

可以看到C羅的資料還是比較高效的,雖不是第一,但也是前幾的存在。

最後給散點圖新增網格線,以及x軸和y軸標籤。

用Python製作歐洲盃視覺化圖表!

結果如下。

用Python製作歐洲盃視覺化圖表!

不愧是C羅,在2020-21賽季幾乎每90秒就能進1顆球。

18年就已經有一個記錄!

C羅成歷史第一位在90分鐘內每分鐘都有進球的球員

最後新增文字資訊,包含標題,C羅的頭像,場上位置、年齡、效力球隊。

此處使用hightlight-text庫,可以高亮文字。

用Python製作歐洲盃視覺化圖表!

C羅的頭像、效力的隊伍logo,都是小F自己製作的。

得到結果如下。

用Python製作歐洲盃視覺化圖表!

儲存為圖片。

用Python製作歐洲盃視覺化圖表!

看起來還不錯哦。

用Python製作歐洲盃視覺化圖表!

好了,本期的分享就到此結束了,有興趣的小夥伴可以自行去實踐學習。

很多小夥伴在學習python的時候總會遇到一些問題和瓶頸,沒有方向感,不知道該從哪裡入手去提升,對此我整理了一些資料,希望能夠去幫助到小夥伴們,可以關注up主,並在後臺私信小編:“資料”即可領取。

相關文章