train dev and test subsets, basic statistics and preprocessing

This commit is contained in:
Wirusik 2022-03-20 21:27:49 +01:00
parent 7f6b16743e
commit 16081a3564

71
init.py
View File

@ -1,10 +1,79 @@
import subprocess import subprocess
from os.path import exists from os.path import exists
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib
# Inicjalizacja danych
file_exists = exists('./df_atp.csv') file_exists = exists('./df_atp.csv')
if not file_exists: if not file_exists:
subprocess.run(["pip", "install", "--user", "kaggle"]) subprocess.run(["pip", "install", "--user", "kaggle"])
subprocess.run(["pip", "install", "--user","pandas"]) subprocess.run(["pip", "install", "--user", "pandas"])
subprocess.run(["pip", "install", "--user", "scikit-learn"])
subprocess.run(["pip", "install", "--user", "matplotlib"])
subprocess.run(["kaggle", "datasets", "download", "-d", "hakeem/atp-and-wta-tennis-data"]) subprocess.run(["kaggle", "datasets", "download", "-d", "hakeem/atp-and-wta-tennis-data"])
subprocess.run(["unzip", "-o", "atp-and-wta-tennis-data.zip"]) subprocess.run(["unzip", "-o", "atp-and-wta-tennis-data.zip"])
atp_data = pd.read_csv('df_atp.csv')
print(atp_data)
# Podział na podzbiory: trenujący, testowy, walidujący
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("Elements of total set: " + str(len(atp_data)))
print("Elements of test set: " + str(len(atp_test)))
print("Elements of dev set: " + str(len(atp_dev)))
print("Elements of train set: " + str(len(atp_train)))
# Ś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"])