#imports
import numpy as np #Funciones matemáticas + array + matriz
import pandas as pd #Series y dataframes
import openpyxl
import sqlite3 as sql3 #Base de datos liviana
import matplotlib.pyplot as plt #Gráficos
import seaborn as sns #Gráficos
#RESOLUCIÓN ANALÍTICA
#Nuevo df con agrupado por nombre del artículo
my_df2 = my_df.groupby('article_name').sum()
#Ordenar el df por cantidad
por_cantidad = my_df2.sort_values('quantity', ascending=False)
print(por_cantidad['quantity'].head(1))
#El artículo más vendido es HDD con 413 ventas
#RESOLUCIÓN GRÁFICA
#Seaborn Barplot #Gráfico de barras
#Barras ordenadas de mayor venta a menor
#El primero es el más vendido
sns.barplot(x=my_df2.index, y=my_df2['quantity'], data = my_df2, order=my_df2.sort_values('quantity', ascending=False).index).set(title='Ventas por articulo')
plt.xlabel('Producto')
plt.ylabel('Cantidad vendida')
plt.xticks(rotation=90)
plt.show()
#my_df2_sort = my_df2.sort_values('quantity', ascending=False)
#my_df2_sort['quantity'].plot(kind='barh', color= 'green', alpha= 0.8)
plt.figure(figsize=(5,8))
#Barras horizontales
#uso df del agrupado por cantidad
plt.barh(por_cantidad.index, por_cantidad['quantity'],color= 'green', alpha= 0.8)
plt.xlabel('Cantidad vendida')
plt.ylabel('Producto')
plt.title('Unidades vendidas por producto')
plt.show()
#RESOLUCIÓN ANALÍTICA
#Nuevo df a partir de la copia inicial
#Agrupamiento por nombre del artículo y suma
my_df2 = my_df.groupby('article_name').sum()
#nuevo df por orden de total de ventas, de mayor a menor
mas_ingresos = my_df2.sort_values('total_amount', ascending=False).head()
print(mas_ingresos['total_amount'])
#Devuelve el número del artículo y el total de sus ventas
# RESOLUCIÓN GRÁFICA
# OJO: Solo graficamos los 5 primeros productos, si ponemos el porcentaje de cada uno en el grafico,
# no sería el numero real.
plt.pie(x=mas_ingresos['total_amount'], labels=mas_ingresos.index)
plt.show()
#RESOLUCIÓN ANALÍTICA
#Nuevo df por agrupamiento por el vendedor
#Ordenados por el total de ventas
df3 = my_df.groupby('seller_name').sum().sort_values('total_amount', ascending = False)
print(df3[['quantity']+['total_amount']].head(1))
#El mejor vendedor es el número 14
# RESOLUCIÓN GRÁFICA
#Gráfico de barras, por index del df3 y el total de ventas
plt.bar(df3.index,df3['total_amount'])
plt.xticks(rotation=75)
plt.show()
#RESOLUCIÓN ANALÍTICA
#Nuevo df agrupado por semana
df4 = my_df.groupby('week').sum()
print(df4)
#Diferencias en la semana 4(total_amount)
#RESOLUCIÓN GRÁFICA
#Gráfico de barras
plt.bar(df4.index,df4['total_amount'])
plt.show()
#RESOLUCIÓN ANALÍTICA
#Nuevo df a partir del artículo en cuestión
df5 = my_df[my_df['article_name'] == "Wi-Fi Card"]
lista = [] #Lista vacía para guardar los nombres de los vendedores
#Recorrer set(valores únicos) de los vendedores
#si no vendieron la tarjeta, añadir a la lista
for vendedor in set(my_df['seller_name']):
if vendedor not in set(df5['seller_name']):
lista.append(vendedor)
#Devolver nombres que no vendieron
for x in lista:
print(x)
print("Necesitan reforzar sus estrategias de venta con la Wi-Fi Card")
#RESOLUCIÓN ANALÍTICA
#Creo nuevo df a partir de la copia del df_orders
#Agrupamiento por nombre del país
df6 = my_df.groupby('country_name').sum()
#Nuevo df ordenado por total de ventas de mayor a menor
mas_compras = df6.sort_values('total_amount', ascending=False).head()
mas_compras['total_amount']
#RESOLUCIÓN GRÁFICA
#Seaborn #Gráfico de
#Setear paleta de colores para que se vea gradación
sequential_colors = sns.color_palette('Greens_r', len(df5.index))
sns.barplot(x = df6.index, y = df6['total_amount'], data = df6,
order = df6.sort_values('total_amount', ascending=False).index, palette=sequential_colors) #Orden descendente del gráfico
plt.xticks(rotation = 90) #Orientación de las etiquetas en el eje x
plt.title("Ventas por país")
plt.xlabel("País")
plt.ylabel("Total de Ventas")
plt.show()
#RESOLUCIÓN ANALÍTICA
#Nuevo df cuando el país es Brazil
df7 = my_df[my_df['country_name'] == 'Brazil']
#A partir del anterior, ordenar vendedores por total de ventas
vendedores_pais = df7.groupby('seller_name').sum().sort_values('total_amount', ascending=False)
vendedores_pais.head()
#RESOLUCIÓN GRÁFICA
plt.bar(vendedores_pais.index,vendedores_pais['total_amount'],
color = ['green' if x in vendedores_pais.index[0:5] else 'blue' for x in vendedores_pais.index]) #Color verde para los mejores 5
plt.xticks(rotation = 90)
plt.title("Desempeño vendedores del país que más compra")
plt.xlabel("Vendedores")
plt.ylabel("Total de Ventas")
plt.show()