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 :