• 科比,老大1000天


    不知不觉,老大已经走了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. 数据可视化

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

     

    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. 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. 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. 好了就这么多,也希望老大可以给你们力量!

  • 相关阅读:
    NOA「破局」规模化
    计算机毕设(附源码)JAVA-SSM基于自组网的空地一体化信息系统
    巴塞罗那世界移动大会:华为构建电信公司AI模型——MWC 2024
    Java框架 特殊SQL的执行
    解决Windows 10更新安装失败的问题
    CSS 滚动驱动动画 timeline-scope
    主流商业智能(BI)工具的比较(一):Tableau与Domo
    练习题——【学习补档】库函数的模拟实现
    C++实现排序 - 03 计数排序、桶排序和基数排序
    【技巧】Ubuntu临时授予用户sudo权限,并在一定时间后自动撤销
  • 原文地址:https://blog.csdn.net/m0_66060262/article/details/127482295