import subprocess from os.path import exists import pandas as pd import numpy as np from sklearn.model_selection import train_test_split import matplotlib from pathlib import Path # Inicjalizacja danych file_exists = exists('./df_atp.csv') if not file_exists: subprocess.run(["kaggle", "datasets", "download", "-d", "hakeem/atp-and-wta-tennis-data"]) subprocess.run(["unzip", "-o", "atp-and-wta-tennis-data.zip"]) atp_data = pd.read_csv('df_atp.csv') print(atp_data) # Średnia ilość gemów w pierwszym secie zwycięzców meczu print(atp_data[["Winner", "W1"]].mean()) # Minimalna ilość wygranych gemów w pierwszym secie osób wygrywających mecz print(atp_data[["Winner", "W1"]].min()) # Maksymalna ilość wygranych gemów w pierwszym secie osób wygrywających mecz print(atp_data[["Winner", "W1"]].max()) # Odchylenie standardowe wygranych gemów w pierwszym secie osób wygrywających mecz print(atp_data[["Winner", "W1"]].std()) # Mediana wygranych gemów w pierwszym secie osób wygrywających mecz print(atp_data[["Winner", "W1"]].median()) # Zmiana nazwy nienazwanej kolumny atp_data.rename(columns={'Unnamed: 0':'ID'}, inplace=True) # Jak często kto był zwycięzcą print(atp_data.groupby("Winner")["ID"].nunique()) # Normalizacja rund -1: Finał, -2: Półfinał, -3: Ćwiartka, -4: Każdy z każdym # 1: pierwsza runda, 2: druga runda, 3: trzecia runda, 4: czwarta runda atp_data.loc[atp_data["Round"] == 'The Final', "Round"] = -1 atp_data.loc[atp_data["Round"] == 'Semifinals', "Round"] = -2 atp_data.loc[atp_data["Round"] == 'Quarterfinals', "Round"] = -3 atp_data.loc[atp_data["Round"] == 'Round Robin', "Round"] = -4 atp_data.loc[atp_data["Round"] == '1st Round', "Round"] = 1 atp_data.loc[atp_data["Round"] == '2nd Round', "Round"] = 2 atp_data.loc[atp_data["Round"] == '3rd Round', "Round"] = 3 atp_data.loc[atp_data["Round"] == '4th Round', "Round"] = 4 print(atp_data["Round"]) # Czyszczenie: W polu z datą zamienimy ######## na pustego stringa atp_data.loc[atp_data["Date"] == '########', "Date"] = '' print(atp_data["Date"]) # Podział na podzbiory: trenujący, testowy, walidujący w proporcjach 6:2:2 atp_train, atp_test = train_test_split(atp_data, test_size=0.4, random_state=1) atp_dev, atp_test = train_test_split(atp_test, test_size=0.5, random_state=1) # Wielkość zbioru i podzbiorów print("\nElements of total set: " + str(len(atp_data))) print("\nElements of test set: " + str(len(atp_test))) print("\nElements of dev set: " + str(len(atp_dev))) print("\nElements of train set: " + str(len(atp_train))) # Stworzenie plików z danymi trenującymi i testowymi filepath1 = Path('data/atp_test.csv') filepath2 = Path('data/atp_train.csv') filepath1.parent.mkdir(parents=True, exist_ok=True) filepath2.parent.mkdir(parents=True, exist_ok=True) atp_test.to_csv(filepath1) atp_train.to_csv(filepath2)