CDA数据分析师 出品  

【导读】

本期我们用全面的数据证明到底坑了辽宁队Python技术分析请看第六部分

获取数据代码:

扫描下方公众号

回复关键字“辽宁”

CBA做为中国职业体育最先重启的联赛,真的是万众瞩目,在第一阶段最后一场比赛广东对江苏的比赛中,钟南山钟老亲临现场,做为中国篮球界的女婿,钟老真的为CBA重启操碎了心。CBA这次复赛重启结果也很不错,堪称模范。

而本期我们要聊的是辽宁队,用数据解读一支争冠队如何变成了鱼腩队?

文章要点:

  • 辽宁队胜负场得分命中率

  • 不同球员的平均出场时间

  • 辽宁队胜负场失误情况

  • 外援与国内球员平均得分对比

  • Python分析辽宁队比赛数据

01

志在卫冕的辽宁队 

从争冠队到鱼腩队

辽宁队在赛季刚开始还算顺风顺水,但是复赛重启后,辽宁队战绩可谓是糟糕透顶,连败北京、广州、浙江后,郭士强成为背锅的那个人,黯然下课。真是大侄子坑老叔,一个愿打一个愿挨。

之后,辽宁虐两个不强的队后,遇到强队又比赛落败,真的很难联想到这是一支争冠的球队,这次我们结合数据,聊一聊辽宁变成这样到底谁应该背锅?

赛季刚开始的辽宁队算是顶级强队,我们来看下当初那只辽宁队,先看到分情况:

全部比赛-胜场得分曲线图

全部比赛-负场得分曲线图

从折线图来看,辽宁胜场得分都是100分以上,负场也几乎过100了,证明辽宁队进攻完全没有问题,当时还有师弟这样的CBA詹姆斯, 一个人可以解决很多问题,当时的辽宁真的强。

复赛后的辽宁队的得分下降到什么程度?焦灼的比赛得分刚到100,被虐得体无完肤的比赛得分都是在垃圾时间刷分,整体效率下降太多。

02

 命中率不稳定 

郭士强为此下课

再看到整体命中率,我们分别统计了胜负场次,拉了折线图出来:

全部比赛-胜场命中率曲线图

全部比赛-负场命中率曲线图

罚球数据方面,复赛后所有球队都有下滑,这个可以理解,毕竟很久没有打比赛了。

三分球辽宁队数据真的惨不忍睹,尤其是复赛后的输球的几场,命中率只有30%多,这和广东新疆等目标球队差距太大了。复赛后和浙江的比赛二分命中率跌破50%,在以前根本不敢相信,这也是郭士强下课的主要原因。二分命中率低只能说明训练不到位,要不就是场上球员太累了。

大家一直在诟病辽宁队的轮换,所以我们也分析了球员出场时间,制作了饼图。

03

奇葩的4+2轮换

只要主力不累死就不能下

这是本赛季所有比赛的球员出场时间图:

不同球员的平均出场时间

把外援去除,郭艾伦、赵继伟、韩德君、李晓旭、刘志轩、贺天举构成了主要轮换,看这还算符合CBA球队常规轮换人次。

复赛后,李晓旭受伤,刘志轩精神游离,贺天举有复苏的迹象,但是远远达不到为球队分忧的状态,因为防守实在太差了。所以只剩下郭艾伦、韩德君、赵继伟了,再加上1个外援,组成了奇葩的4人主力+2人轮换阵容。

然后就有了孙铭徽完爆亚洲第一后卫,那场比赛孙铭徽出场40.3分钟,郭艾伦出场46.8分钟,真是只要不累死就要上。

通过上面的数据来看,轮换是辽宁队复赛后最大的问题,郭士强为此下课也合情合理。但是外教用人比郭士强还狠我们就看不明白了,辽宁队是真的破罐子破摔了么?郭艾伦场均打满全场是什么操作?就算是郭艾伦的球队也不能场场打满吧。

04

没有超强得分能力的保证 

失误多不可能赢球

在分析辽宁蜕变的同时,也发现了一些之前球队的隐患,分享给诸位。

这是辽宁队胜负场次分别的失误次数:

全部比赛-胜场失误曲线图

全部比赛-负场失误曲线图

看看这个曲线,要是换我们的杜锋杜指导带队,估计每场都能出好多小视频,疯狂输出,打不了几场全队就剩不下什么人了。在没看到数据之前,觉得见谁削谁的辽宁队场均失误应该会很少,这张图颠覆了我的认知,假如不看队名,我以为是福建这种只进攻不防守的球队应该有的数据表现。

05

 少了一个外援

谁来分担得分压力?

再看到外援和国内球员的平均得分:

外援-国内球员平均得分对比

这个比例在CBA倒是很常见,外援占有球队的一半出手权,剩下一半才是国内球员的,也证明了师弟在辽宁队真的很重要。郭艾伦单核带队真的很难,这倒不是说韩德君不是核心,在CBA的FIBA规则下,内线带队真的太过艰难了。

这也侧面就说明了复赛之后辽宁体现的问题,失去了2名外援,就算新外援梅奥和师弟表现的平起平坐,但是国内球员的得分并没有增加,以前得分的还是得分,以前不出场的还是不出场。这算下来就少了将近20分,和CBA复赛后国内球员积极的表现形成了鲜明的对比。

06

用Python带你分析 

辽宁队比赛数据

我们使用Python获取并分析了搜狐体育CBA数据中心辽宁队的比赛和技术统计数据,以下为关键部分代码:

回复关键字“辽宁

获取详细数据代码

1. 数据读入

首先导入分析所需包,并读入数据集。

# 导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import re from pyecharts.charts import Bar, Line, Pie, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType, WarningType
WarningType.ShowWarning = Falseimport warnings
warnings.filterwarnings('ignore')

汇总数据中包含了从2019-11-01至2020-07-02日的交战汇总数据,共37场,数据格式如下:

# 汇总数据
df_all = pd.read_excel('../data/辽宁交战汇总.xlsx')
df_all.head()

技术数据中包含了每一场比赛选手的详细技术数据,数据预览如下:

# 技术数据
df_skill = pd.read_excel('../data/详细技术数据-修改版.xlsx')
df_skill.head()

2. 数据预处理

此处对首发数据进行清洗。

# 循环
df_skill2 = pd.DataFrame() for i in df_skill['场序'].drop_duplicates():# 前五行填1df_sel = df_skill[df_skill['场序'] == i]df_sel.iloc[:5, 0] = 1# 后面填0 df_sel.iloc[5:-1, 0] = 0# 追加df_skill2 = df_skill2.append(df_sel, ignore_index=True) df_skill2['首发'] = df_skill2['首发'].replace('总计', np.nan)
df_skill2.head()

3. 数据可视化

此处我们分析:

  1. 主要球员赢球/输球的比赛各项数据(篮板/助攻/失误)

  2. 球员出场时间占比

  3. 2020年6月前比赛得分曲线图

  4. 外援/国内球员平均得分曲线图

  5. 郭艾伦/其他球员平均得分曲线图

  6. 全部比赛命中率曲线图

  7. 全部比赛失误曲线图

  8. 全部比赛得分曲线图

代码部分内容较多,以下展示部分分析代码:

3.1 球员出场时间占比

# 删除空值
df_time = df_skill2.dropna(axis=0)
df_time.head() # 计算时间
time_num = round(df_time.groupby('球员')['出场时间'].mean())
time_num = time_num.sort_values(ascending=False)
time_num
球员
梅奥         40.0
郭艾伦        35.0
兰斯-史蒂芬森    35.0
赵继伟        33.0
韩德君        32.0
布兰登-巴斯     32.0
高诗岩        24.0
李晓旭        24.0
刘志轩        22.0
贺天举        17.0
丛明晨        15.0
王化东        11.0
郭旭          9.0
刘雁宇         7.0
鄢手骐         5.0
马壮          2.0
Name: 出场时间, dtype: float64
data_pair =  [list(z) for z in zip(time_num.index.tolist(), time_num.values.tolist())]# 绘制饼图
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))
pie1.add('', data_pair, radius=['35%', '60%'])
pie1.set_global_opts(title_opts=opts.TitleOpts(title='不同球员的平均出场时间'), legend_opts=opts.LegendOpts(is_show=False, orient='vertical', pos_top='15%', pos_left='2%'))
pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}min"))
pie1.render()

3.2 外援/国内球员 平均得分曲线图

# 合并数据
df_neiwai = pd.merge(df_skill2, df_all[['场序', '胜负']]) # 删除列
df_neiwai.dropna(inplace=True)# 添加外援/国内球员标签
def tansform_label(x):if x == '梅奥' or x == '布兰登-巴斯' or x == '兰斯-史蒂芬森':return '外援'else:return '国内球员'df_neiwai['标签1'] = df_neiwai.球员.apply(tansform_label)
df_neiwai.head()

# 分组汇总
defen = df_neiwai.groupby(['场序', '标签1'])['得分'].mean().reset_index()
defen['得分'] = round(defen['得分'])# 产生数据
x_line1 = defen[defen['标签1']=='国内球员']['场序'].astype('str').tolist()
y_line1 = defen[defen['标签1']=='国内球员']['得分'].tolist()
y_line2 = defen[defen['标签1']=='外援']['得分'].tolist()
line9 = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
line9.add_xaxis(x_line1)
line9.add_yaxis('国内球员', y_line1,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),opts.MarkPointItem(type_='min', name='最小值')]))
line9.add_yaxis('外援', y_line2,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),opts.MarkPointItem(type_='min', name='最小值')]))
line9.set_global_opts(title_opts=opts.TitleOpts(title='外援-国内球员平均得分对比'))
line9.set_series_opts(label_opts=opts.LabelOpts(is_show=True), linestyle_opts=opts.LineStyleOpts(width=3)  )
line9.render()

3.3 全部比赛得分曲线图

# 定义函数
def draw_line(xaxis_data, y_axis, title_label, series_name='', min_num=None, label_color=None, line_color=None, formatter=None):line = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))line.add_xaxis(xaxis_data) line.add_yaxis(series_name, y_axis,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),opts.MarkPointItem(type_='min', name='最小值')])) line.set_global_opts(title_opts=opts.TitleOpts(title=title_label), yaxis_opts=opts.AxisOpts(min_=min_num) ) line.set_series_opts(label_opts=opts.LabelOpts(is_show=True, color=label_color, formatter=formatter), linestyle_opts=opts.LineStyleOpts(width=3, color=line_color)  )return line
# 产生数据
x_line1 = df_all[df_all['胜负']=='胜']['场序'].astype('str').tolist()
y_line1 = df_all[df_all['胜负']=='胜']['得分'].tolist()x_line2 = df_all[df_all['胜负']=='败']['场序'].astype('str').tolist()
y_line2 = df_all[df_all['胜负']=='败']['得分'].tolist()
# 绘图
line1 = draw_line(xaxis_data=x_line1, y_axis=y_line1, title_label='全部比赛-胜场得分曲线图', min_num=80,label_color=None, line_color=None)
line2 = draw_line(xaxis_data=x_line2, y_axis=y_line2, title_label='全部比赛-胜场负场曲线图', min_num=80, label_color='blue', line_color='#3B7BA9')page1 = Page()
page1.add(line1, line2)
page1.render()

结语

辽宁队本赛季能走多远,能不能过季后赛首轮 完全取决于李晓旭回归后的表现,需要弥补没有大外援所损失的得分和篮板,也让韩德君可以稍微休息一下。

但治根本的良药还是要培养新人,辽宁青训出了这么多优秀人才,人才断层应该不会发生,希望俱乐部多多启用新人,辽宁队也到了破而后立的时刻了。

获取完整代码+数据:

扫描下方公众号,回复关键字“辽宁”,获取数据和代码吧。

数据告诉你:辽宁为何会跌落神坛,从无敌队到鱼腩队是郭艾伦的错?相关推荐

  1. eos节点服务器_EOS跌落神坛?

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:CoinVoice 出品 / CoinVoice 文 / 菱禾 区块链世界 ...

  2. 极客日报:爆字节跳动日均进账10.07亿元;iPhone 13粉屏上热搜;英特尔跌落神坛,CEO回应:是我们骄傲自大了

    一分钟速览新闻点! 消息人士:字节跳动日均进账10.07亿 QQ音乐App测试看广告免费听歌,仅限部分受邀用户 有赞被曝第一轮裁员将超1500人 副总裁已离职 罗永浩宣布春节后回归科技界 继绿屏.红绿 ...

  3. ipad一直卡在白苹果_三季度中国平板电脑市场华为成第一,iPad要跌落神坛了吗?...

    说起平板电脑,相信所有人脑海中第一的平板电脑自然是苹果平板,可以说平板电脑这个产业的起点就是当年乔布斯强势发布的iPad,所以在相当长的一段时间内,大家只要谈到平板电脑,第一个反应就是iPad,即使说 ...

  4. 大数据告诉你80、90后的真实负债

    来自:苏宁金融研究院 近期,一篇"90后超一半网贷"的文章引起了网络热议.看似90后的收入无法支撑他们的超前消费,然而,20多岁的90后真的比奔四的80后负债更多吗? 就此,我们抽 ...

  5. 年货买了没?大数据告诉你年货买什么!

    来源:人民数据本文约3000字,建议阅读6分钟本文用大数据告诉你年货买什么. 牛年春节悄然将至,年货购置成为家家户户关心的重点.年年岁岁"春"相似,但面对依然紧迫的防疫大局,今年的 ...

  6. BigData之matplotlib:爬虫2018年福布斯中国富豪榜进行数据统计分析,大数据告诉你一些不可思议的事情

    BigData之matplotlib:爬虫2018年福布斯中国富豪榜进行数据统计分析,大数据告诉你一些不可思议的事情 目录 数据统计分析 1.2018年福布斯中国富豪榜(资产≥60亿美元)财富地区分布 ...

  7. python世界第一语言_Java 跌落神坛!Python 正式登顶世界第一编程语言

    原标题:Java 跌落神坛!Python 正式登顶世界第一编程语言 编程语言流行指数(PYPL)排行榜近日公布了2019年2月份榜单. 在最新一期榜单上, Python的份额高达26.42%,稳居第一 ...

  8. 计算机html二级难度,计算机二级考试越来越难的实锤!真实数据告诉你到底难在哪里?...

    原标题:计算机二级考试越来越难的实锤!真实数据告诉你到底难在哪里? 相信参加过3月考试的小伙伴都有这样的感觉,选择题新考点虽然没有增加很多,但是操作题就一言难尽,不仅新增了4套新题,而且原题也进行了更 ...

  9. python 干什么工作具有明显优势-科多大数据告诉你Python为什么这么牛?学习python有什么优势?...

    原标题:科多大数据告诉你Python为什么这么牛?学习python有什么优势? 选择要学习的技术和选择要上的大学一样重要,如果选错了,你将来不仅得不到自己喜欢的高薪工作,反而会弄得一堆麻烦.如果你打开 ...

最新文章

  1. oracle 11g ORA-12514
  2. iOS架构-cocoaPods之自制私有库及管理(17)
  3. html游戏代码_实现了代码自动生成,开发效率妥妥的提升,升职加薪跟上
  4. scrapy middlewares.py
  5. 计算机基础与c语言试题及答案,2017年9月计算机二级C语言基础试题及答案
  6. Linux文件压缩与打包-1
  7. html基本标记练习钱塘湖春行,《钱塘湖春行》练习题及答案
  8. 使用群晖ds218play下载电驴文件
  9. Apache Rewrite 详解 RewriteBase
  10. cv岗工作做什么_成为一个CV之前都需要做一些什么准备工作?
  11. office常用技巧总结【word篇】
  12. 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
  13. Jmeter(二十三) - 从入门到精通 - JMeter函数 - 上篇(详解教程)
  14. 用虚拟信用卡注册Google Play开发者账号
  15. AD---通过组策略推送软件给客户端
  16. android11铃声pixel,Android 11 Beta版1发布,谷歌Pixel系列尝鲜,到底是亲儿子
  17. Xilinx FPGA引脚官网以及导入Excel编辑
  18. 模拟登陆 - 破解12306验证码
  19. 在SSD移动硬盘上安装WIN10 1809 WTG的案例
  20. 武大94年博士年薪201万入职华为!学霸日程表曝光,简直降维打击!

热门文章

  1. iOS开发笔记--iOS应用架构谈 view层的组织和调用方案
  2. oracle saiku_Apache Kylin | Saiku + Kylin 搭建多维 OLAP 平台
  3. C++背景实现 学生管理系统(添加、显示、删除、修改)
  4. 【React】--React hook
  5. 傅里叶变换的性质及证明
  6. R语言(一) ggplot2常用绘图命令总结
  7. html中删除指定数组下标,图文详解JavaScript中删除数组某个元素的方法
  8. umi 中如何修改浏览器上的icon和title
  9. 【NOIP2013模拟】四叶草魔杖
  10. 农村生活污水治理——智慧水务系统探析