# RESOLUCIÓN GRÁFICA
sns.barplot(y = df_cant_articulos_ord["quantity"], x=df_cant_articulos_ord.index)
plt.xticks(rotation=90)
plt.xlabel("Articulo")
plt.ylabel("Unidades vendidas")
plt.show()
# RESOLUCIÓN ANALÍTICA
df_monto_articulo_ord = my_df.groupby('article_name').sum().sort_values('total_amount', ascending=False).head(5)
# RESOLUCIÓN GRÁFICA
# plt.pie(x=df_monto_articulo_ord['total_amount'], labels=df_monto_articulo_ord.index)
# plt.show()
plt.barh(df_monto_articulo_ord.index, df_monto_articulo_ord['total_amount'] , height=1.0)
plt.ylabel("Articulo")
plt.xlabel("Ventas totales (USD)")
plt.show()
# RESOLUCIÓN ANALÍTICA
df_monto_vendedor_ord = my_df.groupby('seller_name').sum().sort_values('total_amount', ascending=False)
mejor_vendedor = df_monto_vendedor_ord[['quantity']+['total_amount']].head(1).index[0]
print(f"El mejor vendedor del mes es: {mejor_vendedor}")
# RESOLUCIÓN GRÁFICA
plt.bar(df_monto_vendedor_ord.index, df_monto_vendedor_ord['total_amount'])
plt.xticks(rotation=45, ha="right")
plt.show()
# RESOLUCIÓN ANALÍTICA
df_ventas_semanales = my_df.groupby(by="week").sum()
print(df_ventas_semanales)
# RESOLUCIÓN GRÁFICA
from matplotlib.ticker import StrMethodFormatter, FormatStrFormatter, MultipleLocator, ScalarFormatter
plt.bar(df_ventas_semanales.index,df_ventas_semanales.total_amount)
plt.title('Total de ventas por semana')
plt.grid(True)
plt.ylabel("Dolares")
plt.xlabel("Semanas")
plt.legend(labels=['Sales'])
plt.tick_params(axis='x', labelrotation=45)
semanas = list(set(my_df["week"]))
plt.gca().set_xticks(semanas)
plt.gca().yaxis.set_major_formatter(ScalarFormatter())
df_seller_montopais = my_df.groupby(['seller_name','country_name']).sum().sort_values('total_amount', ascending=False)
plt.show()
# RESOLUCIÓN
df_suma_semanas = my_df.groupby(["country_name",'week']).sum().reset_index() #Dataframe que tiene agrupado por pais y por semana (62 filas, 4 por pais)
#print(a)
indices_maximos = df_suma_semanas.groupby("country_name").agg(index_of_max_amount = ('total_amount', lambda data: data.idxmax())) # Esta es la serie que tiene los indices (numero de fila) que contienen los maximos de cada país
df_suma_semanas_filtrado = df_suma_semanas.iloc[indices_maximos.index_of_max_amount] # Filtro el dataframe que agrupe al principio, trayendo solo los que coinciden con los indices de aquellos q son maximos, es decir, de las 62 filas le saco 3 filas por pais, dodne vuelve a dar 16 registros
df_final = df_suma_semanas_filtrado[["country_name","week","total_amount"]] # Elimino la columnas quantity para mas claridad
df_final.rename(columns={'country_name':'Pais','week':'Semana','total_amount':'Ventas Totales'})
# RESOLUCIÓN
# Obtener un dataframe con ordenes solo de la semana 4
ordenes_semana_4 = my_df[my_df['week']==4]
ordenes_semana_4
# ordenar por la cantidad de productos
# limitar a los primero 5
print(ordenes_semana_4.sort_values('quantity', ascending=False).head(5)[['article_name','quantity']])
productos = ordenes_semana_4.sort_values('quantity', ascending=False).head(5)['article_name'].values
leyenda = f""" Los 5 productos que tienen mas salida llegando a fin de mes son: """
print(leyenda)
for indice,producto in enumerate(productos):
print( f"""|{indice}->| {producto} """)