Data Science – 9 – Γραφήματα Συνέχεια !!!!!

Εισάγουμε πάλι τις βιβλιοθήκες μας και το dataframe.

import numpy as np

import pandas as pd

import matplotlib

import matplotlib.pyplot as plt

import seaborn as sns

data_filename = ‘gamesff.csv’

games = pd.read_csv(data_filename,encoding=’utf-8′)

Παρακάτω θα φτιάξω ένα διάγραμμα scatter plot τις διάφορες βαθμολογικές θέσεις που πήρε κατά την διάρκεια της χρονιάς η κάθε ομάδα. Βλέπουμε λοιπόν πως καθώς εξελισσόταν το πρωτάθλημα ο Ιωνικός για παράδειγμα πήρε τις θέσεις 8, 10, 11 και 13. Η Λαμία βρέθηκε στις θέσεις 10,11, 12, 13, η ΑΕΚ βρέθηκε στις θέσεις 2, 3 και 4, κοκ για όλες τις ομάδες. Ο κώδικας:.

plt.style.use(‘ggplot’)

plt.figure(figsize=(20,8))

_ = plt.scatter(x=games[‘ΓΗΠΕΔΟΥΧΟΣ’], y=games[‘ΘΕΣΗ_ΓΗΠ’])

ds 9a

Στη συνέχεια θα δούμε ένα πιο περίπλοκο διάγραμμα. Θα δούμε την βαθμολογική θέση που είναι μια ομάδα ανάλογα με την φόρμα στην οποία βρίσκεται τα τελευταία 5 ματς. Επίσης κάθε κουκίδα έχει διαφορετικό μέγεθος ανάλογα με το πόσους βαθμούς έχει μαζέψει στο πρωτάθλημα. Παρατηρούμε μια ενδιαφέρουσα κατανομή η οποία δείχνει πλούσια πληροφορία. Εξάγουμε εύκολα το συμπέρασμα πως γενικά καλύτερη φόρμα σημαίνει και μεγαλύτερη θέση στην βαθμολογία και επίσης καλύτερη φόρμα. Ο κώδικας:

plt.style.use(‘ggplot’)

plt.figure(figsize=(20,8))

_ = plt.scatter(x=games[‘ΓΗΠ_Φ5’], y=games[‘ΘΕΣΗ_ΓΗΠ’],s = games[‘ΒΑΘ_ΓΗΠ’]**2, alpha =0.5)

ds 9b

Θα συνεχίσουμε παρατηρώντας τον αριθμό των παιχνιδιών που μπήκαν διαφορετικός αριθμός συνολικών γκολ. Δηλαδή σε πόσα ματς μπήκαν 0 γκολ, σε πόσα ματς μπήκαν 1 γκολ κοκ. Γράφουμε:

games.ΣΚΟΡ_ΣΥΝ.value_counts()

Αποτέλεσμα:

3  γκολ       45 παιχνίδια
2 γκολ        42 παιχνίδια
1 γκολ        35 παιχνίδια
0 γκολ        21 παιχνίδια
4 γκολ        21 παιχνίδια
5 γκολ        11 παιχνίδια
6 γκολ         5  παιχνίδια
8 γκολ         2 παιχνίδια

Και με διάγραμμα γράφουμε τις εντολές:
sns.set_style('darkgrid')
sns.set_theme(font_scale=1.5)
sns.displot(games, x='ΣΚΟΡ_ΣΥΝ', aspect = 1.5, height =7, discrete = True, shrink=.8, bins =8)

ds 9c
Αναλύοντας περαιτέρω την παραπάνω πληροφορία, θα δούμε με ένα επεξηγηματικό 
διάγραμμα σε πόσα ματς σε κάθε κατηγορία των συνολικών γκολ, ήρθε Άσσος, σε 
πόσα ήρθε Χ, και σε πόσα ήρθε Διπλό. Ο κώδικας:
sns.set_style('darkgrid')
sns.set_theme(font_scale=1.5)
sns.displot(games, x='ΣΚΟΡ_ΣΥΝ', hue='ΑΠΟΤ',height =7, aspect =2, kind="hist", discrete= True,
 shrink=.8)

ds 9d

ή τοποθετώντας την μια στήλη δίπλα στην άλλη ίσως είναι ακόμα πιο πληροφοριακό ως
 διάγραμμα. Εντολές:

sns.set_style('darkgrid')
sns.set_theme(font_scale=1.5)
sns.displot(games, x='ΣΚΟΡ_ΣΥΝ', hue='ΑΠΟΤ', edgecolor="black", fill= True,multiple="dodge",
height =7, aspect =1.5, kind="hist")

ds 9e

Μπορούμε να δούμε αντίστοιχη πληροφορία με θηκογράμματα.
plt.figure(figsize=(16,8))
_ = sns.boxplot(x=games['ΣΚΟΡ_ΣΥΝ'], y=games['ΑΠΟΤ'], palette={'Α': 'yellow',
 'Χ': 'blue', 'Δ':'green'} )

ds 9f

Πολύ ωραίο είναι το επόμενο διάγραμμα που δείχνει για κάθε σημείο (Άσσος, Χι, Διπλό)
 σε πόσα ματς μπήκαν 0 γκολ, 1 γκολ, κοκ. Από το διάγραμμα βλέπουμε πως όταν το
 παιχνίδι έρχεται Χ, τότε τις περισσότερες φορές μπαίνουν 0 γκολ, δηλαδή 0-0, 
ακολουθούν τα 2 γκολ, δηλαδή το 1-1, με μικρή διαφορά ακολουθούν τα 4 γκολ, δηλαδή
 το 2-2, και μια μόνο φορά μπήκαν 6 και 8 γκολ, δηλαδή μια φορά σε ολόκληρη την
 χρονιά μόνο το παιχνίδι ήρθε 3-3 και μια μόνο φορά το παιχνίδι ήρθε 4-4. Επομένως
 αντιλαμβανόμαστε ότι το να επιχειρούμε να προβλέψουμε το 3-3 και το 4-4, είναι στην
 ουσία χαμένος κόπος με ποσοστό επιτυχίας στο όριο του 0,5%.
Όμοιες αναλύσεις μπορούμε να κάνουμε βλέποντας με κίτρινο και πράσινο πότε το 
παιχνίδι έρχεται Άσσος και διπλό. Βλέπουμε για παράδειγμα πως όταν μπαίνουν στο
 παιχνίδι σύνολο 5 γκολ, έρχεται με το αποτέλεσμα με πιθανότητα 70% Άσσος, και με 
πιθανότητα 30% Διπλό. Όταν όμως στο παιχνίδι μπαίνουν 3 γκολ, τότε το αποτέλεσμα 
του παιχνιδιού είναι σχεδόν στο 50%-50% για Άσσο και Διπλό. Σίγουρα αυτό αποτελεί
 ένα διάγραμμα για πολύ μελέτη και συμπεράσματα. Ο κώδικας:
plt.figure(figsize=(16,8))
_ = sns.stripplot(x=games['ΣΚΟΡ_ΣΥΝ'], y=games['ΑΠΟΤ'],linewidth=0.5,size=7,
                  jitter=.25, edgecolor= 'black', palette={'Α': 'yellow', 'Χ': 'blue', 'Δ':'green'} )

ds 9g

Επόμενο είναι το διάγραμμα βιολιού. Έχει την πληροφορία πως το πάχος κάθε βιολιού
 δείχνει που συγκεντρώνεται  μεγαλύτερη συχνότητα αποτελεσμάτων. Το μήκος του
 βιολιού δείχνει το εύρος των αποτελεσμάτων. Ο κώδικας:
plt.figure(figsize=(16,8))
_ = sns.violinplot(x=games['ΣΚΟΡ_ΣΥΝ'], y=games['ΑΠΟΤ'],
                   edgecolor= 'black', palette={'Α': 'yellow', 'Χ': 'blue', 'Δ':'green'} )

ds 9h

Τέλος, βλέπουμε πως είχαμε 83 ματς που το αποτέλεσμα ήρθε Άσσος, με μέσο όρο 
συνολικών γκολ 2,66 και τυπική απόκλιση 1,51. 58 ματς που το αποτέλεσμα ήρθε 
Άσσος με μέσο όρο συνολικών γκολ 2,68 και τυπική απόκλιση 1,23. 41 ματς που το 
αποτέλεσμα ήρθε Διπλό με μέσο όρο συνολικών γκολ 1,51 και τυπική απόκλιση 1,93. 
Κώδικας:
g = games[['ΑΠΟΤ','ΣΚΟΡ_ΣΥΝ']].copy()
g.groupby('ΑΠΟΤ').describe()

ds 9i
Κατηγορίες: data science. Προσθήκη στους σελιδοδείκτες.