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('/work/largest_us_retailers.csv')
df.head()
Companyobject
Salesint64
2
Costco
90048
3
Home Depot
83976
1
Kroger
115037
0
Walmart US
658119
4
Walgreen Boots
78924
I. Preguntas del negocio
df_sorted = df.sort_values('Sales', ascending=0)
df_wo_walmart = df_sorted[1:26]
print('Promedio ventas excluyendo a Walmart: ', df_wo_walmart['Sales'].mean())
Promedio ventas excluyendo a Walmart: 46602.416666666664
sns.displot(df['Sales'])
plt.xlabel('Ventas ($)')
plt.ylabel('Empresas')
plt.xticks([0,40000,60000,650000])
#plt.xticks(range(0,650000,50000))
plt.xticks(rotation='vertical')
plt.title('Distribución de ventas de las 25 Compañías')
plt.show()
mediana = df_wo_walmart.Stores.median()
sns.displot(df['Stores'])
plt.xlabel('Tiendas')
plt.ylabel('Empresas')
plt.xticks(range(0,14000,1000))
plt.xticks(rotation='vertical')
plt.title('Distribución de tiendas de las compañías')
plt.show()
print('La mediana del número de tiendas es ', mediana)
La mediana del número de tiendas es 1800.0
sns.scatterplot(data=df, x='Sales', y='Stores')
plt.show()
rango = df['Sales'].max() - df['Sales'].min()
rango
df_stores_sorted = df.sort_values('Stores', ascending=0)
df_stores_sorted.head()
Companyobject
Salesint64
20
Dollar Tree
21464
19
Dollar General
22234
5
CVS incl. Target
77792
4
Walgreen Boots
78924
0
Walmart US
658119
df_sales_sorted = df.sort_values('Sales', ascending=0)
df_sales_sorted.head()
Companyobject
Salesint64
4
Walgreen Boots
78924
0
Walmart US
658119
1
Kroger
115037
3
Home Depot
83976
2
Costco
90048
# Mostramos el Dataset ordenado por Ventas
print(df_sorted[0:1])
Company Sales Stores Sales/Avg. Store Store Count Growth \
0 Walmart US 658119 4574.0 65.649725 0.012843
Category
0 Supercenters
# Mostramos el Dataset ordenado por Ventas:
df_sales = df_sales_sorted
# Creamos nueva columna en el Dataset para almacenar Sales/Stores
df_sales['Sales/Stores'] = 0
# Creamos lista temporal para almacenar resultado de la divison de Sales/Stores
salesStoresList = []
# Columna 1 es de Ventas, Columna 2 es de Tiendas, en el Dataset
for i in range (25):
# resultado temporal de la vision Sales/Stores, linea por linea
tmpDivision = (df_sales.iloc[i,1] / df_sales.iloc[i,2])
salesStoresList.append(tmpDivision)
# Asignamos la lista de resultados Sales/Stores a la columna de Sales/Stores
df_sales['Sales/Stores'] = salesStoresList
# Ordenamos de mayor a menor el nuevo Dataet df_sales, en función de Sales/Stores
df_SalesStoresSorted = df_sales.sort_values('Sales/Stores', ascending=0)
# Graficamos los datos ordenados por Sales/Stores
sns.barplot(data=df_SalesStoresSorted, x='Company', y='Sales/Stores')
plt.xticks(rotation='vertical')
plt.show
df.sort_values('Stores', ascending=True)
Companyobject
Meijer4%
HEB4%
23 others92%
Salesint64
16592 - 658119
5
CVS incl. Target
77792
19
Dollar General
22234
20
Dollar Tree
21464
6
Amazon
71687
11
Apple incl. Online
37664
onlineCompanies = df[df.isnull().any(True)]
ventasOnline = onlineCompanies['Sales'].sum()
print('Las ventas de las Tiendas online es: $',ventasOnline)
Las ventas de las Tiendas online es: $ 109351
plt.bar(onlineCompanies.Company,onlineCompanies.Sales)
plt.title('Ventas online por Compañía')
plt.show
#Filtramos todas las tiendas fisicas eliminando las que tienen NA Stores
physicalStores = df.dropna()
physicalStores
Companyobject
Walmart US4.3%
Kroger4.3%
21 others91.3%
Salesint64
16592 - 658119
22
Kohl's
19060
23
Delhaize
18201
24
Meijer
16592
fig, ax = plt.subplots()
# Graficamos Tiendas Físicas (azul)
ax.bar(physicalStores.Company, physicalStores.Sales)
# Graficamos Tiendas Online (naranja)
ax.bar(onlineCompanies.Company, onlineCompanies.Sales)
# Añadimos linea verde de Promedio de ventas
ax.axhline(df['Sales'].mean(), color='g', linestyle='--')
plt.xticks(rotation=270)
plt.title('Ventas de tiendas físicas')
plt.show()
df
Companyobject
CVS incl. Target4%
Dollar General4%
23 others92%
Salesint64
16592 - 658119
12
Best Buy
34980
9
Albertsons
56829
23
Delhaize
18201
6
Amazon
71687
11
Apple incl. Online
37664
sns.displot(df, x='Sales', hue='Category', multiple='stack')