Olympische Datenanalyse mit Python
In diesem Artikel sehen wir uns die Analyse der Olympischen Spiele mit Python an. Die modernen Olympischen Spiele oder Olympischen Spiele sind führende internationale Sportveranstaltungen mit Sommer- und Wintersportwettkämpfen, an denen Tausende von Athleten aus der ganzen Welt an einer Vielzahl von Wettkämpfen teilnehmen. Die Olympischen Spiele gelten mit mehr als 200 teilnehmenden Nationen als der wichtigste Sportwettkampf der Welt.
Die Gesamtzahl der Veranstaltungen bei den Olympischen Spielen beträgt 339 in 33 Sportarten. Und für jedes Event gibt es Gewinner. Daher werden verschiedene Daten generiert. Mithilfe von Python werden wir diese Daten also analysieren.
Verwendete Module
- Pandas : Es wird zur Analyse der Daten verwendet,
- NumPy : NumPy ist ein universelles Array-Verarbeitungspaket.
- Matplotlib : Es ist eine numerische Mathematikerweiterung NumPy
- seaborn : Es wird zur Visualisierung statistischer Grafiken in Python verwendet
Modellarchitektur:
Schrittweise Umsetzung
Schritt 1: Bibliotheken importieren
Python3
# importing all necessary libraries import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns
Schritt 2: Datenbank verstehen
Beim Umgang mit olympischen Daten haben wir zwei CSV-Dateien. Eine enthält die sportbezogenen Ausgaben der Olympischen Spiele aller Jahre. Und andere enthält die Informationen über Athleten aller Jahre, wenn sie mit Informationen teilgenommen haben.
CSV-Datendatei kann hier heruntergeladen werden: Datensätze
Schritt 3: Datenbereinigung und Formatierung
Wir haben beide Datensätze mit der . read_csv() Methode in einen Datenrahmen mit Pandas und zeigt die ersten 5 Zeilen jedes Datensatzes an.
Python3
data = pd.read_csv('athlete_events.csv') # read file # data.head() display first 5 entry # data.describe describe about model # data.info give info about data print(data.head(), data.describe(), data.info())
Ausgabe:
Schritt 4: Zusammenführen von zwei DataFrames
Hier werden wir zwei Datenrahmen mit pandas.merge() in Python zusammenführen.
Python3
# regions and country noc data csv file regions = pd.read_csv('datasets_31029_40943_noc_regions.csv') print(regions.head()) # merging to data and regions frame merged = pd.merge(data, regions, on='NOC', how='left') print(merged.head())
Ausgabe:
Datenanalyse von Olympischen Spielen
Daten sind jetzt mit Pandas und Matplotlib verfügbar. Lassen Sie uns einige Beispiele sehen
Datenanalyse von Goldmedaillengewinnern
Erstellen eines neuen Datenrahmens, der nur Goldmedaillengewinner enthält.
Python3
# creating goldmedal dataframes goldMedals = merged[(merged.Medal == 'Gold')] print(goldMedals.head())
Ausgabe :
Goldmedaillengewinner nach Alter:
Hier werden wir ein Diagramm der Anzahl der Goldmedaillen in Bezug auf das Alter erstellen. Dazu erstellen wir ein Countplot zur grafischen Darstellung, das auf der X-Achse das Alter der Spieler und auf der Y-Achse die Anzahl der Medaillen darstellt.
Python3
plt.figure(figsize=(20, 10)) plt.title('Distribution of Gold Medals') sns.countplot(goldMedals['Age']) plt.show()
Ausgabe :
Drucken Sie die Anzahl der Athleten, die Goldmedaillengewinner sind und deren Alter über 50 ist, mit ihren Informationen aus.
Python3
goldMedals = merged[(merged.Medal == 'Gold')] print('The no of athletes is', goldMedals['ID'][goldMedals['Age'] > 50].count(), '\n') print(goldMedals[goldMedals['Age'] > 50])
Ausgabe :
Erstellen Sie einen neuen Datenrahmen namens masterDisciplines, in den wir diese neue Gruppe von Personen einfügen und dann damit eine Visualisierung erstellen
Python3
masterDisciplines = goldMedals['Sport'][goldMedals['Age'] > 50] plt.figure(figsize=(20, 10)) plt.tight_layout() sns.countplot(masterDisciplines) plt.title('Gold Medals for Athletes Over 50') plt.show()
Ausgabe :
Frauen, die im Sommer spielen können
Zeigen Sie alle Sportlerinnen an, die in der Sommersaison gespielt haben, und zeigen Sie die Zunahme der Sportlerinnen nach einem langen Zeitraum über eine grafische Darstellung an.
Python3
womenInOlympics = merged[(merged.Sex == 'F') & (merged.Season == 'Summer')] print(womenInOlympics.head(10)) sns.set(style="darkgrid") plt.figure(figsize=(20, 10)) sns.countplot(x='Year', data=womenInOlympics) plt.title('Women medals per edition of the Games') plt.show()
Ausgabe :
Top 5 Länder mit den meisten Medaillen
Hier drucken wir die Top 5 Länder aus und zeigen sie in der Grafik mit catplot .
Python3
print(goldMedals.region.value_counts().reset_index(name='Medal').head()) totalGoldMedals = goldMedals.region.value_counts() .reset_index(name='Medal').head(5) g = sns.catplot(x="index", y="Medal", data=totalGoldMedals, height=6, kind="bar", palette="muted") g.despine(left=True) g.set_xlabels("Top 5 countries") g.set_ylabels("Number of Medals") plt.title('Medals per Country') plt.show()
Ausgang:
Gewichtsanalyse der Spieler
Hier werden wir anhand einer grafischen Darstellung mit Pointplot sehen, wie das Gewicht für männliche Kraftsportler im Laufe des Jahres ist .
Python3
MenOverTime = merged[(merged.Sex == 'M') & (merged.Season == 'Summer')] wlMenOverTime = MenOverTime.loc[MenOverTime['Sport'] == 'Weightlifting'] plt.figure(figsize=(20, 10)) sns.pointplot('Year', 'Weight', data=wlMenOverTime, palette='Set2') plt.title('Weight over year for Male Lifters') plt.show()
Ausgabe :