Análisis de los 25 retailers más grandes de Estados Unidos
# Importar librerías
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Importar datos
df = pd.read_csv("largest_us_retailers.csv")
# Ordenar dataset por las ganancias generadas de mayor a menor
df_sorted = df.sort_values("Sales", ascending=0)
# Crear las listas de datos que se usarán para el gráfico.
pie_labels = df_sorted['Company'][0:10]
pie_sizes = df_sorted['Sales'][0:10]
# Crear y personalizar el gráfico de torta con Matplotlib
plt.pie(pie_sizes,
labels=pie_labels,
radius=2.5,
autopct='%0.0f%%',
shadow=True,
startangle=90)
# Mostrar el gráfico de torta
plt.show()
# Crear variable que almacene el dataset completo sin contar a Walmart US
df_clean = df_sorted[1:25]
I. Preguntas del negocio
# Obtener la media (o promedio) de las ventas de cada retail
df_clean['Sales'].mean()
# Obtener la mediana de las ventas de cada retail
df_clean['Sales'].median()
# Mostrar el conjunto de datos ordenados de mayor a menor
df_clean['Sales']
# Mostrar un histograma para observar la distribución de los datos
df_clean['Sales'].plot.hist(bins=20)
# Crear un diagrama de caja con Seaborn para observar el rango de la mayoría de ventas
sns.boxplot(df_clean['Sales'])
# Obtener los valores de los quartiles
min_value = df_clean['Sales'].quantile(q = 0)
Q1 = df_clean['Sales'].quantile(q = 0.25)
median = df_clean['Sales'].median()
Q3 = df_clean['Sales'].quantile(q = 0.75)
max_value = df_clean['Sales'].quantile(q = 1)
print(min_value, Q1, median, Q3, max_value)
# Obtener el rango intercuartil
iqr = Q3 - Q1
iqr
# Obtener los valores de los quartiles
min_value = df_clean['Stores'].quantile(q = 0)
Q1 = df_clean['Stores'].quantile(q = 0.25)
median = df_clean['Stores'].median()
Q3 = df_clean['Stores'].quantile(q = 0.75)
max_value = df_clean['Stores'].quantile(q = 1)
print(min_value, Q1, median, Q3, max_value)
# Obtener el rango interquartil
iqr = Q3 - Q1
iqr
# Crear un diagrama de caja con Seaborn para confirmar datos outliers
sns.boxplot(df_clean['Stores'])
# Crear un gráfico de dispersión
sns.scatterplot(df_clean['Stores'], df_clean['Sales'])
# Crear y personalizar un gráfico de dispersión
sns.scatterplot(data=df_clean,
x = 'Stores',
y = 'Sales',
hue = "Category",
style="Category",
s = 100)
# Cambiar la posición de la leyenda del gráfico
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)
# Mostrar gráfico
plt.show()
min_value = df_clean['Sales'].quantile(q=0)
max_value = df_clean['Sales'].quantile(q=1)
max_value - min_value
# Mostrar los cinco retailers con mayor ganancia de ventas
df_clean.head()
# Mostrar los cinco retailers con mayor cantidad de tiendas
df_clean.sort_values('Stores', ascending=0).head()
# Crear un gráfico para ver la relación entre la cantidad de tiendas y las ventas
sns.lineplot(data=df_clean, x='Stores', y='Sales', hue='Category')
# Cambiar la posición de la leyenda del gráfico
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)
# Filtrar dataframe por empresas de la categoría
df_grocery = df_clean[df_clean.Category == 'Grocery']
df_warehouse = df_clean[df_clean.Category == 'Warehouse Club']
df_home = df_clean[df_clean.Category == 'Home Improvement']
df_drug = df_clean[df_clean.Category == 'Drug Stores']
df_electronic_mail = df_clean[df_clean.Category == 'Electronic/Mail Order']
df_supercenters = df_clean[df_clean.Category == 'Supercenters']
df_electronics = df_clean[df_clean.Category == 'Electronics']
df_department = df_clean[df_clean.Category == 'Department Stores']
df_apparel = df_clean[df_clean.Category == 'Apparel']
df_dollar = df_clean[df_clean.Category == 'Dollar Stores']
# Crear gráfico de barras definido por el promedio de ventas que obtuvo cada categoria
## Crear variables de valores a relacionar
x = df_clean['Category'].drop_duplicates().drop(11) # 11 es el index del valor 'null' y por eso es eliminado
y = [
df_grocery['Sales'].mean(),
df_warehouse['Sales'].mean(),
df_home['Sales'].mean(),
df_drug['Sales'].mean(),
df_electronic_mail['Sales'].mean(),
df_supercenters['Sales'].mean(),
df_electronics['Sales'].mean(),
df_department['Sales'].mean(),
df_apparel['Sales'].mean(),
df_dollar['Sales'].mean()
]
## Personalizar gráfico de barras
plt.bar(x, y)
plt.title('Promedio de ventas por categoria')
plt.xlabel('Category')
plt.ylabel('Sales')
plt.xticks(rotation='vertical')
## Mostrar gráfico de barras
plt.show()
# Crear variables de valores a relacionar
x = df_clean.sort_values('Sales/Avg. Store', ascending=0)['Company']
y = df_clean.sort_values('Sales/Avg. Store', ascending=0)['Sales/Avg. Store']
# Personalizar gráfico de barras
plt.bar(x, y)
plt.title('Promedio de ventas por tienda')
plt.xlabel('Company')
plt.ylabel('Sales')
plt.xticks(rotation='vertical')
df_sorted = df_clean.sort_values('Sales/Avg. Store', ascending=0)
# Crear gráfico de barras con seaborn
sns.barplot(data=df_sorted,
x='Company',
y='Sales/Avg. Store',
hue="Category")
plt.xticks(rotation='vertical')
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)
plt.show