# A veces necesitamos instalar nuevas librerías en nuestros proyectos
!pip install openpyxl==3.0.10
Requirement already satisfied: openpyxl==3.0.10 in /root/venv/lib/python3.9/site-packages (3.0.10)
Requirement already satisfied: et-xmlfile in /root/venv/lib/python3.9/site-packages (from openpyxl==3.0.10) (1.1.0)
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/root/venv/bin/python -m pip install --upgrade pip' command.
# Imports
import numpy as np
import pandas as pd
import sqlite3 as sql3
import matplotlib.pyplot as plt
import seaborn as sns
import openpyxl #Para levantar excel de otros paquetes (no office)
# Exploración del df de artículos
print('Muestra de datos')
print(df_articles.head())
print('\nForma del dataframe')
print(df_articles.shape)
print('\nBuscar valores nulos')
print(df_articles.isnull().sum())
print('\nFormato de los datos del dataframe')
print(df_articles.dtypes)
Muestra de datos
article_id article_name unit_price
0 20015 Smartphone 525.00
1 20016 Full Pc 2127.81
2 20017 Monitor 230.00
3 20018 Tablet 130.00
4 20019 Desk 130.10
Forma del dataframe
(31, 3)
Buscar valores nulos
article_id 0
article_name 0
unit_price 0
dtype: int64
Formato de los datos del dataframe
article_id int64
article_name object
unit_price object
dtype: object
# Cambiar a float los precios unitarios
df_articles['unit_price'] = df_articles['unit_price'].astype(float)
print(df_articles.dtypes)
article_id int64
article_name object
unit_price float64
dtype: object
# RESOLUCIÓN GRÁFICA
sns.barplot(x=my_df2.index, y=my_df2['quantity'], data=my_df2, order=my_df2.sort_values('quantity', ascending=False).index).set(title='Cantidad de ventas por articulo')
plt.xlabel('Articulos')
plt.ylabel('Cantidad')
plt.xticks(rotation=90)
plt.show()
# RESOLUCIÓN GRÁFICA
plt.pie(x=mas_ingresos['total_amount'], labels=mas_ingresos.index)
plt.title('Articulos con mas ingresos')
plt.show()
# RESOLUCIÓN GRÁFICA
plt.bar(my_df4.index, my_df4['total_amount'])
plt.title('Monto Total de ventas por vendedor')
plt.xlabel('Vendedores')
plt.ylabel('Monto Total')
plt.xticks(rotation=75)
plt.show()
# RESOLUCIÓN GRÁFICA
plt.bar(my_df5.index, my_df5['total_amount'])
plt.title('Monto Total de ventas por semana')
plt.xlabel('Semana')
plt.ylabel('Monto Total')
plt.xticks([1,2,3,4])
plt.show()
# RESOLUCIÓN
my_df6 = my_df.groupby('country_name').sum().sort_values('total_amount', ascending=False)
print(my_df6[['quantity']+['total_amount']])
plt.bar(my_df6.index, my_df6['total_amount'])
plt.title('Monto Total de ventas por pais')
plt.xlabel('Paises')
plt.ylabel('Monto Total')
plt.xticks(rotation=75)
plt.show()
quantity total_amount
country_name
Brazil 2515 441271.85
Argentina 947 205832.78
Colombia 881 177514.29
Peru 1027 161421.12
Mexico 846 138619.99
Venezuela 320 77684.52
El Salvador 111 57391.26
Guatemala 202 52579.25
Honduras 303 36763.56
Costa Rica 145 34606.50
Chile 231 24660.98
Bolivia 181 22682.80
Uruguay 92 17843.09
Ecuador 129 17475.30
Paraguay 123 8195.12
Puerto Rico 12 1265.43
# RESOLUCIÓN
my_df7 = my_df.groupby(['article_name', 'country_name']).sum().sort_values('quantity', ascending=False).head(10)
print(my_df7[['quantity']+['total_amount']])
sns.relplot(x='country_name', y='article_name', data=my_df7, hue='quantity')
plt.title('Articulos que mas de venden por pais')
plt.xlabel('Paises')
plt.ylabel('Productos')
plt.xticks(rotation=75)
plt.show()
quantity total_amount
article_name country_name
Tablet Brazil 156 20280.00
Mouse Peru 125 3787.50
HDD Brazil 119 6499.78
SDD Brazil 117 2574.00
Chair Brazil 112 37591.68
Pci Express Port Brazil 105 1062.60
CPU Argentina 104 14520.48
Heatsink Brazil 103 1030.00
Power Supply Brazil 103 4526.85
Motherboard Brazil 101 13976.38
# RESOLUCIÓN
my_df8 = my_df.groupby(['seller_name', 'country_name']).sum().sort_values('total_amount', ascending=False).head(5)
print(my_df8[['quantity']+['total_amount']])
sns.relplot(x='country_name', y='seller_name', data=my_df8, hue='total_amount')
plt.title('Vendedores que mas facturan por pais')
plt.xlabel('Paises')
plt.ylabel('Vendedores')
plt.xticks(rotation=75)
plt.show()
quantity total_amount
seller_name country_name
Daisie Slograve Brazil 226 65283.28
Aveline Swanwick Brazil 227 58771.48
Arnold Kilkenny Brazil 184 47243.54
Brockie Patience Peru 49 46089.88
Janel O'Curran Argentina 91 34971.47