不知不觉,老大已经走了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')

  1. 读取列出数据前5条

data1.head()

  1. 整理清洗数据(空值、异常值等)

d1=data1[data1['shot_made_flag'].notnull()]

步骤3:

  1. 数据可视化

参考下图绘制投篮位置散点图,加上图例标签

 科比,老大1000天-LMLPHP

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()

  1. 参考下图绘选手出手方式(次数)、投篮命中率、出售距离的柱状统计图
  2. 科比,老大1000天-LMLPHP

    g1=d1.groupby(d1['combined_shot_type']).count()['action_type'].sort_values(ascending=False)

    plt.bar(c1,g1)

    plt.ylabel('进攻次数')

    plt.xlabel('进攻方式')

    plt.show()

  3. 科比,老大1000天-LMLPHP

    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()

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

10-25 09:38