improtData.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. # coding=utf-8
  2. '''
  3. Created on 2017年9月12日
  4. @vsersion:python 3.6
  5. @author: liuyuqi
  6. '''
  7. # 导入需要的第三方库
  8. import matplotlib.pyplot as plt
  9. import numpy as np
  10. import pandas as pd
  11. # 导入数据,预览数据
  12. team_season = pd.read_csv('../input/NBAdata/team_season.csv')
  13. advanced_basic = pd.read_csv('../input/NBAdata/advanced_basic.csv')
  14. advanced_shooting = pd.read_csv('../input/NBAdata/advanced_shooting.csv')
  15. avg = pd.read_csv('../input/NBAdata/avg.csv')
  16. coach_playoff = pd.read_csv('../input/NBAdata/coach_playoff.csv')
  17. coach_season = pd.read_csv('../input/NBAdata/coach_season.csv')
  18. player_playoff = pd.read_csv('../input/NBAdata/player_playoff.csv')
  19. player_salary = pd.read_csv('../input/NBAdata/player_salary.csv')
  20. player_season = pd.read_csv('../input/NBAdata/player_season.csv')
  21. single = pd.read_csv('../input/NBAdata/single.csv')
  22. team_playoff = pd.read_csv('../input/NBAdata/team_playoff.csv')
  23. team_season = pd.read_csv('../input/NBAdata/team_season.csv')
  24. tot = pd.read_csv('../input/NBAdata/tot.csv')
  25. team_season.head()
  26. team_playoff.columns
  27. # 将比赛时间转换成所处赛季,按照季后赛所在年为标准
  28. def convert_time_to_season(s):
  29. assert type(s) == str
  30. return int(s[:4])
  31. # 将失分单独列出
  32. def get_loss_score(s):
  33. assert type(s) == str
  34. index_of_divider = s.index('-')
  35. loss_score = int(s[:index_of_divider][3:])
  36. return loss_score
  37. team_season['失分'] = team_season['比分'].map(get_loss_score)
  38. team_season['赛季'] = team_season['时间'].map(convert_time_to_season)
  39. team_season['回合'] = (team_season['出手'] + 0.44 * team_season['罚球出手'] - 0.96 * team_season['前场'] + team_season['失误']) / 2
  40. team_season.head()
  41. team_playoff['失分'] = team_playoff['比分'].map(get_loss_score)
  42. team_playoff['赛季'] = team_playoff['时间'].map(convert_time_to_season)
  43. team_playoff['回合'] = (team_playoff['出手'] + 0.44 * team_playoff['罚球出手'] - 0.96 * team_playoff['前场'] + team_playoff['失误']) / 2
  44. team_playoff.head()
  45. champions = {}
  46. for year in range(1986, 2017):
  47. current_playoff = team_playoff[team_playoff['赛季'] == year]
  48. current_win = 0
  49. single_playoff = {}
  50. for i in range(len(current_playoff)):
  51. if current_playoff.iloc[i]['结果'] == 'W':
  52. if current_playoff.iloc[i]['球队'] in single_playoff.keys():
  53. single_playoff[current_playoff.iloc[i]['球队']] += 1
  54. else:
  55. single_playoff[current_playoff.iloc[i]['球队']] = 1
  56. for team in single_playoff.keys():
  57. if single_playoff[team] > current_win:
  58. current_win = single_playoff[team]
  59. champions[year] = team
  60. champions
  61. # 生成Series对象
  62. champion_series = pd.Series(champions)
  63. # 查看哪些队伍、分别夺得几次冠军
  64. champions_count = champion_series.value_counts()
  65. champions_count.sort_values(ascending=False, inplace=True)
  66. champions_count
  67. plt.bar(np.arange(10), champions_count.values, width=0.5)
  68. plt.xticks(np.arange(10), list(champions_count.index))
  69. plt.xlabel('Team Name')
  70. plt.ylabel('Champion Number')
  71. plt.grid(True)
  72. plt.title('Champions Statistics From 1986 to 2016')
  73. score_loss_ratio = []
  74. for i in range(31):
  75. score_loss_ratio.append(abs(champion_score[i] / champion_loss[i]))
  76. plt.scatter(np.arange(31), score_loss_ratio)
  77. plt.hlines(np.array(score_loss_ratio).mean(), 0, 30, linestyles='dashed')
  78. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  79. plt.xlabel('Champion Team')
  80. plt.ylabel('Score Loss Ratio')
  81. plt.title('Score Loss Ratio of Champion Team in Playoff from 1986 to 2016')
  82. plt.grid(True)
  83. round_count = []
  84. for year in range(1986, 2017):
  85. champion_team = team_playoff[(team_playoff['赛季'] == year) & (team_playoff['球队'] == champions[year])]
  86. round_count.append(champion_team['回合'].mean())
  87. plt.bar(np.arange(31), round_count)
  88. plt.xlabel('Champion Team')
  89. plt.ylabel('Average Round in Playoff')
  90. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  91. plt.hlines(np.array(round_count).mean(), 0, 30, linestyles='dashed')
  92. plt.title('Average Round of Champion from 1986 to 2016')
  93. shoot = {}
  94. for year in range(1986, 2017):
  95. shoot[year] = {}
  96. champion_team = team_playoff[(team_playoff['赛季'] == year) & (team_playoff['球队'] == champions[year])]
  97. shoot[year]['三分出手'] = champion_team['三分出手'].sum()
  98. shoot[year]['三分命中'] = champion_team['三分命中'].sum()
  99. shoot[year]['场均三分出手'] = champion_team['三分出手'].mean()
  100. shoot[year]['场均三分命中'] = champion_team['三分命中'].mean()
  101. shoot[year]['场均两分出手'] = champion_team['出手'].mean() - shoot[year]['场均三分出手']
  102. shoot[year]['场均两分命中'] = champion_team['命中'].mean() - shoot[year]['场均三分命中']
  103. shoot[year]['出手'] = champion_team['出手'].sum()
  104. shoot[year]['命中'] = champion_team['命中'].sum()
  105. shoot[year]['场均出手'] = champion_team['出手'].mean()
  106. shoot[year]['场均命中'] = champion_team['命中'].mean()
  107. shoot[year]['两分出手'] = champion_team['出手'].sum() - champion_team['三分出手'].sum()
  108. shoot[year]['两分命中'] = champion_team['命中'].sum() - champion_team['三分命中'].sum()
  109. shoot[year]['罚球出手'] = champion_team['罚球出手'].sum()
  110. shoot[year]['罚球命中'] = champion_team['罚球命中'].sum()
  111. shoot[year]['罚球命中率'] = shoot[year]['罚球命中'] / shoot[year]['罚球出手']
  112. shoot[year]['两分命中率'] = shoot[year]['两分命中'] / shoot[year]['两分出手']
  113. shoot[year]['三分命中率'] = shoot[year]['三分命中'] / shoot[year]['三分出手']
  114. shoot[year]['得分'] = champion_team['得分'].sum()
  115. shoot[year]['场均得分'] = champion_team['得分'].mean()
  116. shoot[year]['真实命中率'] = shoot[year]['得分'] / (2 * (shoot[year]['出手'] + 0.44 * shoot[year]['罚球出手']))
  117. shoot_data = pd.DataFrame(shoot).T
  118. shoot_data.head()
  119. plt.scatter(shoot_data['场均得分'], shoot_data['真实命中率'])
  120. plt.vlines(shoot_data['场均得分'].mean(), 0.48, 0.6, linestyles='dashed')
  121. plt.hlines(shoot_data['真实命中率'].mean(), 85, 125, linestyles='dashed')
  122. plt.xlabel('Average Score')
  123. plt.ylabel('TS')
  124. plt.title('TS-AverageScore of Champions of 1986-2016')
  125. plt.grid(True)
  126. print(shoot_data.sort_values(by='场均得分', ascending=False).iloc[0].name)
  127. print(shoot_data.sort_values(by='场均得分', ascending=False).iloc[1].name)
  128. print(shoot_data.sort_values(by='场均得分', ascending=True).iloc[0].name)
  129. three_of_champions = shoot_data[['场均三分出手', '场均三分命中']]
  130. three_of_champions = three_of_champions.rename(columns={'场均三分出手': '3PA', '场均三分命中': '3P'})
  131. three_of_champions.plot(kind='bar')
  132. plt.hlines(three_of_champions['3PA'].mean(), 0, 30, linestyles='dashed')
  133. plt.hlines(three_of_champions['3P'].mean(), 0, 30, linestyles='dashed')
  134. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  135. plt.xlabel('Champion Team')
  136. plt.ylabel('Three Point Statistics')
  137. plt.title('Three Point Statistics of Champion Team From 1986 to 2016')
  138. two_of_champions = shoot_data[['场均两分出手', '场均两分命中']]
  139. two_of_champions = two_of_champions.rename(columns={'场均两分出手': '2PA', '场均两分命中': '2P'})
  140. two_of_champions.plot(kind='bar')
  141. plt.hlines(two_of_champions['2PA'].mean(), 0, 30, linestyles='dashed')
  142. plt.hlines(two_of_champions['2P'].mean(), 0, 30, linestyles='dashed')
  143. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  144. plt.xlabel('Champion Team')
  145. plt.ylabel('Three Point Statistics')
  146. plt.title('Three Point Statistics of Champion Team From 1986 to 2016')
  147. team_playoff['百回合得分'] = team_playoff['得分'] / (2 * team_playoff['回合']) * 100
  148. team_playoff['百回合失分'] = team_playoff['失分'] / (2 * team_playoff['回合']) * 100
  149. team_playoff.head()
  150. team_season['百回合得分'] = team_season['得分'] / (2 * team_season['回合']) * 100
  151. team_season['百回合失分'] = team_season['失分'] / (2 * team_season['回合']) * 100
  152. team_season.head()
  153. # 计算百回合得分、失分以及百回合得失分比
  154. efficiency = {}
  155. for year in range(1986, 2017):
  156. efficiency[year] = {}
  157. champion_team = team_playoff[(team_playoff['赛季'] == year) & (team_playoff['球队'] == champions[year])]
  158. efficiency[year]['offensive'] = champion_team['百回合得分'].mean()
  159. efficiency[year]['defensive'] = champion_team['百回合失分'].mean()
  160. efficiency[year]['ratio'] = efficiency[year]['offensive'] / efficiency[year]['defensive']
  161. efficiency = pd.DataFrame(efficiency).T
  162. efficiency
  163. plt.bar(np.arange(31), list(efficiency['offensive'].values))
  164. plt.bar(np.arange(31), list(-1 * efficiency['defensive'].values))
  165. plt.hlines(efficiency['offensive'].mean(), 0, 30, linestyles='dashed')
  166. plt.hlines(-1 * efficiency['defensive'].mean(), 0, 30, linestyles='dashed')
  167. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  168. plt.xlabel('Champion Team')
  169. plt.ylabel('Offensive & Defensive Efficiency')
  170. plt.title('Offensive & Defensive Efficiency of Champion Team from 1986 to 2016')
  171. plt.scatter(np.arange(31), list(efficiency['ratio'].values))
  172. plt.hlines(efficiency['ratio'].mean(), 0, 30, linestyles='dashed')
  173. plt.xticks(np.arange(31), champion_teams, size='small', rotation=90)
  174. plt.xlabel('Champion Team')
  175. plt.ylabel('Offensive & Defensive Efficiency Ratio')
  176. plt.title('Offensive & Defensive Efficiency Ratio of Champion Team in Playoff from 1986 to 2016')
  177. plt.grid(True)
  178. CHI1991 = team_playoff[(team_playoff['赛季'] == 1991) & (team_playoff['球队'] == 'CHI')]
  179. CHI1996 = team_playoff[(team_playoff['赛季'] == 1996) & (team_playoff['球队'] == 'CHI')]
  180. LAL2001 = team_playoff[(team_playoff['赛季'] == 2001) & (team_playoff['球队'] == 'LAL')]
  181. CHI1991
  182. team_playoff.columns
  183. NYK_season_1991 = team_season[(team_season['球队'] == 'NYK') & (team_season['赛季'] == 1991)]
  184. NYK_season_average_1991 = NYK_season_1991.mean()
  185. NYK_playoff_1991 = team_playoff[(team_playoff['球队'] == 'NYK') & (team_playoff['赛季'] == 1991)].tail(3)
  186. NYK_playoff_average_1991 = NYK_playoff_1991.mean()
  187. PHI_season_1991 = team_season[(team_season['球队'] == 'PHI') & (team_season['赛季'] == 1991)]
  188. PHI_season_average_1991 = PHI_season_1991.mean()
  189. PHI_playoff_1991 = team_playoff[(team_playoff['球队'] == 'PHI') & (team_playoff['赛季'] == 1991)].tail(5)
  190. PHI_playoff_average_1991 = PHI_playoff_1991.mean()
  191. DET_season_1991 = team_season[(team_season['球队'] == 'DET') & (team_season['赛季'] == 1991)]
  192. DET_season_average_1991 = DET_season_1991.mean()
  193. DET_playoff_1991 = team_playoff[(team_playoff['球队'] == 'DET') & (team_playoff['赛季'] == 1991)].tail(4)
  194. DET_playoff_average_1991 = DET_playoff_1991.mean()
  195. LAL_season_1991 = team_season[(team_season['球队'] == 'LAL') & (team_season['赛季'] == 1991)]
  196. LAL_season_average_1991 = LAL_season_1991.mean()
  197. LAL_playoff_1991 = team_playoff[(team_playoff['球队'] == 'LAL') & (team_playoff['赛季'] == 1991)].tail(5)
  198. LAL_playoff_average_1991 = LAL_playoff_1991.mean()
  199. total_1991 = [NYK_season_average_1991, NYK_playoff_average_1991, PHI_season_average_1991, PHI_playoff_average_1991,
  200. DET_season_average_1991, DET_playoff_average_1991, LAL_season_average_1991, LAL_playoff_average_1991]
  201. season_score_1991 = []
  202. season_loss_1991 = []
  203. playoff_score_1991 = []
  204. playoff_loss_1991 = []
  205. for i in range(len(total_1991)):
  206. if i % 2 == 0:
  207. season_score_1991.append(total_1991[i]['百回合得分'])
  208. season_loss_1991.append(-total_1991[i]['百回合失分'])
  209. else:
  210. playoff_score_1991.append(total_1991[i]['百回合得分'])
  211. playoff_loss_1991.append(-total_1991[i]['百回合失分'])
  212. change1991 = pd.DataFrame({'season_score': season_score_1991, 'season_loss': season_loss_1991,
  213. 'playoff_score': playoff_score_1991, 'playoff_loss': playoff_loss_1991})
  214. change1991[['season_score', 'playoff_score']].plot(kind='bar')
  215. plt.xticks(np.arange(4), ['NYK', 'PHI', 'DET', 'LAL'])
  216. plt.xlabel('Team')
  217. plt.ylabel('Score per 100 Round')
  218. change1991[['season_loss', 'playoff_loss']].plot(kind='bar')
  219. plt.xticks(np.arange(4), ['NYK', 'PHI', 'DET', 'LAL'])
  220. plt.xlabel('Team')
  221. plt.ylabel('Loss per 100 Round')
  222. season1991 = team_season[team_season['赛季'] == 1991]
  223. season1991_score = season1991['百回合得分'].groupby(season1991['球队']).mean()
  224. season1991_loss = season1991['百回合失分'].groupby(season1991['球队']).mean()
  225. season1991_average = pd.concat([season1991_score, season1991_loss], axis=1)
  226. season1991_average['得失分比'] = season1991_average['百回合得分'] / season1991_average['百回合失分']
  227. season1991_average.sort_values(by='得失分比', ascending=False)
  228. compare1991 = pd.DataFrame([season_score_1991, season_loss_1991, playoff_score_1991, playoff_loss_1991],
  229. index=['season score', 'season loss', 'playoff score', 'playoff loss'],
  230. columns=['NYK', 'PHI', 'DET', 'LAL']).T
  231. compare1991['season ratio'] = compare1991['season score'] / (-1 * compare1991['season loss'])
  232. compare1991['playoff ratio'] = compare1991['playoff score'] / (-1 * compare1991['playoff loss'])
  233. compare1991
  234. CHI1996
  235. MIA_season_1996 = team_season[(team_season['球队'] == 'MIA') & (team_season['赛季'] == 1996)]
  236. MIA_season_average_1996 = MIA_season_1996.mean()
  237. MIA_playoff_1996 = team_playoff[(team_playoff['球队'] == 'MIA') & (team_playoff['赛季'] == 1996)].tail(3)
  238. MIA_playoff_average_1996 = MIA_playoff_1996.mean()
  239. NYK_season_1996 = team_season[(team_season['球队'] == 'NYK') & (team_season['赛季'] == 1996)]
  240. NYK_season_average_1996 = NYK_season_1996.mean()
  241. NYK_playoff_1996 = team_playoff[(team_playoff['球队'] == 'NYK') & (team_playoff['赛季'] == 1996)].tail(5)
  242. NYK_playoff_average_1996 = NYK_playoff_1996.mean()
  243. ORL_season_1996 = team_season[(team_season['球队'] == 'ORL') & (team_season['赛季'] == 1996)]
  244. ORL_season_average_1996 = ORL_season_1996.mean()
  245. ORL_playoff_1996 = team_playoff[(team_playoff['球队'] == 'ORL') & (team_playoff['赛季'] == 1996)].tail(4)
  246. ORL_playoff_average_1996 = ORL_playoff_1996.mean()
  247. total_1996 = [MIA_season_average_1996, MIA_playoff_average_1996, NYK_season_average_1996, NYK_playoff_average_1996,
  248. ORL_season_average_1996, ORL_playoff_average_1996]
  249. CHI1996.tail(6)['百回合得分'].mean()
  250. CHI1996.tail(6)['百回合失分'].mean()
  251. season_score_1996 = []
  252. season_loss_1996 = []
  253. playoff_score_1996 = []
  254. playoff_loss_1996 = []
  255. for i in range(len(total_1996)):
  256. if i % 2 == 0:
  257. season_score_1996.append(total_1996[i]['百回合得分'])
  258. season_loss_1996.append(-total_1996[i]['百回合失分'])
  259. else:
  260. playoff_score_1996.append(total_1996[i]['百回合得分'])
  261. playoff_loss_1996.append(-total_1996[i]['百回合失分'])
  262. season_score_1996.append(107.523563)
  263. season_loss_1996.append(-99.497880)
  264. playoff_score_1996.append(100.551875)
  265. playoff_loss_1996.append(-104.907100)
  266. change1996 = pd.DataFrame({'season_score': season_score_1996, 'season_loss': season_loss_1996,
  267. 'playoff_score': playoff_score_1996, 'playoff_loss': playoff_loss_1996})
  268. change1996[['season_score', 'playoff_score']].plot(kind='bar')
  269. plt.xticks(np.arange(4), ['MIA', 'NYK', 'ORL', 'SEA'])
  270. plt.xlabel('Team')
  271. plt.ylabel('Score per 100 Round')
  272. change1996[['season_loss', 'playoff_loss']].plot(kind='bar')
  273. plt.xticks(np.arange(4), ['MIA', 'NYK', 'ORL', 'SEA'])
  274. plt.xlabel('Team')
  275. plt.ylabel('Loss per 100 Round')
  276. season1996 = team_season[team_season['赛季'] == 1996]
  277. season1996_score = season1996['百回合得分'].groupby(season1996['球队']).mean()
  278. season1996_loss = season1996['百回合失分'].groupby(season1996['球队']).mean()
  279. season1996_average = pd.concat([season1996_score, season1996_loss], axis=1).T
  280. season1996_average['SEA'] = [107.523563, 99.497880]
  281. season1996_average = season1996_average.T
  282. season1996_average['得失分比'] = season1996_average['百回合得分'] / season1996_average['百回合失分']
  283. season1996_average.sort_values(by='得失分比', ascending=False)
  284. compare1996 = pd.DataFrame([season_score_1996, season_loss_1996, playoff_score_1996, playoff_loss_1996],
  285. index=['season score', 'season loss', 'playoff score', 'playoff loss'],
  286. columns=['MIA', 'NYK', 'ORL', 'SEA']).T
  287. compare1996['season ratio'] = compare1996['season score'] / (-1 * compare1996['season loss'])
  288. compare1996['playoff ratio'] = compare1996['playoff score'] / (-1 * compare1996['playoff loss'])
  289. compare1996
  290. LAL2001
  291. POR_season_2001 = team_season[(team_season['球队'] == 'POR') & (team_season['赛季'] == 2001)]
  292. POR_season_average_2001 = POR_season_2001.mean()
  293. POR_playoff_2001 = team_playoff[(team_playoff['球队'] == 'POR') & (team_playoff['赛季'] == 2001)].tail(3)
  294. POR_playoff_average_2001 = POR_playoff_2001.mean()
  295. SAC_season_2001 = team_season[(team_season['球队'] == 'SAC') & (team_season['赛季'] == 2001)]
  296. SAC_season_average_2001 = SAC_season_2001.mean()
  297. SAC_playoff_2001 = team_playoff[(team_playoff['球队'] == 'SAC') & (team_playoff['赛季'] == 2001)].tail(4)
  298. SAC_playoff_average_2001 = SAC_playoff_2001.mean()
  299. SAS_season_2001 = team_season[(team_season['球队'] == 'SAS') & (team_season['赛季'] == 2001)]
  300. SAS_season_average_2001 = SAS_season_2001.mean()
  301. SAS_playoff_2001 = team_playoff[(team_playoff['球队'] == 'SAS') & (team_playoff['赛季'] == 2001)].tail(4)
  302. SAS_playoff_average_2001 = SAS_playoff_2001.mean()
  303. PHI_season_2001 = team_season[(team_season['球队'] == 'PHI') & (team_season['赛季'] == 2001)]
  304. PHI_season_average_2001 = PHI_season_2001.mean()
  305. PHI_playoff_2001 = team_playoff[(team_playoff['球队'] == 'PHI') & (team_playoff['赛季'] == 2001)].tail(5)
  306. PHI_playoff_average_2001 = PHI_playoff_2001.mean()
  307. total_2001 = [POR_season_average_2001, POR_playoff_average_2001, SAC_season_average_2001, SAC_playoff_average_2001,
  308. SAS_season_average_2001, SAS_playoff_average_2001, PHI_season_average_2001, PHI_playoff_average_2001]
  309. season_score_2001 = []
  310. season_loss_2001 = []
  311. playoff_score_2001 = []
  312. playoff_loss_2001 = []
  313. for i in range(len(total_2001)):
  314. if i % 2 == 0:
  315. season_score_2001.append(total_2001[i]['百回合得分'])
  316. season_loss_2001.append(-total_2001[i]['百回合失分'])
  317. else:
  318. playoff_score_2001.append(total_2001[i]['百回合得分'])
  319. playoff_loss_2001.append(-total_2001[i]['百回合失分'])
  320. change2001 = pd.DataFrame({'season_score': season_score_2001, 'season_loss': season_loss_2001,
  321. 'playoff_score': playoff_score_2001, 'playoff_loss': playoff_loss_2001})
  322. change2001[['season_score', 'playoff_score']].plot(kind='bar')
  323. plt.xticks(np.arange(4), ['POR', 'SAC', 'SAS', 'PHI'])
  324. plt.xlabel('Team')
  325. plt.ylabel('Score per 100 Round')
  326. change2001[['season_loss', 'playoff_loss']].plot(kind='bar')
  327. plt.xticks(np.arange(4), ['POR', 'SAC', 'SAS', 'PHI'])
  328. plt.xlabel('Team')
  329. plt.ylabel('Loss per 100 Round')
  330. season2001 = team_season[team_season['赛季'] == 2001]
  331. season2001_score = season2001['百回合得分'].groupby(season2001['球队']).mean()
  332. season2001_loss = season2001['百回合失分'].groupby(season2001['球队']).mean()
  333. season2001_average = pd.concat([season2001_score, season2001_loss], axis=1)
  334. season2001_average['得失分比'] = season2001_average['百回合得分'] / season2001_average['百回合失分']
  335. season2001_average.sort_values(by='得失分比', ascending=False)
  336. compare2001 = pd.DataFrame([season_score_2001, season_loss_2001, playoff_score_2001, playoff_loss_2001],
  337. index=['season score', 'season loss', 'playoff score', 'playoff loss'],
  338. columns=['POR', 'SAC', 'SAS', 'PHI']).T
  339. compare2001['season ratio'] = compare2001['season score'] / (-1 * compare2001['season loss'])
  340. compare2001['playoff ratio'] = compare2001['playoff score'] / (-1 * compare2001['playoff loss'])
  341. compare2001