前言
当地时间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 写于家中