不知不觉,老大已经走了1000天了,正好这个星期的数据分析的课就是科比投篮可视化,让我一起来分享一下吧。

对照列表机翻,仅供参考

action_type 进攻方式(更具体)

combined_shot_type 进攻方式

game_event_id 比赛时间id

game_id 比赛ID

lat 投篮点

loc_x 投篮点

loc_y 投篮点

lon 投篮点

minutes_remaining 单节剩余时间(分钟)

period 表示第几节

playoffs 是否是季后赛

season 赛季

seconds_remaining 剩余时间(秒)

shot_distance 投篮距离

shot_made_flag 是否进球

shot_type 两分球或三分球

的【‘ 投篮区域

shot_zone_basic 投篮区域(更具体)

shot_zone_range 投篮范围

team_id 球队ID

team_name 球队名称

game_date 比赛日期

matchup 比赛双方

opponent 对手

shot_id 投篮ID

步骤1

导包:import pandas as pd

import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

步骤二:读取数据(使用PY,EXCEL皆可)

data1=pd.read_csv('./data.csv')

* 读取列出数据前5条
data1.head()

* 整理清洗数据(空值、异常值等)
d1=data1[data1['shot_made_flag'].notnull()]

步骤3:

* 数据可视化
参考下图绘制投篮位置散点图,加上图例标签

 

plt.figure(figsize=(15,30))

plt.scatter(data=f1, x='loc_x', y='loc_y')

plt.show()

 还有一种是有颜色的

from turtle import color

plt.figure(figsize=(15,30))

bankshot=d1[d1['combined_shot_type']=='Bank Shot']

dunk=d1[d1['combined_shot_type']=='Dunk']

hookshot=d1[d1['combined_shot_type']=='Hook Shot']

jumpshot=d1[d1['combined_shot_type']=='Jump Shot']

layup=d1[d1['combined_shot_type']=='Layup']

tipshot=d1[d1['combined_shot_type']=='Tip Shot']

plt.scatter(bankshot.loc_x,bankshot.loc_y,color='grey')

plt.scatter(dunk.loc_x,dunk.loc_y,color='k')

plt.scatter(hookshot.loc_x,hookshot.loc_y,color='y')

plt.scatter(jumpshot.loc_x,jumpshot.loc_y,color='g')

plt.scatter(layup.loc_x,layup.loc_y,color='r')

plt.scatter(tipshot.loc_x,tipshot.loc_y,color='b')

plt.title('投篮位置')

c1=['跳投','上篮','扣篮','补篮','勾手','擦板']

plt.legend(c1)

plt.show()

这是matplotlib的方法还有一种seaborn的但是不好看

plt.figure(figsize=(40,20))

sns.relplot(data=f1, x='loc_x', y='loc_y',hue='combined_shot_type')

plt.show()

* 参考下图绘选手出手方式(次数)、投篮命中率、出售距离的柱状统计图
*
g1=d1.groupby(d1['combined_shot_type']).count()['action_type'].sort_values(
ascending=False)

plt.bar(c1,g1)

plt.ylabel('进攻次数')

plt.xlabel('进攻方式')

plt.show()

*

m1=d1['shot_zone_basic'].value_counts().plot.barh()

b = np.array([0,1,2,3,4,5,6])

n1=['后场','左边底线三分','右边底细三分','除进攻有理区外的禁区','底线之外的三分','进攻有理区','中距区']

plt.yticks(b,('后场','左边底线三分','右边底细三分','除进攻有理区外的禁区','底线之外的三分','进攻有理区','中距区'))

plt.xlabel('投篮次数')

plt.title('科比在各区域投篮')

plt.show()

*
好了就这么多,也希望老大可以给你们力量!

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信