这是一个两年前的项目,本是我们训练营里的一道题。现开放给大家。
In Memory Of KOBE
项目代码地址:
https://gitee.com/crossin/analysis/tree/master/NBA_Programming
演示地址:
https://nbviewer.jupyter.org/urls/gitee.com/crossin/analysis/raw/master/NBA_Programming/8_vs_24.ipynb
湖人队官网宣布,将在2017年12月19日同时退役科比的8号与24号球衣,科比这位96届最传奇的巨星也将彻底地告别这个舞台。值得一提的是,这是NBA联盟历史上一支球队首次为一位球员退役两个号码的球衣,之前最具传奇色彩的是乔丹的退役,除了母队公牛队之外,效力过的奇才队也为他退役了球衣。那么在你的心目中,身披8号球衣与24号球衣的科比,哪一位更加出色呢?请通过数据分析,给出你的理由。 此次项目没有标准的解法,仅给出大致思路与参考代码。如果有其他想法,只要有合理的逻辑和数据支撑即可。
大致思路可以尝试回答以下问题,来对比8号与24号两个时期的科比的表现
数据说明[td]文件名 | 简介 | player_season.csv | 球员常规赛单场比赛数据 | player_playoff.csv | 球员季后赛单场比赛数据 | player_salary.csv | 球员薪金数据 | coach_season.csv | 教练常规赛平均数据 | coach_playoff.csv | 教练季后赛平均数据 | team_season.csv | 球队常规赛单场比赛数据 | team_playoff.csv | 球队季后赛单场比赛数据 | avg.csv | 球员场均数据 | tot.csv | 球员总计数据 | single.csv | 球员单场最佳数据 | advanced_basic.csv | 球员进阶数据 | advanced_shooting.csv | 球员投篮进阶数据 |
可能会用到的第三方库相关方法透视表。熟悉Excel的人应该对这个名词不会陌生。这个方法,根据一个或者多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。除了DataFrame本身具有这个方法外,也具有顶级的函数pandas.pivot_table(),除了调用方式不一样,作用基本上是相同的。
In [5]: df = DataFrame({'key1': list("aaabbcdd"), 'key2': list("ABBCCCCD"), 'number': list(range(8))})
In [7]: df
Out[7]:
key1 key2 number
0 a A 0
1 a B 1
2 a B 2
3 b C 3
4 b C 4
5 c C 5
6 d C 6
7 d D 7
In [6]: df.pivot_table(index=['key1', 'key2'])
Out[6]:
number
key1 key2
a A 0.0
B 1.5
b C 3.5
c C 5.0
d C 6.0
D 7.0如同上面所介绍的,我们提取了key1和key2列作为所生成的透视表的index,这样就很可以很清楚地看到每一层关系下的数据。
In [10]: df.pivot_table(['number'], index=['key2'])
Out[10]:
number
key2
A 0.0
B 1.5
C 4.5
D 7.0而上例中,我们只选用了原DataFrame的部分数据,就再次生成了一张新的透视表,这运用在开发中是非常便利的功能,我们只需要选取我们关心的columns就可以进行分析,而不需要对一张可能非常巨大的原始数据表进行操作。
In [11]: df.pivot_table(['number'], index=['key2'], margins=True)
Out[11]:
number
key2
A 0.0
B 1.5
C 4.5
D 7.0
All 3.5利用margins参数可以设定是否需要在获得的透视表的最后一行生成一行统计项。
In [13]: df.pivot_table(index=['key1', 'key2'], aggfunc=lambda x: x - 10)
Out[13]:
number
key1 key2
a A -10
B [-9, -8]
b C [-7, -6]
c C -5
d C -4
D -3
In [16]: df.pivot_table(index=['key1', 'key2'], aggfunc=np.sum)
Out[16]:
number
key1 key2
a A 0
B 3
b C 7
c C 5
d C 6
D 7
In [17]: df.pivot_table(index=['key1', 'key2'], aggfunc=np.mean)
Out[17]:
number
key1 key2
a A 0.0
B 1.5
b C 3.5
c C 5.0
d C 6.0
D 7.0上例中,展示了aggfuc这个在pivot_table中的重要参数的使用。可以传入普通的函数,得到的是每一个分组的结果集合,也可以传入带有“聚集”性质的函数,所得到的结果就是一个聚集值。
以上是关于透视表方法的简单介绍,如果想要进一步了解该方法的使用方式,具体参数的用法,请查阅官方文档。 欢迎小伙伴们自由发挥,给出自己的解答。而我们也给出了一份自己的分析,详情请见下方的链接。
|