上回学习到利用jupyter notebook简单展示了一下单变量、双变量几多变量的数据可视化,本篇将在上篇的基础上,练习一下python数据处理及衍生变量的一些可视化实践。

在已有的数据集里想要生成新的变量,例如:把球员按年龄分为老中青三代,可以借助定义一个函数,再利用apply的方式,生成新的变量。

#根据已有变量生成新的变量

data['avg_point']=data['POINTS']/data['MP'] #每分钟得分

def age_cut(df):

if df.AGE<=24:

return 'young'

elif df.AGE>=30:

return 'old'

else:

return 'best'

data['age_cut']=data.apply(lambda x: age_cut(x),axis=1) #球员是否处于黄金年龄

data['cnt']=1 #计数用

同样的目的,也可以使用numpy模块中的函数np.where,与excel中的if函数和R语言中的ifelse函数几乎是一样的,非常简便。

既然得到了老中青三代的标签,我们来看一下不同年龄段球员的RPM(正负值)与薪水之前的关系如何:

### 球员薪水与效率值 按年龄段来看

sns.set_style('darkgrid') #设置seaborn的面板风格

plt.figure(figsize=(8,8))

plt.title(u'$RPM\ and\ SALARY$',size=15)

X1=data.loc[data.age_cut=='old'].SALARY_MILLIONS

Y1=data.loc[data.age_cut=='old'].RPM

X2=data.loc[data.age_cut=='best'].SALARY_MILLIONS

Y2=data.loc[data.age_cut=='best'].RPM

X3=data.loc[data.age_cut=='young'].SALARY_MILLIONS

Y3=data.loc[data.age_cut=='young'].RPM

plt.plot(X1,Y1,'.')

plt.plot(X2,Y2,'.')

plt.plot(X3,Y3,'.')

plt.xlim(0,30)

plt.ylim(-8,8)

plt.xlabel('Salary',size=10)

plt.ylabel('RPM',size=10)

plt.xticks(np.arange(0,30,3))

plt.legend(['old','best','young'])

点图横坐标为球员薪水,纵坐标为效率值。可以观测到:绝大部分的年轻球员拿着较低的薪水,数据非常集中。有两个离群点,是上文提到的戈贝尔和约基奇,两个小兄弟前途无量啊。

黄金年龄的球员和老球员的数据相对发散,黄金年龄球员薪水与效率值正相关性更强。第一集团有几个全明星排头兵。

老球员过了呼风唤雨的年纪,运动状态有所下滑,“高薪低效”的球员也稍微多一些。

用上篇的方法看一下老中青三代各技术统计的分布情况:

dat2=data.loc[:,['RPM','POINTS','TRB','AST','STL','BLK','age_cut']]

sns.pairplot(dat2,hue='age_cut')

球队数据分析

球队薪资排行

将数据按球队分组,平均薪水降序排列,看一下联盟十大土豪球队:

### 分组操作 按球队

dat_grp=data.groupby(by=['TEAM'],as_index=False).agg({'SALARY_MILLIONS':np.mean,'RPM':np.mean,'PLAYER':np.size})

dat_grp=dat_grp.loc[dat_grp.PLAYER>5] #不考虑在赛季中转会的球员

dat_grp.sort_values(by='SALARY_MILLIONS',ascending=False).head(10)骑士队和勇士队已超高的薪水排在这份榜单的前两名,群星璀璨的他们最终在季后赛中一路厮杀,双双闯入分区决赛。

排在第三的开拓者有10名球员上榜,可谓后补活力充沛。球队薪金结构的健康与否对球队的发展至关重要。

球队年龄结构

先胖不算胖,后胖压倒炕,优质的年轻球员储备是保持球队竞争性的密匙。

我按照分球队分年龄段,上榜球员降序排列,如上榜球员数相同,则按效率值降序排列。

### 分组操作 按场上位置

dat_grp2=data.groupby(by=['TEAM','age_cut'],as_index=False).agg({'SALARY_MILLIONS':np.mean,'RPM':np.mean,'PLAYER':np.size})

dat_grp2=dat_grp2.loc[dat_grp2.PLAYER>3] ##剔除掉少量的position摇摆人

dat_grp2.sort_values(by=['PLAYER','RPM'],ascending=False).head(15)在这份榜单里,排在榜首的公牛队有年轻球员8人,但效率值偏低,小伙子们还需努力啊。

绿凯不得了,黄金年龄球员和年轻球员共14人,效率值较高,未来一片光明。

年轻的森林狼有6名黄金年龄球员,老马刺有5为年长球员,一老一小效率值还都不错。

最牛的还属宇宙勇,5名黄金年龄球员效率值为恐怖的4.7,明星在手天下我有!

球队综合实力分析

最后我们来看看球队综合实力:

按照效率值降序排列前10名球队的相关信息如下:

##数据可视化 按球队

dat_grp3=data.groupby(by=['TEAM'],as_index=False).agg({'SALARY_MILLIONS':np.mean,'RPM':np.mean,'PLAYER':np.size,'POINTS':np.mean,'eFG%':np.mean,'MPG':np.mean,'AGE':np.mean})

dat_grp3=dat_grp3.loc[dat_grp3.PLAYER>5]

dat_grp3.sort_values(by=['RPM'],ascending=False).head(10勇士和其实占据前两名的位置,cross check了效率值反映球队实力的事实。

老马刺排名第三,平均年龄达29.5岁排名第一,更新血液迫在眉睫。

我所钟爱的雷霆由于大威少的存在能排在第5位,各项数据中规中矩。

利用箱线图和小提琴图看着10支球队的相关数据

sns.set_style('whitegrid')#设置seaborn的面板风格

plt.figure(figsize=(12,8))

dat_grp4=data[data['TEAM'].isin(['GS','CLE','SA','LAC','OKC','UTAH','CHA','TOR','NO','BOS'])]

plt.subplot(3,1,1)

sns.boxplot(x='TEAM',y='AGE',data=dat_grp4)

plt.subplot(3,1,2)

sns.boxplot(x='TEAM',y='SALARY_MILLIONS',data=dat_grp4)

plt.subplot(3,1,3)

sns.boxplot(x='TEAM',y='MPG',data=dat_grp4)

plt.figure(figsize=(12,8))

plt.subplot(3,1,1)

sns.violinplot(x='TEAM',y='POINTS',data=dat_grp4)

plt.subplot(3,1,2)

sns.violinplot(x='TEAM',y='eFG%',data=dat_grp4)

plt.subplot(3,1,3)

sns.violinplot(x='TEAM',y='RPM',data=dat_grp4)从年龄结构看,老马刺年龄跨度最大,年龄中位数最高。猛龙队最年轻且年龄跨度最小,后劲十足。

从球队薪金看,勇士和骑士最高,俄村雷霆在失去杜兰特后栽了大跟头,薪金健康情况堪忧。

从出场时间看,骑士队最高且跨度低,小团体战斗能力出众。

从得分来看,骑士和勇士整体出众。雷霆的威少、绿军的小托马斯、醍醐的浓眉哥以及马刺的伦纳德均是各队的离群点,双拳难敌四手。

从命中率看,命中率各队非常集中,绿凯的小托马刺作为地表最强175远远高于其他人。

从效率值看,骑士和勇士是大赢家。各个队的离群点我们甚至不用通过具体的查询就可以猜到是哪位球员。

抖个机灵,马刺作为老牌劲旅,居然有一个球员效率值为负离群点,查一下他是谁:

data.loc[data.TEAM=='SA'].sort_values(by='RPM',ascending=True).head(3)

福布斯这个23岁的小伙子出现在了这个尴尬的位置,要好好加油了!

结语

一年一度的NBA比赛即将战火重燃!而随着科技的进步我们可以更好的对篮球比赛的数据进行记录和分析,

这使得我们能更好地理解篮球,理解球员,结合我们的专业知识和兴趣爱好,更好地享受篮球比赛的无穷魅力。

python分析出nba球员的位置_python--NBA数据分析初探(下)相关推荐

  1. python分析出nba球员的位置_Python告诉你NBA球星都喜欢在哪个位置出手?

    作者 | Crossin先生 导读:NBA 2018-19 赛季已经落下帷幕,猛龙击败勇士,成为新科冠军球队.近日各队纷纷发布2019-20季前赛赛程,迎接新赛季. 我想,不如来做个 NBA 相关的数 ...

  2. python分析出nba球员的位置_python抓取NBA现役球员基本信息数据并进行分析

    数据来源:NBA中国官网 库: requests 用于解析页面文本数据 pandas   用于处理数据 时间: 2017/2/17 (因为为现役球员,故需注明时间节点) 开工: 得到了数据,这下就好办 ...

  3. python分析出nba球员的位置_【圆老司】用python展示NBA球员出手位置偏好

    之前发过一篇用python展示NBA球员出手位置偏好的视频: 有些同学想要其中的代码和讲解.再加上当时用的NBA官方接口现在极不稳定,几乎无法使用,所以我这里就再发一篇图文,简单讲解下代码,以及新的替 ...

  4. python分析出nba球员的位置_虎扑热帖|Python数据分析|NBA的球星们喜欢在哪个位置出手...

    原标题:虎扑热帖|Python数据分析|NBA的球星们喜欢在哪个位置出手 前言 1. 这篇数据分析案例,我做了个视频版本,对代码做了解读,讲了运行的注意事项和一些有的没的,供需.对于视频制作还不是很有 ...

  5. python分析出nba球员的位置_你知道NBA球星都喜欢在哪个位置出手? Python告诉你

    导读:NBA 2018-19 赛季已经落下帷幕,猛龙击败勇士,成为新科冠军球队.近日各队纷纷发布2019-20季前赛赛程,迎接新赛季. 我想,不如来做个 NBA 相关的数据分析案例好了.实际上,数据分 ...

  6. python分析出nba球员的位置_解码NBA:数据分析揭示十三个隐藏的球员位置

    自打1891年詹姆斯·奈史密斯(JAMES A. NAISMITH)发明篮球以来,篮球场上的球员就一直按照五个位置划分:中锋,大前锋.小前锋.组织后卫和得分后卫.但是斯坦福大学的一位数据狂人Muthu ...

  7. 7-7 六度空间 (30分)_现役球员中,谁最可能成下一位30000分先生?3大前十巨星没戏...

    想要在NBA联盟得到3万分有多难?从联盟成立至今的70多年中,总得分超过3万分的球员一共只有7位,他们分别是贾巴尔.马龙.詹姆斯.科比.乔丹.诺维茨基和张伯伦,剩下的强如大鲨鱼.艾弗森都没能完成这一壮 ...

  8. NBA球员出手位置分布图

    小白一只,想转行互联网行业的数据分析,通过寒假的佛系学习对python有了一定的了解.记录一下第一个小玩意儿. 在刷crossin论坛的时候突然看到一篇关于NBA的数据分析,因为本身自己也非常喜欢打球 ...

  9. python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8def print_hello(name, sex): sex_di ...

最新文章

  1. python自动华 (十四)
  2. 图片渲染延迟_前向渲染与延迟渲染
  3. c++代码转为go_Go调用C/C++
  4. spring(11)使用对象-关系映射持久化数据
  5. Go 把类型放在变量名后面,是特立独行还是另有机密?
  6. jpa 表注释和字段注释_JPA注释–Hibernate注释
  7. TensorFlow by Google CNN卷积神经网络 Machine Learning Foundations: Ep #3 - Convolutions and pooling
  8. 408计算机考试科目英语数学,关于计算机考研408的那些事儿
  9. arXiv 注册完整过程(图文详解)
  10. 2017总结,附书单、项目,只喜欢有趣的。。
  11. 矩阵满秩分解原理解释
  12. win10和win7哪个好用_Win10和Win7到底哪个好用(真实评测)
  13. iPhone指环贴:你手机的防盗专家
  14. python中turtle画笑脸_如何用python画笑脸
  15. 《心流:最优体验心理学》读书笔记
  16. flink+mysql+connector_Flink SQL中connector的定义和实现
  17. 深蓝学院视觉slam十四讲第2章作业
  18. RSA 非对称加密【转】
  19. CSS颜色的四种写法
  20. 开源软件和开源社区的反思

热门文章

  1. 基于51单片机运行RTX51 Tiny操作系统源码模板之1.LED闪烁
  2. 第4章 分布式数据库HBase
  3. 解决360doc网站不登录就无法复制内容的方法
  4. 渗透测试-waf fuzz绕过技巧
  5. VS2017 DLL中调用_beginthreadex创建线程
  6. docker第五期 DockerFile讲解
  7. mysql 触发器 bug_MySQL触发器不起作用
  8. 数据库事务、分布式一致性和分布式事务
  9. pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed o
  10. 软件质量保证常用测试方法---边界值测试,等价类测试,路径测试