Files
004_comission/ych1990101/task1-optimized/app/notebook/utils/Statistics.py
louiscklaw cd995ed8bd update,
2025-01-31 20:05:06 +08:00

133 lines
5.1 KiB
Python

#!/usr/bin/env python3
import os,sys,json
from pprint import pprint
def distillRecent8Results(json_manifest, competitionName="Belgian Division 1"):
# distill results
json_manifest['statistics']['distilledRecent8Results'] = {}
json_manifest_distilled = json_manifest['statistics']['distilledRecent8Results']
json_manifest_distilled['homeTeam'] = []
distilled_homeTeam = json_manifest_distilled['homeTeam']
json_manifest_distilled['awayTeam'] = []
distilled_awayTeam = json_manifest_distilled['awayTeam']
recent8Results = json_manifest['recentfrom-information.json']['recent8Results']
recent8ResultsHomeTeam = json_manifest['recentfrom-information-home-team.json']['recent8Results']
recent8ResultsAwayTeam = json_manifest['recentfrom-information-away-team.json']['recent8Results']
homeTeam = recent8ResultsHomeTeam['homeTeam']
for result in homeTeam:
if result['competitionName'] == competitionName and result['homeOrAway'] == "H":
if (len(distilled_homeTeam)) < 5:
distilled_homeTeam.append(result)
awayTeam = recent8ResultsAwayTeam['awayTeam']
for result in awayTeam:
if result['competitionName'] == competitionName and result['homeOrAway'] == "A":
if (len(distilled_awayTeam)) < 5:
distilled_awayTeam.append(result)
def lookupPositionByTeamName(json_manifest, teamNameToCheck):
standings_info = json_manifest['tournament/standings.json']['info']
for standing in standings_info:
if standing['teamName'] == teamNameToCheck:
return standing['teamRank']
raise Exception(teamNameToCheck)
return -99
def countTotalStandingTeam(json_manifest):
standings_info = json_manifest['tournament/standings.json']['info']
return len(standings_info)
def getTopBottomWinningAndLoseing(json_manifest, competitionName):
json_manifest['statistics'] = {}
json_manifest['statistics']['top_bottom_winning_losing'] = {}
result = json_manifest['statistics']['top_bottom_winning_losing']
# get statistics
result['home_top_win_count'] = 0
result['home_top_draw_count'] = 0
result['home_top_loss_count'] = 0
result['home_bottom_win_count'] = 0
result['home_bottom_draw_count'] = 0
result['home_bottom_loss_count'] = 0
result['away_top_win_count'] = 0
result['away_top_draw_count'] = 0
result['away_top_loss_count'] = 0
result['away_bottom_win_count'] = 0
result['away_bottom_draw_count'] = 0
result['away_bottom_loss_count'] = 0
# filter all non same tournament
distillRecent8Results(json_manifest, competitionName)
json_manifest_distilled = json_manifest['statistics']['distilledRecent8Results']
json_manifest_distilled_homeTeam = json_manifest_distilled['homeTeam']
json_manifest_distilled_awayTeam = json_manifest_distilled['awayTeam']
all_team_count = countTotalStandingTeam(json_manifest)
json_manifest_distilled['allTeamCount'] = all_team_count
for entry in json_manifest_distilled_homeTeam:
oppTeamName = entry['oppTeamName']
pos = lookupPositionByTeamName(json_manifest, oppTeamName)
pos = int(pos)
entry['pos'] = pos
if (pos <= (all_team_count / 2)):
# count home top winning
if entry['fullTimeResult'] == 'W':
result['home_top_win_count'] += 1
# count home top draw
if entry['fullTimeResult'] == 'D':
result['home_top_draw_count'] += 1
# count home top losing
if entry['fullTimeResult'] == 'L':
result['home_top_loss_count'] += 1
else:
# count home bottom winning
if entry['fullTimeResult'] == 'W':
result['home_bottom_win_count'] += 1
# count home bottom draw
if entry['fullTimeResult'] == 'D':
result['home_bottom_draw_count'] += 1
# count home bottom losing
if entry['fullTimeResult'] == 'L':
result['home_bottom_loss_count'] += 1
for entry in json_manifest_distilled_awayTeam:
oppTeamName = entry['oppTeamName']
pos = lookupPositionByTeamName(json_manifest, oppTeamName)
pos = int(pos)
entry['pos'] = pos
if (pos <= (all_team_count / 2)):
# count away top winning
if entry['fullTimeResult'] == 'W':
result['away_top_win_count'] += 1
# count away top draw
if entry['fullTimeResult'] == 'D':
result['away_top_draw_count'] += 1
# count away top losing
if entry['fullTimeResult'] == 'L':
result['away_top_loss_count'] += 1
else:
# count away bottom winning
if entry['fullTimeResult'] == 'W':
result['away_bottom_win_count'] += 1
# count away bottom draw
if entry['fullTimeResult'] == 'D':
result['away_bottom_draw_count'] += 1
# count away bottom losing
if entry['fullTimeResult'] == 'L':
result['away_bottom_loss_count'] += 1
def helloworld():
print("helloworld")