(lg_stats[1] - lg_stats[9] + lg_stats[15] + 0.44 * lg_stats[7]) / lg_games / 2) lgsum, lgames, lgmax, lgmin = 0, 0, [0, []], [30, []] for pm in tqdm(pms): if ss in enforce['Turnover'][pm][i][-1]: pmdir = playerMarkToDir(pm, RoF[i]) if pmdir: plyr = Player(pm, RoF[i]) ssgms = plyr.getSeason(ss) num_games = ssgms.shape[0] if num_games >= games_td[i]: mpsum, scoresum = MPTime('0:00'), 0 for g in range(num_games): sgm = ssgms[g:g + 1] mp = MPTime(sgm['MP'].values[0]) if mp.mf() != 0: # ================ 球员单场数据准备 ================ mpsum += mp pts = float(sgm['PTS']) fta, ft, fga, fg, tpa, tp = float( sgm['FTA']), float(sgm['FT']), float( sgm['FGA']), float(sgm['FG']), float( sgm['3PA']), float(sgm['3P']) drb, orb, trb = float(sgm['DRB']), float( sgm['ORB']), float(sgm['TRB']) ast, stl, blk, tov, pf = float( sgm['AST']), float(sgm['STL']), float( sgm['BLK']), float(sgm['TOV']), float( sgm['PF']) # ================ 球员本队数据准备 ================ gm = sgm['Playoffs' if i else 'Date'].values[0]
# ================ 分项计算 ================ pts_ = pts orb_ = orb * plus_minus[4] drb_ = drb * (1 - op_drbp) * op_vop ast_ = ast * plus_minus[3] stl_ = stl * plus_minus[0] blk_ = blk * plus_minus[2] * op_sp tov_ = -tov * plus_minus[1] # pf_ = - pf * op_stats[6] / tm_stats[16] # bmiss_ = - tm_vop * tm_drbp * bmiss # ================ 综合数据值 ================ 改进:1 投篮效率完全没有考虑!!! 2 盖帽需考虑对手命中率 # score = pts_ + drb * 0.45 + orb * plus_minus[4] + ast_ + stl * plus_minus[0] + blk * plus_minus[2] * 0.4 - tov * plus_minus[1] - pf * 1.2 - \ # fmiss * 0.6 - 2 * bmiss * 0.36 - 3 * tmiss * 0.25 score = pts_ + drb_ + orb_ + ast_ + stl_ + blk_ + tov_ # score = pts + orb * orb_plus + ast * ast_plus + stl * stl_plus + blk * blk_plus - tov * tov_minus - pf * 2 - fmiss - 2 * bmiss - 3 * tmiss score = score / mp.mf() score *= (lg_pace / tm_pace) lgsum += score lgames += 1 if mp.mf() > 15: if score > lgmax[0]: lgmax[0] = score lgmax[1] = [pm2pn[pm], ss] if score < lgmin[0]: lgmin[0] = score lgmin[1] = [pm2pn[pm], ss] # print(pm, num_games, score) tmp[pm] = score # print(tmp) lg_ascore = np.mean(np.array(list(tmp.values()))) print('联盟平均:', lg_ascore)