El artículo mas vendido es: HDD del cual se vendieron 413 unidades
# 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}")
El mejor vendedor del mes es: Janel O'Curran
# 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)
quantity seller_id total_amount unit_price
week
1 2449 2407 507458.81 66048.67
2 2444 2516 415364.44 48790.30
3 2114 2052 329140.03 45563.76
4 1058 984 223844.56 24978.02
# 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'})
Paisobject
Argentina6.3%
Bolivia6.3%
14 others87.5%
Semanaint64
1 - 4
1
Argentina
2
4
Bolivia
1
8
Brazil
1
13
Chile
2
18
Colombia
3
21
Costa Rica
2
25
Ecuador
2
30
El Salvador
3
35
Guatemala
4
36
Honduras
1
40
Mexico
1
45
Paraguay
2
49
Peru
2
52
Puerto Rico
1
55
Uruguay
2
58
Venezuela
1
# 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} """)
article_name quantity
905 Webcam 15
908 CPU 15
996 Heatsink 15
958 Range Extender 15
885 Chair 15
Los 5 productos que tienen mas salida llegando a fin de mes son:
|0->| Webcam
|1->| CPU
|2->| Heatsink
|3->| Range Extender
|4->| Chair