iT邦幫忙

2024 iThome 鐵人賽

DAY 29
1
AI/ ML & Data

菜就多練之我叫小賀逃離DS新手村系列 第 29

Day 29 持之以恆-Side Project

  • 分享至 

  • xImage
  •  

Side Project🐭

俗話說得好:「萬事起頭難」,當你忽然心血來潮想要在下班、下課之餘製作_side project_時,往往會不知道該從何下手。我自己覺得可以從兩個大方向來切入,一是「職涯規劃」,二是「興趣」。所謂的職涯規劃,就是從自己有興趣的行業構想主題,無論是金融業、科技業、醫療產業還是電商,不同的產業關注的議題和需要解決的問題都不盡相同。以職涯規劃作為主題發想,一方面可以讓自己更清楚地了解對這個行業的興趣程度,另一方面也能增加自己的domain knowledge。但對我而言,從自己的興趣著手會更直截了當,因為要足夠熱愛才有辦法變成興趣,日常的一切事物其實都是很好的題材。

以我個人來說,身為十年的資深(?)NBA球迷,籃球對我來說就像伴侶一樣。在鐵人賽的最後,我希望能結合我的摯愛來做一個ending。


NBA Analysis🐮

要獲得NBA數據除了透過爬蟲或別人整理好的tabular data外,還可以透過nba_api這個套件來做NBA分析。以下簡單示範如何透過nba_api來做應用。

實戰演練

程式碼如下:

!pip install nba_api
from nba_api.stats.static import players
from nba_api.stats.endpoints import playercareerstats

# 匯入NBA players的資料
nba_players = players.get_players()

# 查詢特定球員ID
name = 'Kevin Durant'
for player in nba_players:
  if player['full_name'] == name:
    print(player['id'])

# 顯示特定球員生涯數據(這裡以KD為例)
career = playercareerstats.PlayerCareerStats(player_id='201142') 
career.get_data_frames()[0]

有了生涯數據後就可以做EDA跟visualization

程式碼如下:

import matplotlib.pyplot as plt
import seaborn as sns
from nba_api.stats.endpoints import playercareerstats

# 顯示特定球員生涯數據(這裡以KD為例)
career = playercareerstats.PlayerCareerStats(player_id='201142')
df = career.get_data_frames()[0]

# EDA
print(df.info())  # 檢查dataset的基本信息
print(df.describe())  # 檢查dataset的統計摘要
print(df.isnull().sum())  # 檢查缺失值

# Visualization
plt.figure(figsize=(14, 8))

# 每賽季得分、助攻、籃板趨勢圖
plt.subplot(2, 1, 1)
sns.lineplot(data=df, x='SEASON_ID', y='PTS', label='Points')
sns.lineplot(data=df, x='SEASON_ID', y='AST', label='Assists')
sns.lineplot(data=df, x='SEASON_ID', y='REB', label='Rebounds')
plt.title('Kevin Durant Career Stats')
plt.xlabel('Season')
plt.ylabel('Count')
plt.legend()

# 每賽季投籃命中率趨勢圖
plt.subplot(2, 1, 2)
sns.lineplot(data=df, x='SEASON_ID', y='FG_PCT', label='Field Goal %')
sns.lineplot(data=df, x='SEASON_ID', y='FG3_PCT', label='3-Point %')
sns.lineplot(data=df, x='SEASON_ID', y='FT_PCT', label='Free Throw %')
plt.title('Kevin Durant Shooting Percentages')
plt.xlabel('Season')
plt.ylabel('Percentage')
plt.legend()

plt.tight_layout()
plt.show()

輸出結果如下:

https://ithelp.ithome.com.tw/upload/images/20240902/20155713hTmrSN129W.png

從圖表可以看到KD的命中率真的穩的很誇張,難怪大家叫他easy money🤣


題外話😂

禮拜一要上班的話,禮拜天晚上絕對不能嗨不然隔天上班絕對往生。


參考資料💯

nba_api
用Python 輕鬆取得NBA 所有數據


上一篇
Day 28 海納百川-合成資料
下一篇
Day 30 這不是終點而是起點
系列文
菜就多練之我叫小賀逃離DS新手村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言