Analizando los 25 retailers más grandes de Estados Unidos
# Importando librerías
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Importando datos
retailers = pd.read_csv('/work/largest_us_retailers.csv')
retailers.head()
# Encontrando las medidas de tendencia de los datos
retailers.describe()
sns.set_theme()
plt.figure(figsize=(10,4))
sns.boxplot(x = 'Sales', data = retailers)
# Organizando los datos para encontrar la compañía con mayores ventas
retailers_sorted = retailers.sort_values('Sales', ascending=False).head(10)
retailers_sorted
# Visualizando los datos de la tabla anterior
plt.bar(retailers_sorted['Company'], retailers_sorted['Sales'])
plt.xticks(rotation=90)
plt.title('Compañías con mayores ventas')
plt.ylabel('USD MM')
plt.show()
I. Preguntas del negocio
# Encontrando el promedio (sin contar Walmart)
other_comp = retailers[retailers.Company !='Walmart US']
prom_ventas = other_comp['Sales'].mean()
print('El promedio de ventas (sin contar la compañía dominante), es de: USD $'+str(round(prom_ventas,2))+' MM')
# Ahora veámoslo gráficamente
fig, ax= plt.subplots(figsize=(8, 5))
plt.bar(other_comp['Company'], other_comp['Sales'])
ax.axhline(prom_ventas, label='Promedio Ventas', ls='--', color='red')
plt.xticks(rotation=90)
plt.title('Ventas de las demás Compañías')
plt.ylabel('USD MM')
plt.legend()
plt.show()
plt.hist(other_comp['Sales'], bins=4)
plt.title('Dinero en Ventas')
plt.xlabel('Ventas en USD MM')
plt.show()
plt.hist(retailers['Stores'], bins=5)
plt.xlabel('Tiendas')
plt.show()
plt.scatter(retailers.Stores, retailers.Sales)
plt.title('Cantidad de tiendas vs. Ventas')
plt.xlabel('Tiendas')
plt.ylabel('Ventas')
plt.show()
# Hallando el máximo y el mínimo para encontrar el rango de ventas
max_ventas = retailers['Sales'].max()
min_ventas = retailers['Sales'].min()
print('Las ventas varían desde los USD $' + str(min_ventas) + ' MM, hasta los USD $' + str(max_ventas) + ' MM. ')
print('Esto significa un rango bastante amplio, de USD $' + str(max_ventas-min_ventas) + ' MM.')
# Encontrando las 5 compañías con mayor número de tiendas
stores_top5 = retailers.sort_values('Stores', ascending=False).head(5)
stores_top5
# Encontrando las 5 compañías con mayores ventas
sales_top5 = retailers.sort_values('Sales', ascending=False).head(5)
sales_top5
# Podemos visualizarlo mejor mediante gráficos
plt.barh(stores_top5['Company'], stores_top5['Stores'])
plt.title('Compañías con mayor cantidad de tiendas')
plt.xlabel('USD MM')
plt.show()
plt.barh(sales_top5['Company'], sales_top5['Sales'])
plt.title('Compañías con mayores ventas')
plt.xlabel('USD MM')
plt.show()
# Agrupando las ventas por categoría
sales_category = retailers.groupby('Category')['Sales'].sum()
category_top10 = sales_category.sort_values(ascending=False).head(10)
category_top10
plt.barh(category_top10.index, category_top10)
plt.xticks(rotation=30)
plt.title('Ventas por categoría')
plt.xlabel('USD MM')
plt.show()
# Creando una nueva columna para calcular la relación
retailers['Sales/Store Ratio'] = retailers.Sales / retailers.Stores
sales_ratio = retailers.sort_values('Sales/Store Ratio',ascending=False).head(10)
sales_ratio
# Siempre una imagen es mejor
plt.bar(sales_ratio['Company'], sales_ratio['Sales/Store Ratio'])
plt.xticks(rotation=90)
plt.title('Relación tiendas / ventas')
plt.ylabel('USD MM')
plt.show()
# Filtrando las tiendas Online
online_stores = retailers[retailers.Stores.isnull()]
online_stores
#Identificando el promedio de ventas de las tiendas online
online_stores['Sales'].mean()
# Ahora veamos las que tienen tiendas físicas
physical_stores = retailers[retailers.Stores.notnull()]
physical_stores.head(5)
#Identificando el promedio de ventas de las tiendas fisicas
physical_stores['Sales'].mean()
# Encontrando el promedio (sin contar Walmart)
other_physical_stores = other_comp[other_comp.Stores.notnull()]
other_physical_stores.head(5)
#Identificando el promedio de ventas de las tiendas fisicas sin Walmart
other_physical_stores['Sales'].mean()
# Observando cuántas empresas hay por categoria
company_category = retailers.groupby('Category')['Company'].count()
competition = company_category.sort_values()
competition
plt.barh(competition.index, competition)
plt.title('Cantidad de empresas por categoría')
plt.show()