Última actualización: 2021-03-30
Análisis de los atletas mejor pagados del mundo
En el siguiente hacklab, haremos un análisis de los atletas mejor pagados del mundo entre 1990 y 2020. El análisis nos arroja datos interesantes.
- Tiger Woods domina la lista de los mejores clasificados recientemente mientras que antes lo era Michael Jordan.
- EE. UU. domina el mundo en lo que respecta a las ganancias.
- Monica Seles es la única mujer que figura en la lista de los 10 deportistas mejor pagados entre 1990 y 2020.
- Los 3 principales ganadores en 2020 son jugadores de fútbol.
- Los jugadores de baloncesto son los que más ganan, seguidos de Boxeo y Golf.
Acerca de lo que vas a construir
En este hacklab, vamos a desarrollar un script en Python con la ayuda de Google Colaboratory para analizar los datos y luego usamos Plotly y Matplotlib para mejorar la visualización y obtener mejores aprendizajes sobre el dataset.
Acerca de lo que aprenderás
- Cómo limpiar un dataset para su análisis
- Cómo utilizar Pandas y Matplotlib para analizar datos desde entidades visuales.
- Cómo utilizar Plotly para sacarle mayor ventaja a los datos.
Este codelab está enfocado en Análisis de datos con Python, los conceptos que no sean relevantes se pasan por alto y se proporcionan para que simplemente se copie y pegue el código.
Acerca de lo que necesitas
- Una versión reciente de Google Chrome o un navegador moderno.
- Una cuenta de correo de Gmail, para poder utilizar Google Colaboratory.
- Una cuenta de Github, para publicar tu resultados con más personas y posibles empleadores.
Descargando el código fuente
El código fuente de este ejercicio se ha tomado desde Kaggle, sin embargo una copia local está guardada en nuestra carpeta oficial en Google Drive. Puedes descargar el repositorio y el dataset usando el siguiente botón:
Importando y configurando nuestras dependencias
Lo primero que haremos antes de manipular el dataset, es declarar las dependencias de nuestro proyecto de la siguiente manera:
/who-earned-the-most-in-sports-2020.ipynb
import numpy as np import pandas as pd from datetime import datetimeimport matplotlib.pyplot as plt%matplotlib inlineimport seaborn as snssns.set()from plotly.offline import init_notebook_mode, iplot import plotly.graph_objs as goimport plotly.offline as pyimport pycountryimport folium from folium import pluginsimport numpy as npfrom PIL import Imageimport matplotlib.ticker as tickerimport matplotlib.animation as animationfrom IPython.display import HTML# Graphics in retina format %config InlineBackend.figure_format = 'retina' # Increase the default plot size and set the color schemeplt.rcParams['figure.figsize'] = 8, 5# Disable warnings in Anacondaimport warningswarnings.filterwarnings('ignore')import os
Una vez que hemos importado y configurado dependencias como Matplotlib o Numpy, es momento de leer el dataset usando Pandas de la siguiente manera:
/who-earned-the-most-in-sports-2020.ipynb
df = pd.read_csv('/forbes-highest-paid-athletes-19902019/Forbes Richest Atheletes (Forbes Richest Athletes 1990-2020).csv')df.head()
Después vamos a convertir la columna "Year" a un tipo de datos comprensible por Python como datetime.
/who-earned-the-most-in-sports-2020.ipynb
# Creating a copy of the original dataframe- dfdf1 = df.copy()df1.drop('S.NO',axis=1,inplace=True)df1.info()
La última instrucción, df1.info() nos imprime la siguiente información:
Finalmente debemos convertir el texto en la columna "Sport" en mayúsculas o minúsculas.
/who-earned-the-most-in-sports-2020.ipynb
# Convert string to datetime64df1['Year'] = df1['Year'].apply(pd.to_datetime,format='%Y')#Set Date column as the index column.df1['year'] = pd.DatetimeIndex(df1['Year']).year df1.set_index('year', inplace=True)df1.drop('Year',axis=1,inplace=True)# Converting the sport column to uppercasedf1['Sport'] = df1['Sport'].str.upper()df1.head()# df is the original dataframe while df1 is a copy where the Date has been set as an index column
Luego de estas técnicas simples de pre-procesamiento, estamos listas/os para hacer filtros, colapsar columnas o agruparlas como veremos en la siguiente sección.
Lo primero que haremos será crear el código para preguntar por los atletas mejores pagados del último año disponible, es decir, del 2020. Para eso usamos lo siguiente:
/who-earned-the-most-in-sports-2020.ipynb
data_2020 = df1[df1.index == 2020]trace = go.Bar( x = data_2020["earnings ($ million)"], y = data_2020['Name'] , orientation='h', marker = dict(color='pink', line=dict(color='black',width=1)), )data = [trace]layout = go.Layout(barmode = "group",title="World's Highest-Paid Athletes in 2020",width=800, height=500, #xaxis= dict(title='No of times ranked higest'), yaxis=dict(autorange="reversed"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
Como lo podemos observar en la pieza de código, estamos utilizando la instancia de plotly.graph_objs para configurar la gráfica de barras, sus características y los datos que vamos a imprimir.
La gráfica que nos arroja Plotly se puede ver de la siguiente manera:
Podemos usar una de las características de configuración de Pandas, el método background_gradient para imprimir el resultado de una consulta en nuestro dataset como se puede ver en la siguiente pieza de código:
/who-earned-the-most-in-sports-2020.ipynb
# Top Paid Athlete for Each YearTop_paid_each_year = df1[df1['Current Rank'] == 1].sort_values(by='year',ascending=False)z = Top_paid_each_year[['Name','Sport','Nationality','earnings ($ million)']]z.style.background_gradient(cmap='Reds')
Pandas nos permite visualizar esta instrucción así:
Atletas con mayor ingreso y máximo número de apariciones en la lista Forbes
/who-earned-the-most-in-sports-2020.ipynb
counts_top = Top_paid_each_year['Name'].value_counts().to_frame()trace = go.Bar( y = counts_top.index, x = counts_top['Name'] , orientation='h', marker = dict(color='pink', line=dict(color='black',width=1)), )data = [trace]layout = go.Layout(barmode = "group",title='Athlete earning the most,maximum number of times',width=800, height=500, xaxis= dict(title='No of times ranked higest'), yaxis=dict(autorange="reversed"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
Y su correspondiente gráfica, utilizando los superpoderes de Plotly:
Podemos producir gráficas más sofisticadas utilizando las siguientes piezas de código:
/who-earned-the-most-in-sports-2020.ipynb
# Top Paid Athlete for Each Yeartotal_earnings = Top_paid_each_year.groupby('Name')['earnings ($ million)'].sum().to_frame().reset_index()top_ranks = Top_paid_each_year['Name'].value_counts().to_frame().reset_index()top_ranks.rename(columns={'index':'Name', 'Name':'Rank_counts'}, inplace=True)df_compare = total_earnings.merge(top_ranks, on='Name')
/who-earned-the-most-in-sports-2020.ipynb
#source: https://www.kaggle.com/kanncaa1/plotly-tutorial-for-beginners#Bar-Chartsimport plotly.graph_objs as gofrom plotly import toolstrace0 = go.Bar( y=df_compare['Name'], x=df_compare['Rank_counts'], marker=dict(color='rgba(171, 50, 96, 0.6)',line=dict(color='rgba(171, 50, 96, 1.0)',width=1)), name='Top Ranks', orientation='h',)trace1 = go.Scatter( y=df_compare['Name'], x=df_compare['earnings ($ million)'], mode='lines+markers', line=dict(color='rgb(63, 72, 204)'), name='income',)layout = dict( title='Income and Top Ranks', yaxis=dict(showticklabels=True,domain=[0, 0.85]), yaxis2=dict(showline=True,showticklabels=False,linecolor='rgba(102, 102, 102, 0.8)',linewidth=2,domain=[0, 0.85]), xaxis=dict(zeroline=False,showline=False,showticklabels=True,showgrid=True,domain=[0, 0.42]), xaxis2=dict(zeroline=False,showline=False,showticklabels=False,showgrid=True,domain=[0.47, 1],side='top',dtick=25), legend=dict(x=0.029,y=1.038,font=dict(size=10) ), margin=dict(l=200, r=20,t=70,b=70), paper_bgcolor='rgb(248, 248, 255)', plot_bgcolor='rgb(248, 248, 255)',)annotations = []y_s = df_compare['Rank_counts']y_nw = np.rint(df_compare['earnings ($ million)'])# Adding labelsfor ydn, yd, xd in zip(y_nw, y_s, df_compare['Name']): # labeling the scatter savings annotations.append(dict(xref='x2', yref='y2', y=xd, x=ydn-1,text='{:,}'.format(ydn),font=dict(family='Arial', size=12,color='rgb(63, 72, 204)'),showarrow=False)) # labeling the bar net worth annotations.append(dict(xref='x1', yref='y1', y=xd, x=yd+1,text=str(yd),font=dict(family='Arial', size=12,color='rgb(171, 50, 96)'),showarrow=False))layout['annotations'] = annotations# Creating two subplotsfig = tools.make_subplots(rows=1, cols=2, specs=[[{}, {}]], shared_xaxes=True, shared_yaxes=False, vertical_spacing=0.001)fig.append_trace(trace0, 1, 1)fig.append_trace(trace1, 1, 2)fig['layout'].update(layout)fig.show()
Produciendo las siguientes figuras:
Pais que produce los máximos generadores de ingreso en deporte.
/who-earned-the-most-in-sports-2020.ipynb
counts_top = Top_paid_each_year['Nationality'].value_counts().to_frame()trace = go.Bar( x = counts_top.index, y = counts_top['Nationality'] , orientation='v', marker = dict(color='pink', line=dict(color='black',width=1)), )data = [trace]layout = go.Layout(barmode = "group",title='Country which produces the maximum earners in Sports',width=800, height=500, xaxis= dict(title='No of times ranked higest'), #yaxis=dict(autorange="reversed"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
¿Cuánto ingresan los mejores atletas cada año?
/who-earned-the-most-in-sports-2020.ipynb
trace = go.Scatter( x = Top_paid_each_year.index, y = Top_paid_each_year['earnings ($ million)'] , orientation='v', marker = dict(color='red', line=dict(color='royalblue',width=2)), )data = [trace]layout = go.Layout(title='How much did the Top Paid Athlete for Each Year, earn? ',width=800, height=500, xaxis= dict(title='Years'), yaxis=dict(title="Earning in US Dollars(million)"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
¿Cuánto ingresan los mejores atletas cada año?
/who-earned-the-most-in-sports-2020.ipynb
df['Sport'] = df['Sport'].str.upper() # Converting the text to uppercasemax_sport = df['Sport'].value_counts().to_frame()trace = go.Bar( y = max_sport.index, x = max_sport['Sport'] , orientation='h', marker = dict(color='pink', line=dict(color='black',width=1)), )data = [trace]layout = go.Layout(barmode = "group",title='Sport which dominates in earnings',width=800, height=500, xaxis= dict(title='No of times ranked highest'), yaxis=dict(autorange="reversed"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
Pais que más ingresos tiene en deportes
/who-earned-the-most-in-sports-2020.ipynb
max_sport = df['Nationality'].value_counts().to_frame()trace = go.Bar( y = max_sport.index, x = max_sport['Nationality'] , orientation='h', marker = dict(color='pink', line=dict(color='black',width=1)), )data = [trace]layout = go.Layout(barmode = "group",title='Country which dominates in Sports earningss',width=800, height=500, xaxis= dict(title='No of times ranked highest'), yaxis=dict(autorange="reversed"), showlegend=False)fig = go.Figure(data = data, layout = layout)iplot(fig)
Atletas que aparecen más frecuentemente en la lista
/who-earned-the-most-in-sports-2020.ipynb
s = df['Name'].value_counts().to_frame()[:5]s.style.background_gradient(cmap='Reds')
Monica Seles es la única mujer que ha aparecido en la lista de los deportistas 10 mejores pagados hasta ahora, y lo hizo en 1992.
/who-earned-the-most-in-sports-2020.ipynb
# People who have appeared once on the list.names = df['Name'].value_counts().to_frame()names[names['Name']==1].index# On scanning the list, we find the name of a sole women athlete- monica selesmonica = df[df['Name'] == 'Monica Seles']monica.style.set_properties(**{'background-color': 'pink', 'color': 'black', 'border-color': 'black'})
/who-earned-the-most-in-sports-2020.ipynb
top_earners_alltime = pd.pivot_table(df, index='Name',values="earnings ($ million)", aggfunc='sum')top3_earners_all = top_earners_alltime.sort_values(by="earnings ($ million)",ascending=False)[:3]top3_earners_all.style.background_gradient(cmap='Reds')
Analizando los ingresos de Tiger Woods a lo largo de los años
Vamos a crear un método para únicamente pasarle parámetros y hacer más eficiente la escritura y lectura del código, acá vemos la definición del método earnings_plot.
/who-earned-the-most-in-sports-2020.ipynb
def earnings_plot(dataframe,athlete,image_path,opacity): """ function that creates a plotly line chart with image of the athlete in the background """ athlete_df = df1[df1['Name'] == athlete] trace = go.Scatter( x = athlete_df.index, y = athlete_df['earnings ($ million)'] , orientation='v', marker = dict(color='red', line=dict(color='red',width=6)), ) data = [trace] layout= go.Layout(title= f'{athlete}' +"'s earnings over the Years", xaxis=dict(title='Year'), yaxis=dict(title="Earnings in US$ (millions)"), images= [dict( source=Image.open(image_path), xref= "paper", yref= "paper", x= 0.5, y= 0.5, sizex= 1, sizey= 1, sizing= "stretch", opacity= opacity, xanchor= "center", yanchor="middle", layer= "below")]) fig = go.Figure(data = data, layout = layout) iplot(fig)
/who-earned-the-most-in-sports-2020.ipynb
image_path = "/kaggle/input/profile-pics/tiger_woods.jpeg"earnings_plot(df1,'Tiger Woods',image_path,opacity=0.3)
Analizando los ingresos de Floyd Mayweather a lo largo de los años
/who-earned-the-most-in-sports-2020.ipynb
image_path = "/kaggle/input/profile-pics/Floyd.jpeg"earnings_plot(df1,'Floyd Mayweather',image_path,opacity=0.2)
Analizando los ingresos de Lebron James a lo largo de los años
/who-earned-the-most-in-sports-2020.ipynb
image_path = "/kaggle/input/profile-pics/LeBron.jpeg"earnings_plot(df1,'LeBron James',image_path,opacity=0.2)
- Deportistas cuyo ranking ha subido al menos dos lugares entre 2010 y 2020.
- Atleta con el menor número de apariciones y mayores ganancias.
- Deporte y país con mayor número de atletas no rankeados que entraron en la lista de atletas mejor pagados.
- País con mayor número de deportes con atletas en el dataset.
- ¿Cuántos atletas por deporte tiene cada país?
- Ganancia mínima y máxima (dentro del dataset) por deporte y por país.
- Atleta con mayores ganancias por deporte por década
- Ganancia total por cada deporte por cada año.
- Crea un tablero en Power BI que represente los aspectos más importantes del dataset, a tu gusto.
¡Felicitaciones! Has exitosamente construido tu primer análisis de datos utilizando Python.
Aprendiste algunas técnicas estadísticas para colapsar, filtrar y agrupar distintas propiedades del dataset para responder preguntas relevantes, aprendimos a utilizar Matplotlib y Plotly.
Ahora conoces los pasos más significativos para analizar cualquier dataset que se te ponga en frente.
Siguientes pasos
Puedes ver algunos otros recursos que hemos encontrado para ti acá:
- Penguin dataset: El nuevo Iris
- DLimpieza de datos, procesamiento de datos y análisis.
- IT Salary survey 2018-2020
Lecturas futuras
Documentación de referencia
FAQs
¿Cuál es el deporte mejor pagado en el mundo? ›
Fútbol: El deporte mejor pagado del mundo
El fútbol es el deporte mejor pagado del mundo en estos momentos. La Premier League y la Liga pagan más que la NBA y la NHL.
El baloncesto es el deporte con los mejores sueldos del mundo, los basquetbolistas de la NBA reciben cifras estratosféricas y también obtienen sueldos en forma de sponsors, más que en cualquier otro deporte. El salario medio de un basquetbolista es de $5 millones de dólares.
¿Qué deportista gana más dinero 2022? ›Según este último ranking, el astro del fútbol argentino Lionel Messi, del París Saint-Germain, ha sido el deportista con mayores ingresos en los últimos doce meses, con unas ganancias estimadas de 130 millones de dólares entre el 1 de mayo de 2021 y el 1 de mayo de 2022, sin tener en cuenta impuestos.
¿Cuál es el rey de los deportes? ›En Latinoamérica, el beisbol es conocido también con el calificativo de “rey de los deportes”. La leyenda cuenta que fue el físico Albert Einstein quien llamó así al beisbol cuando descubrió su complejidad.
¿Cuál es el deporte más fácil del mundo? ›1. - Natación. Nadar por la playa o por la piscina ayuda a refrescar el organismo y bajar la temperatura del cuerpo. Además, es uno de los deportes más completos con el que se ejercitan todos los músculos, como los de los brazos, la espalda y las piernas.
¿Cuál es el deporte más difícil del mundo? ›El boxeo. El boxeo ocupa el primer lugar como el deporte más exigente.
¿Cuál es el deporte más completo que existe? ›Natación: el deporte más completo para todos
La natación ayuda a desarrollar un correcto desarrollo de los músculos, fortaleciéndolos sin impacto, ya que estamos flotando en el agua, a la vez que les damos dinamismo y potenciamos su flexibilidad.
273,5 mil millones de dólares. Elon Musk (1971, Sudáfrica) es la persona más rica del mundo en la actualidad.
¿Quién tiene más plata Messi o Federer? ›Roger Federer lidera el camino esta vez con US$ 90 millones , lo que representa casi la totalidad de su total de US$ 90,7 millones.
¿Quién tiene más dinero Lebron James o Messi? ›El astro argentino Lionel Messi, del París Saint-Germain, encabeza por segunda ocasión la lista de los deportistas mejor pagados del mundo con unas ganancias estimadas de 130 millones de dólares (124,8 millones de euros) en el último año, tal y como ha publicado la revista Forbes.
¿Cuál es el evento deportivo más visto en el mundo? ›
Eventos deportivos según su valor a nivel mundial en 2019
En ese año, el evento deportivo líder fue la Super Bowl, con un valor de 780 millones de dólares estadounidenses.
El atletismo es multidisciplinar, considerado el deporte madre o rey de los deportes. Nos acompaña desde siempre, porque las habilidades básicas que conjuga como correr, saltar y lanzar son las más elementales desde los primeros seres humanos.
¿Cuál es el mejor deporte para practicar? ›Natación
Se lo conoce como el deporte más completo que existe porque gracias a la natación podemos trabajar la totalidad de los músculos del cuerpo. Y no solo eso, ya que además, cuando nadamos, mejoramos los sistemas cardiovascular y respiratorio.
Baloncesto: La facilidad de hacer puntos entre los competidores aumenta las probabilidades de acertar ciertas apuestas. Si dominas el deporte y quieres asegurar tu dinero, apostar en baloncesto es una buena idea. Boxeo: Los deportes de combate son una excelente opción para apostar sin asumir tanto riesgo.
¿Cuál es el mejor deporte? ›Natación
Se lo conoce como el deporte más completo que existe porque gracias a la natación podemos trabajar la totalidad de los músculos del cuerpo. Y no solo eso, ya que además, cuando nadamos, mejoramos los sistemas cardiovascular y respiratorio.
Natación: el deporte más completo para todos
La natación ayuda a desarrollar un correcto desarrollo de los músculos, fortaleciéndolos sin impacto, ya que estamos flotando en el agua, a la vez que les damos dinamismo y potenciamos su flexibilidad.
El boxeo. El boxeo ocupa el primer lugar como el deporte más exigente.
¿Cómo ganar siempre en las apuestas de fútbol? ›- Disponer de toda la información.
- Cuidado con las apuestas combinadas.
- Especialízate en un mercado.
- Apuesta con la cabeza, no con el corazón.
- Busca apuestas seguras.
- Maneja el stake y el bank.
- Evita el overbetting.
- Cuidado con las cuotas bajas.
- A más apuestas, más difícil que ganes. ...
- Apostar a lo que conoces. ...
- Elige tu apuesta mezclando deportes. ...
- ¿Qué es mejor y qué es peor en una apuesta combinada? ...
- Conocer el evento y sus factores es fundamental para una buena apuesta. ...
- Ojo a las cuotas demasiado bajas.
Retos extremos en casa
Quitarse las cuatro prendas de ropa que elija el afectado. Quedarse en ropa interior delante de todos durante x minutos. Meterse en el hueco más pequeño del armario de la habitación durante una ronda. Llamar por teléfono a un ser querido y hacerle una falsa confesión acordada por el grupo.
¿Qué es mejor correr o nadar? ›
"Se puede decir que la natación es un ejercicio más completo que correr ya que trabajan más músculos del cuerpo", concluyó Rodríguez, "además que se complementa a la perfección con la rutina de la vida diaria en la que se trabaja más el tren inferior mientras se camina".
¿Quién fue el que creó el fútbol? ›¿QUIÉN, CUÁNDO Y DÓNDE SE INVENTÓ EL FUTBOL? Ebenezer Morley es reconocido como el padre del futbol, aunque no como el creador del mismo. Morley fue el fundador del Barnes Footbal Club y fue el encargado de reunir a los representantes de 12 clubes, gracias a una letra que escribió en el periodico, Bell´s Life.
¿Qué deporte te marca el abdomen? ›Disciplinas como el pilates, yoga, taichí o bodybalance son algunas de las prácticas de baja intensidad con las que mejor conseguirás trabajar tu zona abdominal. Al realizar las diferentes posturas el cuerpo se mantiene en tensión y se trabajan los distintos músculos que integran la cavidad abdominal.
¿Qué pasa si después de hacer ejercicio me voy a dormir? ›También es importante mencionar los beneficios que nos trae el sueño después de hacer ejercicio en relación a la salud mental. Varios estudios nos han mostrado que dormir después de ejercitarse ayuda al proceso de conexión celular, lo cual es de gran utilidad para prevenir enfermedades como la demencia.
¿Qué es más duro el fútbol o el ciclismo? ›Existen evidencias científicas que, durante la competición, el fútbol profesional es más duro para el sistema músculo-esquelético que el ciclismo profesional.
¿Cuál es el deporte más barato del mundo? ›Dejando el agua, hay muchos deportes muy saludables y sin que tengan un coste elevado, quizá el deporte más barato de todos, que puede practicarse sobre cualquier superficie y sin necesidad de contar con equipación, simplemente unas zapatillas cómodas, es caminar, cuantos más rápido sea el paso, más calorías quemarás.
¿Qué cansa más el fútbol o basket? ›El baloncesto cansa mucho más, porque es más vibrante, apenas hay descansos entre un ataque y una defensa.
¿Cuál es el deporte más completo según la NASA? ›AL TENIS DE MESA COMO EL DEPORTE MÁS.