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()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25 entries, 0 to 24
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Company 25 non-null object
1 Sales 25 non-null int64
2 Stores 23 non-null float64
3 Sales/Avg. Store 23 non-null float64
4 Store Count Growth 23 non-null float64
5 Category 24 non-null object
dtypes: float64(3), int64(1), object(2)
memory usage: 1.3+ KB
df
Companyobject
Sam's Club4%
Costco4%
23 others92%
Salesint64
16592 - 658119
10
Sam's Club
56828
2
Costco
90048
0
Walmart US
658119
7
Target
71208
24
Meijer
16592
8
Lowe's
60311
3
Home Depot
83976
15
Ahold
26903
1
Kroger
115037
23
Delhaize
18201
21
HEB
21384
18
Aldi
24402
13
Publix
34408
9
Albertsons
56829
12
Best Buy
34980
6
Amazon
71687
14
Rite Aid
27486
4
Walgreen Boots
78924
5
CVS incl. Target
77792
19
Dollar General
22234
20
Dollar Tree
21464
16
Macy's
26028
22
Kohl's
19060
17
TJX
25012
11
Apple incl. Online
37664
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')
Promedio de ventas: 46602.42 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')
Desviación estándar de las ventas: 28317.98 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')
El 50 % de las compañias vende entre 23860.0 y 71327.75 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')
Las ventas del 75% de las mejores compañías en ventas, suman en total: 999523 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')
El 50% de las compañias tiene entre 1029 y 4242 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')
Excluyendo a Walmar US el rango intercuartil (IQR) entre las ventas es de 47467.75 millones de USD
Excluyendo a Walmar US el rango entre las ventas es de 98445.0 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'])
Primeras 5 compañias con mas tiendas:
20 Dollar Tree
19 Dollar General
5 CVS incl. Target
4 Walgreen Boots
0 Walmart US
Name: Company, dtype: object
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' )
Walgreen Boots
Esta en el lugar 4 de más tiendas y en el lugar 5 de más ventes
Walmart US
Esta en el lugar 5 de más tiendas y en el lugar 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')
Costco es el primer lugar en ventas en relación con sus tiendas físicas
Sam's Club 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
Companyobject
Salesint64
11
Apple incl. Online
37664
6
Amazon
71687
promedio_ventas_online = company_online['Sales'].mean()
print('Promedio de ventas en compañias online: ' + str(promedio_ventas_online) + ' millones de USD')
Promedio de ventas en compañias online: 54675.5 millones de USD
company_fisica = datos_menos_primero[datos_menos_primero['Stores'].isna() != True]
company_fisica
Companyobject
Kroger4.5%
Costco4.5%
20 others90.9%
Salesint64
16592 - 115037
1
Kroger
115037
2
Costco
90048
3
Home Depot
83976
4
Walgreen Boots
78924
5
CVS incl. Target
77792
7
Target
71208
8
Lowe's
60311
9
Albertsons
56829
10
Sam's Club
56828
12
Best Buy
34980
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')
Excluyendo a Walmar US
Promedio de ventas en compañias fisicas: 45868.5 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.')
El promedio de ventas de todas las compañias con tiendas físicas representa el 83.9% de el
promedio 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
Requirement already satisfied: session_info==1.0.0 in /root/venv/lib/python3.7/site-packages (1.0.0)
Requirement already satisfied: stdlib-list in /root/venv/lib/python3.7/site-packages (from session_info==1.0.0) (0.8.0)
WARNING: You are using pip version 20.1.1; however, version 22.0.3 is available.
You should consider upgrading via the '/root/venv/bin/python -m pip install --upgrade pip' command.
import session_info
session_info.show()