def ratings():
s = '''
select
first_name,
last_name,
alias,
rating,
sigma,
trueskill
from ratings
left join player using (alias)
order by 3 desc
'''
s_team = '''
select
player1,
player2,
rating,
sigma,
trueskill
from team_doubles_ratings
--left join player using (alias)
order by 3 desc
'''
s_rating_df = pd.read_sql(s, con=engine)
d_rating_df = pd.read_sql(s.replace('ratings', 'doubles_ratings'), con=engine)
t_rating_df = pd.read_sql(s_team, con=engine)
chart = dist_plot(s_rating_df)
singles_rating_df_4_template = s_rating_df.copy()
s_rating_df = s_rating_df.to_dict('records')
d_rating_df = d_rating_df.to_dict('records')
t_rating_df = t_rating_df.to_dict('records')
# top is for the data table as records, bottom is TrueSkill objects
s_r_dict = rating_df_to_dict(singles_rating_df_4_template)
rdo = OrderedDict(sorted(s_r_dict.items(), key=lambda x: x[1].mu, reverse=True))
percent_df = pd.DataFrame()
for pair in list(itertools.combinations_with_replacement(rdo, 2)):
prob = win_probability(rdo[pair[0]], rdo[pair[1]])
percent_df.loc[pair[0], pair[1]] = prob
percent_df.loc[pair[1], pair[0]] = 1 - prob
matrix = win_probability_matrix(percent_df)
return render_template('ratings.html', singles_ratings=s_rating_df,
doubles_ratings=d_rating_df, team_df=t_rating_df,
dist=chart, matrix=matrix)
评论列表
文章目录