Importación de paquetes

In [1]:
import pandas as pd
from datetime import datetime
import matplotlib. pyplot as plt
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:95% !important; }</style>"))
%config InlineBackend.figure_format = 'retina'
import seaborn as sns
import plotly.express as px

Carga de datos

In [3]:
#df = pd.read_excel('./data.xlsx', sep=';')
df = pd.read_csv('./data.csv', sep=';')
df.fillna(0, inplace=True)
#df.tail()

Análisis de los datos

In [4]:
df_jugador_sum = df.groupby('Jugador').sum()
df_jugador_ventas = df_jugador_sum.sort_values('Ventas', ascending=False)['Ventas']
df_jugador_compras = df_jugador_sum.sort_values('Compras', ascending=False)['Compras']
df_jugador_ganado = df_jugador_sum.sort_values('Ganado', ascending=False)['Ganado']
df_jugador_pagado = df_jugador_sum.sort_values('Pagado', ascending=False)['Pagado']

Jornadas

In [7]:
df_jornada = df[pd.notna(df['Jornada'])].groupby(['Jornada', 'Jugador'], as_index=False).sum()[['Jornada', 'Jugador', 'Puntos', 'Ganado']]
df_jornada = df_jornada[df_jornada['Puntos']>0].sort_values(['Jornada', 'Puntos'], ascending=False)
#df_jornada.head()
In [9]:
plt.figure(figsize=(12,6))
splot = sns.barplot(x='Jornada', y='Puntos', hue='Jugador', data=df_jornada)
plt.title('Puntos por jornada')
plt.ylabel('Puntos')

for p in splot.patches:
    splot.annotate(p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')
    
plt.tight_layout()
plt.show()

Ranking

In [11]:
df_jornada.groupby('Jugador')[['Puntos', 'Ganado']].sum().sort_values('Puntos', ascending=False)['Puntos']
Out[11]:
Jugador
Manuel       254.0
Jesús        216.0
Cristian     201.0
Fran         200.0
Alejandro    168.0
Name: Puntos, dtype: float64

Compras

In [12]:
df_fecha_jugador = df.groupby(['Fecha', 'Jugador']).sum()
df_fecha_jugador_compras = df_fecha_jugador[df_fecha_jugador['Compras'] > 0]['Compras']
#df_fecha_jugador_compras.tail()
In [18]:
plt.figure(figsize=(20,10))
splot = sns.barplot(x='Fecha', y='Compras', hue='Jugador', 
            data=df_fecha_jugador_compras.reset_index(), 
            ci=None)

for p in splot.patches:
    splot.annotate("{:,.2f}".format(p.get_height())+'€', (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points')

plt.legend(loc='upper center',bbox_to_anchor=(1.05, 1))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
In [19]:
fig = px.bar(df_fecha_jugador_compras.reset_index(), 
             x='Fecha', y='Compras', color='Jugador', text='Compras',title="Compras realizadas")
fig.update_traces(texttemplate='%{text:.4s}€', textposition='outside')
fig.update_layout()
fig.show()