Análisis de los 25 retailers más grandes de Estados Unidos
# Importar librerías aquí
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Importar datos aquí
df = pd.read_csv('largest_us_retailers.csv')
df.info()
df
I. Preguntas del negocio
# filtrar de los datos a la compañia dominante en ventas
datos_menos_primero = df.sort_values('Sales', ascending=False)[1:]
# obtener la media de la columna de ventas menos la compañia dominante
promedio_ventas_menos_primero = datos_menos_primero['Sales'].mean()
print('Promedio de ventas: ' + str(round(promedio_ventas_menos_primero, 2)) + ' millones de USD')
desviasion_estandar = datos_menos_primero['Sales'].std()
print('Desviación estándar de las ventas: ' + str(round(desviasion_estandar, 2)) + ' millones de USD')
Q3 = datos_menos_primero['Sales'].quantile(q = 0.75)
Q2 = datos_menos_primero['Sales'].quantile(q = 0.25)
iqr = Q3 - Q2
print('El 50 % de las compañias vende entre ' + str(Q2) + ' y ' + str(Q3) + ' millones de USD')
plt.figure(figsize=(15,9))
sns.barplot(y = datos_menos_primero['Sales'], ci = 'sd')
plt.show()
plt.figure(figsize=(15,9))
plt.bar(datos_menos_primero['Company'], datos_menos_primero['Sales'])
plt.xticks(rotation='vertical')
plt.grid()
plt.axhline(promedio_ventas_menos_primero, color ="y", linestyle = '--', linewidth = 2)
plt.show()
plt.figure(figsize=(15,9))
sns.boxplot(data = datos_menos_primero, x = 'Sales')
plt.grid()
plt.show()
company_q2_max = datos_menos_primero[datos_menos_primero['Sales'] >= Q2]
suma_sales_q2_max = company_q2_max['Sales'].sum()
print('Las ventas del 75% de las mejores compañías en ventas, suman en total: ' + str(suma_sales_q2_max) + ' millones de USD')
total_sales = df['Sales'].sum()
company_min_q2 = datos_menos_primero[datos_menos_primero['Sales'] <= Q2]
suma_sales_min_q2 = company_min_q2['Sales'].sum()
walmart_sales = int(df[df['Company'] == 'Walmart US']['Sales'])
labels = 'Walmart US', '25 % de Compañias', '75 % de Compañias'
sizes = [walmart_sales, suma_sales_min_q2, suma_sales_q2_max]
plt.figure(figsize=(15,9))
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal') # La misma relación de aspecto garantiza que el pastel se dibuje como un círculo.
plt.title('Volumen de ventas totales')
plt.show()
Q2_tiendas = df['Stores'].quantile(0.25)
Q3_tiendas = df['Stores'].quantile(0.75)
iqr = Q3 - Q2
print('El 50% de las compañias tiene entre ' + str(int(Q2_tiendas)) + ' y ' + str(int(Q3_tiendas)) + ' tiendas')
plt.figure(figsize=(15,9))
sns.boxplot(data = df, x = 'Stores')
plt.show()
bins = range(0,16000,1000)
plt.figure(figsize=(15,9))
plt.hist(df['Stores'], bins)
plt.grid()
plt.title('Compañias vs tiendas')
plt.ylabel('Cantidad de compañias')
plt.xlabel('Cantidad de tiendas')
plt.show()
plt.figure(figsize=(15,9))
sns.scatterplot(data=datos_menos_primero, x='Sales', y='Stores')
plt.title('Cantidad de tiendas vs ventas')
plt.grid()
plt.show()
Q3 = datos_menos_primero['Sales'].quantile(q = 0.75)
Q2 = datos_menos_primero['Sales'].quantile(q = 0.25)
iqr = Q3 - Q2
print('Excluyendo a Walmar US el rango intercuartil (IQR) entre las ventas es de ' + str(iqr) + ' millones de USD')
min = datos_menos_primero['Sales'].quantile(q = 0.0)
max = datos_menos_primero['Sales'].quantile(q = 1.0)
rango = max - min
print('Excluyendo a Walmar US el rango entre las ventas es de ' + str(rango) + ' millones de USD')
plt.figure(figsize=(15,9))
sns.boxplot(data=datos_menos_primero, x = 'Sales')
plt.show()
orden_tiendas = df.sort_values('Stores', ascending=0)
primeras_tiendas = orden_tiendas[0:5]
print('Primeras 5 compañias con mas tiendas:')
print(primeras_tiendas['Company'])
orden_ventas = df.sort_values('Sales', ascending = 0)
primeras_ventas = orden_ventas[0:5]
lista_tiendas = list(primeras_tiendas['Company'])
lista_ventas = list(primeras_ventas['Company'])
for i in range(len(lista_tiendas)):
for j in range(len(lista_ventas)):
if lista_tiendas[i] == lista_ventas[j]:
print(lista_tiendas[i] + '\nEsta en el lugar ' + str(i+1) + ' de más tiendas y en el lugar ' + str(j+1) + ' de más ventes' )
plt.figure(figsize=(14,8))
sns.barplot(data=orden_tiendas[0:5], x='Company', y='Stores')
plt.xticks(rotation='vertical')
plt.title('Compañias con más tiendas')
plt.show()
plt.figure(figsize=(14,8))
sns.barplot(data=orden_ventas[0:5], x='Company', y='Sales')
plt.xticks(rotation='vertical')
plt.title('Compañias con más ventas')
plt.show()
group = df.groupby('Category')
ventas_grupo = group['Sales'].sum()
lista_ordenada_ventas_grupo = ventas_grupo.sort_values(ascending=False)
lista_ordenada_ventas_grupo
llaves = lista_ordenada_ventas_grupo.keys()
plt.figure(figsize=(14,8))
sns.barplot(x = llaves, y = lista_ordenada_ventas_grupo)
plt.xticks(rotation='vertical')
plt.xlabel('Categorias')
plt.ylabel('Ventas')
plt.title('Ventas por categoria')
plt.grid()
plt.show()
ventas_entre_tiendas = df.sort_values('Sales/Avg. Store', ascending = False)
print(list(ventas_entre_tiendas['Company'])[0] + ' es el primer lugar en ventas en relación con sus tiendas físicas')
print(list(ventas_entre_tiendas['Company'])[1] + ' es el segundo lugar en ventas en relación con sus tiendas físicas')
plt.figure(figsize=(14,8))
sns.barplot(data=ventas_entre_tiendas, x = 'Company', y = 'Sales/Avg. Store')
plt.xticks(rotation='vertical')
plt.grid()
plt.show()
company_online = df[df['Stores'].isna()]
company_online
promedio_ventas_online = company_online['Sales'].mean()
print('Promedio de ventas en compañias online: ' + str(promedio_ventas_online) + ' millones de USD')
company_fisica = datos_menos_primero[datos_menos_primero['Stores'].isna() != True]
company_fisica
promedio_ventas_fisica = company_fisica['Sales'].mean()
print('Excluyendo a Walmar US')
print('Promedio de ventas en compañias fisicas: ' + str(promedio_ventas_fisica) + ' millones de USD')
porcentaje_ventas_fisicas_vs_online = promedio_ventas_fisica / promedio_ventas_online * 100
print('El promedio de ventas de todas las compañias con tiendas físicas representa el ' + str(round(porcentaje_ventas_fisicas_vs_online,1)) + '% de el \npromedio de ventas de todas las compañias con tiendas online.')
x =['Online', 'Física']
y =[promedio_ventas_online, promedio_ventas_fisica]
plt.figure(figsize=(14,8))
sns.barplot(x=x, y=y)
plt.xlabel('Compañia')
plt.ylabel('Promedio de ventas')
plt.title('Promedio de ventas Online vs Físicas')
plt.show()
group = company_fisica.groupby('Category')
tiendas_grupo = group['Stores'].sum()
lista_ordenada_tiendas_grupo = tiendas_grupo.sort_values(ascending=False)
lista_ordenada_tiendas_grupo
llaves_tiendas = lista_ordenada_tiendas_grupo.keys()
plt.figure(figsize=(14,8))
sns.barplot(x=llaves_tiendas, y=lista_ordenada_tiendas_grupo)
plt.xticks(rotation='vertical')
plt.grid()
plt.show()
!pip install session_info==1.0.0
import session_info
session_info.show()