import math
import csv
teams = ['CHI',
'COL',
'DAL',
'MIN',
'NSH',
'STL',
'WPG',
'ANA',
'CGY',
'EDM',
'LAK',
'PHX',
'SJS',
'VAN',
'BOS',
'BUF',
'DET',
'FLA',
'MTL',
'OTT',
'TBL',
'TOR',
'CAR',
'CBJ',
'NJD',
'NYR',
'NYI',
'PHI',
'PIT',
'WSH']
krach = [100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100]
new_krach = [100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100]
wins = [0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0]
RRWP = [0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0]
SOS = [0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0]
GP = [0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0]
games = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
with open([put your game results csv filepath here], newline='') as results:
game_result = csv.reader(results, delimiter=',')
for row in game_result:
if row[1] == 'Chicago Blackhawks':
away = 0
elif row[1] == 'Colorado Avalanche':
away = 1
elif row[1] == 'Dallas Stars':
away = 2
elif row[1] == 'Minnesota Wild':
away = 3
elif row[1] == 'Nashville Predators':
away = 4
elif row[1] == 'St. Louis Blues':
away = 5
elif row[1] == 'Winnipeg Jets':
away = 6
elif row[1] == 'Anaheim Ducks':
away = 7
elif row[1] == 'Calgary Flames':
away = 8
elif row[1] == 'Edmonton Oilers':
away = 9
elif row[1] == 'Los Angeles Kings':
away = 10
elif row[1] == 'Phoenix Coyotes':
away = 11
elif row[1] == 'San Jose Sharks':
away = 12
elif row[1] == 'Vancouver Canucks':
away = 13
elif row[1] == 'Boston Bruins':
away = 14
elif row[1] == 'Buffalo Sabres':
away = 15
elif row[1] == 'Detroit Red Wings':
away = 16
elif row[1] == 'Florida Panthers':
away = 17
elif row[1] == 'Montreal Canadiens':
away = 18
elif row[1] == 'Ottawa Senators':
away = 19
elif row[1] == 'Tampa Bay Lightning':
away = 20
elif row[1] == 'Toronto Maple Leafs':
away = 21
elif row[1] == 'Carolina Hurricanes':
away = 22
elif row[1] == 'Columbus Blue Jackets':
away = 23
elif row[1] == 'New Jersey Devils':
away = 24
elif row[1] == 'New York Rangers':
away = 25
elif row[1] == 'New York Islanders':
away = 26
elif row[1] == 'Philadelphia Flyers':
away = 27
elif row[1] == 'Pittsburgh Penguins':
away = 28
else:
away = 29
if row[3] == 'Chicago Blackhawks':
home = 0
elif row[3] == 'Colorado Avalanche':
home = 1
elif row[3] == 'Dallas Stars':
home = 2
elif row[3] == 'Minnesota Wild':
home = 3
elif row[3] == 'Nashville Predators':
home = 4
elif row[3] == 'St. Louis Blues':
home = 5
elif row[3] == 'Winnipeg Jets':
home = 6
elif row[3] == 'Anaheim Ducks':
home = 7
elif row[3] == 'Calgary Flames':
home = 8
elif row[3] == 'Edmonton Oilers':
home = 9
elif row[3] == 'Los Angeles Kings':
home = 10
elif row[3] == 'Phoenix Coyotes':
home = 11
elif row[3] == 'San Jose Sharks':
home = 12
elif row[3] == 'Vancouver Canucks':
home = 13
elif row[3] == 'Boston Bruins':
home = 14
elif row[3] == 'Buffalo Sabres':
home = 15
elif row[3] == 'Detroit Red Wings':
home = 16
elif row[3] == 'Florida Panthers':
home = 17
elif row[3] == 'Montreal Canadiens':
home = 18
elif row[3] == 'Ottawa Senators':
home = 19
elif row[3] == 'Tampa Bay Lightning':
home = 20
elif row[3] == 'Toronto Maple Leafs':
home = 21
elif row[3] == 'Carolina Hurricanes':
home = 22
elif row[3] == 'Columbus Blue Jackets':
home = 23
elif row[3] == 'New Jersey Devils':
home = 24
elif row[3] == 'New York Rangers':
home = 25
elif row[3] == 'New York Islanders':
home = 26
elif row[3] == 'Philadelphia Flyers':
home = 27
elif row[3] == 'Pittsburgh Penguins':
home = 28
else:
home = 29
if row[2] == row [4]:
yep = 0
else:
games[home][away] = games[home][away] + 1
games[away][home] = games[away][home] + 1
GP[home] = GP[home] + 1
GP[away] = GP[away] + 1
if row[5] == 'SO':
wins[away] = wins[away] + 0.5
wins[home] = wins[home] + 0.5
elif row[2] > row[4]:
wins[away] = wins[away] + 1
else:
wins[home] = wins[home] + 1
good = 0
while good != 1:
for team in range(30):
sum = 0
for opp in range(30):
sum = sum + (krach[team]*games[team][opp])/(krach[team]+krach[opp])
new_krach[team] = (wins[team]/sum)*krach[team]
ratio = new_krach[team]/krach[team]
abs_difference = math.fabs(1-ratio)
if abs_difference <= 0.00001:
good = 1
else:
good = 0
krach[team] = new_krach[team]
for int in range(10):
scale_wins = 0
for team in range(30):
scale_wins = scale_wins + 100/(100 + krach[team])
scale = scale_wins/15
for team in range(30):
krach[team] = krach[team] * scale
for team in range(30):
RRW = 0
for opp in range(30):
if team == opp:
RRW = RRW
else:
RRW = RRW + krach[team]/(krach[team]+krach[opp])
RRWP[team] = RRW/29
SOS[team] = krach[team] * (GP[team] - wins[team])/wins[team]
for row in range(30):
print(teams[row],
str(round(krach[row],2)).rjust(7),
str(round(RRWP[row],4)).rjust(6),
str(round(SOS[row],2)).rjust(7))
output = open('[put your output filepath here]', 'w')
for row in range(30):
output.write(str(krach[row]))
output.write('\n')