# -*- coding: utf-8 -*-
"""
Created on Tue Apr 26 16:01:19 2022

@author: guna3
"""

import pandas as pd
import numpy as np

ipl = pd.read_csv(
    r"C:\Users\guna3\Desktop\IAQS\College\Semester 4\Statistical Risk Modelling\Project\Final.csv"
)
ipl["winner"].fillna("Tie", inplace=True)
results = ipl[["team1", "team2", "winner"]]

# Changing Old team names to new names
results.loc[results["team1"] == "Delhi Daredevils", "team1"] = "Delhi Capitals"
results.loc[results["team2"] == "Delhi Daredevils", "team2"] = "Delhi Capitals"
results.loc[results["winner"] == "Delhi Daredevils", "winner"] = "Delhi Capitals"

results.loc[results["team1"] == "Deccan Chargers", "team1"] = "Sunrisers Hyderabad"
results.loc[results["team2"] == "Deccan Chargers", "team2"] = "Sunrisers Hyderabad"
results.loc[results["winner"] == "Deccan Chargers", "winner"] = "Sunrisers Hyderabad"

results.loc[results["team1"] == "Kings XI Punjab", "team1"] = "Punjab Kings"
results.loc[results["team2"] == "Kings XI Punjab", "team2"] = "Punjab Kings"
results.loc[results["winner"] == "Kings XI Punjab", "winner"] = "Punjab Kings"

unrequired_teams = [
    "Kochi Tuskers Kerala",
    "Pune Warriors",
    "Gujarat Lions",
    "Rising Pune Supergiants",
    "Rising Pune Supergiant",
]

results = results[
    (results["team1"].isin(unrequired_teams) == False)
    & (results["team2"].isin(unrequired_teams) == False)
    & (results["winner"].isin(unrequired_teams) == False)
]


def prob_calc(results, t1, t2):

    team1 = results[
        ((results["team1"] == t1) & (results["team2"] == t2))
        | ((results["team2"] == t1) & (results["team1"] == t2))
    ].reset_index(drop=True)

    string = ""
    for i in range(len(team1)):
        if team1.loc[i, "winner"] == t1:
            string = string + "t1"

        elif team1.loc[i, "winner"] == "Tie":
            string = string + "T"
        else:
            string = string + "t2"

    N_1 = string.count("t1t1") + string.count("t1t2") + string.count("t1T")
    # N_2 = string.count("t2t1") + string.count("t2t2") + string.count("t2T")
    # N_3 = string.count("Tt1") + string.count("Tt2") + string.count("TT")

    p_win = string.count("t1t1") / N_1
    p_loss = string.count("t1t2") / N_1
    p_tie = string.count("t1T") / N_1

    return [p_win, p_loss, p_tie]


# prob_calc(results, 'Sunrisers Hyderabad', 'Royal Challengers Bangalore')
output_dict = {}
for t1 in list(results.team1.unique()):
    opponents = list(results.team1.unique())
    opponents.remove(t1)
    t2dict = {}
    for t2 in opponents:
        p_list = prob_calc(results, t1, t2)
        t2dict[t2] = p_list
    output_dict[t1] = t2dict
final_dict = {}
for team, results in output_dict.items():
    df = pd.DataFrame(output_dict[team]).T
    df.columns = ["Win", "Loss", "Tie"]
    final_dict[team] = df
