衣带渐宽终不悔,为伊消得人憔悴
上一篇文章说道了 爬取了NBA中国官方网站2017-2018赛季的球员数据保存了数据库和csv文件,今天要开始处理这些数据了。
先来看看数据内容,如下
"""
@author: cht
@time: 2019/9/7 12:33
"""# -*- coding: utf-8 -*-import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#解决matplotlib画图中文显示乱码的情况
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']def show_position_pie(self):player = pd.read_csv('./player.csv')# print(playersdata.head())# 输出data的数据量和维度。print(player.shape)print(player['country'].value_counts())print(player['position'].value_counts())houwei = 0qianfei = 0zhongfen = 0huoqian = 0qianzhong = 0qianhuo = 0zhongqian = 0for posi in player['position']:if posi == "后卫":houwei += 1elif posi == "前锋":qianfei += 1elif posi == "中锋":zhongfen += 1elif posi == "后卫-前锋":huoqian += 1elif posi == "前锋-中锋":qianzhong += 1elif posi == "前锋-后卫":qianhuo += 1elif posi == "中锋-前锋":zhongqian += 1labels = '后卫', '前锋', '中锋', '后卫-前锋', "前锋-中锋", "前锋-后卫", "中锋-前锋"values = [houwei, qianfei, zhongfen, huoqian, qianzhong, qianhuo, zhongqian]# colors = ['y', 'm', 'b',]explode = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]# 旋转角度plt.title("NBA players position", fontsize=25)# 标题plt.pie(values, labels=labels, explode=explode,startangle=180,shadow=True, autopct='%1.1f%%')plt.axis('equal')plt.legend()plt.show()
现在联盟流行小球时代,中锋的角色越来越不重要了,当然本来好的纯中锋就很少。姚明最棒,现在是最胖,哈哈
def show_player_draftYear(self):player = pd.read_csv('./player.csv')df = playerdf = df[(~df['draftYear'].isin([0]))] # 逆函数 剔除{draftYear列含有数值[0]}的dataframedf = df['draftYear'].value_counts() # 统计各个年份球员人数df.index.name = 'Year' # 为数据设置索引值df = df.sort_index(ascending=True) # 按照降序## 绘制条形统计图df.plot(kind='barh', alpha=0.5, grid=True) # kind参数有’line’线型统计图, ‘bar’条形统计图, #‘barh’横向条形统计图, ‘kde’直方图,根据需要自己调节plt.xlabel('years')plt.ylabel('count')plt.title('2017-2018 NBA season players')plt.show()
条形统计图
横向条形图
现在NBA球员都是新生代,19年也是选秀大年,人数比较多,最老的球员也就是01年进入NBA的泰森.钱德勒,目前效率于火箭队,以及保罗加索尔,目前效率于开拓者。02年的就是热火老将队魂哈斯勒姆一个。而03一代就剩2个了,小皇帝和科沃尔“周杰伦”
player = pd.read_csv('./player.csv')
career_age = player['experience'].value_counts() # 职业年龄统计
career_age.values # 各职业时间对应人数
career_age.index # 各职业时间
k = career_age.index * career_age.values # 各职业时间*各职业时间对应人数
k = pd.Series(k) # 转换数据类型
averAge = (k.sum() * 1.0) / career_age.sum()
print(averAge)
结果是:3.833648393194707
NBA球员竞技状态要求很高,一旦对自己的管理松懈了,状态下滑是很快的,像科比,詹姆斯这些人都是非常自律的人,巅峰时间很长,单打能力很厉害的小甜瓜安东尼,现在不少无球可打。球员的巅峰状态很短,从这里可以看出球员效率时间普遍很短。且行且珍惜,不要浪费上天赐给你的天赋,好嘛?姚头叹琦!!!!!