Neste artigo, veremos a análise das Olimpíadas usando Python. Os modernos Jogos Olímpicos ou Olimpíadas são os principais eventos esportivos internacionais, com competições de esportes de verão e inverno, nas quais milhares de atletas de todo o mundo participam de uma variedade de competições. Os Jogos Olímpicos são considerados a competição esportiva mais importante do mundo, com mais de 200 países participantes.

O número total de eventos nas Olimpíadas é de 339 em 33 esportes. E para cada evento existem vencedores. Portanto, vários dados são gerados. Então, usando Python, iremos analisar esses dados.

Módulos Usados

  • Pandas : é usado para analisar os dados,
  • NumPy : NumPy é um pacote de processamento de array de propósito geral.
  • Matplotlib : é uma extensão de matemática numérica NumPy
  • seaborn : é usado para plotagem de gráficos estatísticos de visualização em Python

Arquitetura do modelo:  

Implementação Stepwise  

Etapa 1: Importar bibliotecas

# importing all necessary libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Etapa 2: Compreendendo o banco de dados  

Ao lidar com dados olímpicos, temos dois arquivos CSV. Um contendo os custos relacionados aos esportes de resultados dos Jogos Olímpicos de todos os anos. E outra contém as informações sobre os atletas de todos os anos em que participaram com informações.

O arquivo de dados CSV pode ser baixado aqui: Conjuntos de dados

Etapa 3: limpeza e formatação de dados

Importamos ambos os conjuntos de dados usando o. read_csv()  em um dataframe usando pandas e exibiu as primeiras 5 linhas de cada conjunto de dados.

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())

Saída:

Etapa 4: Mesclando dois DataFrame

Aqui nós iremos fundir dois dataframes usando pandas.merge() em python.

# 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())

Saída: 

Análise de dados das Olimpíadas

Os dados agora estão disponíveis usando pandas e matplotlib vamos ver alguns exemplos

Análise de dados de medalhistas de ouro

Criação de um novo quadro de dados incluindo apenas medalhistas de ouro.

# creating goldmedal dataframes
goldMedals = merged[(merged.Medal == 'Gold')]
print(goldMedals.head())

Saída : 

Medalha de ouro em relação à idade:

Aqui vamos criar um gráfico do número de medalhas de ouro em relação à idade. Para isso, criaremos um gráfico de contagem que mostra o eixo X como a idade dos jogadores e o eixo Y representa o número de medalhas.

plt.figure(figsize=(20, 10))
plt.title('Distribution of Gold Medals')
sns.countplot(goldMedals['Age'])
plt.show()

Saída : 

Imprima o número de atletas que são medalhistas de ouro e com idade superior a 50 com suas informações.

goldMedals = merged[(merged.Medal == 'Gold')]
print('The no of athletes is',
      goldMedals['ID'][goldMedals['Age'] > 50].count(), '\n')
print(goldMedals[goldMedals['Age'] > 50])

Saída : 

Crie um novo dataframe chamado masterDisciplines no qual iremos inserir este novo conjunto de pessoas e, em seguida, criaremos uma visualização com ele

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()

Saída :

Mulheres que podem brincar no verão

Exibe todas as mulheres atletas que jogaram na temporada de verão e mostra o aumento de mulheres atletas após um longo período por meio de representação gráfica.

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()

Saída : 

Os 5 principais países que ganharam mais medalhas

Aqui, imprimiremos os 5 principais países e os mostraremos no gráfico com catplot .

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()

saída:

Análise de peso dos jogadores

Aqui, veremos como é o peso ao longo do ano para levantadores masculinos por meio da representação gráfica usando o gráfico de pontos .

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()

Saída :