致敬科比:科比投篮数据可视化

前言

当地时间1月26日上午10点左右,美国加州发生一起直升机坠机事故。NBA球星科比·布莱恩特在这起坠机事故中身亡,年仅41岁。

当听到这个消息时,我相当的震惊,本人虽然不怎么喜欢篮球,但是却对科比身上那种曼巴精神很是推崇。谨以此文,向科比致敬。
在这里插入图片描述

数据介绍

本次使用的数据来源于kaggle。该数据集较为丰富,本次只是使用了其中的几项数据进行了可视化展示。
在这里插入图片描述
想要数据进行研究的小伙伴可以去kaggle上下载,如果没有kaggle账号,但仍想要获取数据的小伙伴可以在文章末尾评论或者私信我。

shot_type可视化

def pie_show() -> Pie:
    c = (
        Pie()
        .add("", [list(z) for z in zip(type_name, shot_type_values)])
        .set_global_opts(title_opts=opts.TitleOpts(title="shot_type占比分析"))
        .render('./result/kobe_pie.html')
    )
    return c

在这里插入图片描述

action_type可视化

def bar_show() -> Bar:
    b = (
        Bar()
        .add_xaxis(type_name)
        .add_yaxis("", type_num, category_gap="60%")
        .set_series_opts(itemstyle_opts={
            "normal": {
                "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                        offset: 0,
                        color: 'rgba(0, 244, 255, 1)'
                    }, {
                        offset: 1,
                        color: 'rgba(0, 77, 167, 1)'
                    }], false)"""),
                "barBorderRadius": [30, 30, 30, 30],
                "shadowColor": 'rgb(0, 160, 221)',
            }})
        .set_global_opts(title_opts=opts.TitleOpts(title="action_type by 虐猫人薛定谔i"))
        .render('result/kobe_bar.html')
    )
    return b

在这里插入图片描述

shot_zone_area可视化

def funnel_show() -> Funnel:
    f = (
        Funnel()
        .add("", [list(z) for z in zip(area_name, area_values)],
             label_opts=opts.LabelOpts(position="inside")
             )
        .set_global_opts(title_opts=opts.TitleOpts(title="shot_zone_area"), legend_opts=opts.LegendOpts(pos_top="30px"))
        .render('result/kobe_funnel.html')
    )
    return f

在这里插入图片描述

完整代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/1/28 12:10
# @Author:  Martin
# @File:    kobe.py
# @Software:PyCharm
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Pie, Bar, Funnel, Page
from pyecharts.commons.utils import JsCode
# 读取数据
data = pd.read_csv('./res/kobe_data.csv')
type_names = ['2PT Field Goal', '3PT Field Goal']
shot_type = data['shot_type']
shot_type_values = [0, 0]
for i in shot_type:
    if i == '2PT Field Goal':
        shot_type_values[0] += 1
    elif i == '3PT Field Goal':
        shot_type_values[1] += 1
action_type = data.groupby('combined_shot_type').size().to_dict()
type_name = []
type_num = []
for key in action_type:
    type_name.append(key)
    type_num.append(action_type[key])
area_name = ['Back Court(BC)', 'Center(C)', 'Left Side Center(LC)', 'Left Side(L)', 'Right Side Center(RC)', 'Right Side(R)']
area_values = data.groupby('shot_zone_area').size().tolist()


def pie_show() -> Pie:
    c = (
        Pie()
        .add("", [list(z) for z in zip(type_names, shot_type_values)])
        .set_global_opts(title_opts=opts.TitleOpts(title="shot_type占比分析"))
        .render('./result/kobe_pie.html')
    )
    return c


def bar_show() -> Bar:
    b = (
        Bar()
        .add_xaxis(type_name)
        .add_yaxis("", type_num, category_gap="60%")
        .set_series_opts(itemstyle_opts={
            "normal": {
                "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                        offset: 0,
                        color: 'rgba(0, 244, 255, 1)'
                    }, {
                        offset: 1,
                        color: 'rgba(0, 77, 167, 1)'
                    }], false)"""),
                "barBorderRadius": [30, 30, 30, 30],
                "shadowColor": 'rgb(0, 160, 221)',
            }})
        .set_global_opts(title_opts=opts.TitleOpts(title="action_type by 虐猫人薛定谔i"))
        .render('result/kobe_bar.html')
    )
    return b


def funnel_show() -> Funnel:
    f = (
        Funnel()
        .add("", [list(z) for z in zip(area_name, area_values)],
             label_opts=opts.LabelOpts(position="inside")
             )
        .set_global_opts(title_opts=opts.TitleOpts(title="shot_zone_area"), legend_opts=opts.LegendOpts(pos_top="30px"))
        .render('result/kobe_funnel.html')
    )
    return f


if __name__ == '__main__':
    pie_show()
    bar_show()
    funnel_show()

后记

科比虽然离我们而去,但他身上的曼巴精神却是永存的。

曼巴精神的内涵:
热情——科比认为,热情来自于爱,他说:我爱球的味道,我爱球鞋的味道。
执着——科比对于篮球、对于胜利都很执着。
严厉——科比严于律己也严于律人。
回击——科比职业生涯最后几年,受过几次大伤。每次他都有积极的态度回击伤病。
无惧——科比认为,一个人最大的恐惧,是来源于自己。不是外部的,不是超自然的,而是来自自己的。

“路漫漫其修远兮,吾将上下而求索”,人生之路并不总是一帆风顺,尽管路上充满了坎坷,但我们依然要砥砺前行。

虐猫人薛定谔i 2020年1月28日 15:30 写于家中

发布了151 篇原创文章 · 获赞 236 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Deep___Learning/article/details/104099761