Es una compañía multinacional alemana fundada en 1949, con sede en Herzogenaurach, ciudad ubicada en Baviera. Se dedica a la fabricación de equipamiento deportivo y productos de moda (bolsos, camisas, tenis, gafas, etc.). La empresa también es patrocinadora de eventos y figuras deportivas a nivel mundial. Es el primer mayor fabricante del sector en el mundo.
A través de este análisis, se busca evaluar el desempeño de ventas y la rentabilidad de diferentes líneas de productos en el mercado, para la empresa en mencion.
El análisis exploratorio de datos (EDA) es un paso clave para comprender la informacion suministrada en la base de datos de Adidas., identificar patrones y evaluar la distribución de las variables.
A través de estadísticas descriptivas y visualización de datos con R, identificaremos tendencias, relaciones entre variables y posibles anomalías, proporcionando una base sólida para evaluar el desempeño de ventas y la rentabilidad de diferentes líneas de productos en el mercado.
PASO 1. Instalar y cargar librerias
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
PASO 2: Cargar la base de datos
# Cargar datos desde el archivo Excel
Adidas <- read_excel("Adidas.xlsx")
# Ver las primeras filas de los datos
class(Adidas)
## [1] "tbl_df" "tbl" "data.frame"
colnames(Adidas)
## [1] "retailer" "Region" "State" "City"
## [5] "Product" "price_per_unit" "units_sold" "total_sales"
## [9] "operating_profit" "operating_margin" "sales_method"
head(Adidas)
| retailer | Region | State | City | Product | price_per_unit | units_sold | total_sales | operating_profit | operating_margin | sales_method |
|---|---|---|---|---|---|---|---|---|---|---|
| Foot Locker | Northeast | New York | New York | Men’s Street Footwear | 50 | 1200 | 60000 | 30000.0 | 0.50 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Athletic Footwear | 50 | 1000 | 50000 | 15000.0 | 0.30 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Street Footwear | 40 | 1000 | 40000 | 14000.0 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Athletic Footwear | 45 | 850 | 38250 | 13387.5 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Apparel | 60 | 900 | 54000 | 16200.0 | 0.30 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Apparel | 50 | 1000 | 50000 | 12500.0 | 0.25 | In-store |
# Resumen estadístico de las variables financieras
resumen <- Adidas %>%
select(total_sales, operating_profit, retailer, Product, City) %>%
summary()
resumen
## total_sales operating_profit retailer Product
## Min. : 0 Min. : 0 Length:9648 Length:9648
## 1st Qu.: 4065 1st Qu.: 1753 Class :character Class :character
## Median : 7804 Median : 3263 Mode :character Mode :character
## Mean :12455 Mean : 4895
## 3rd Qu.:15864 3rd Qu.: 6192
## Max. :82500 Max. :39000
## City
## Length:9648
## Class :character
## Mode :character
##
##
##
library(readxl)
data = read_excel("Adidas.xlsx")
require(ggplot2)
require(ggpubr)
require(CGPfunctions)
require(plotly)
names(data)
## [1] "retailer" "Region" "State" "City"
## [5] "Product" "price_per_unit" "units_sold" "total_sales"
## [9] "operating_profit" "operating_margin" "sales_method"
#Tabla de frecuencia absoluta y relativa de la variable Producto
table(data$Region)
##
## Midwest Northeast South Southeast West
## 1872 2376 1728 1224 2448
prop.table(table(data$Region))*100
##
## Midwest Northeast South Southeast West
## 19.40299 24.62687 17.91045 12.68657 25.37313
#Tabla de frecuencia absoluta y relativa de la variable Metodo de ventas
table(data$sales_method)
##
## In-store Online Outlet
## 1740 4889 3019
prop.table(table(data$sales_method))*100
##
## In-store Online Outlet
## 18.03483 50.67371 31.29146
#Tabla de frecuencia absoluta y relativa de la variable Region
table(data$Genero)
## < table of extent 0 >
prop.table(table(data$Genero))*100
## numeric(0)
#Tabla de frecuencia absoluta y relativa de la variable Region
table(data$Product)
##
## Men's Apparel Men's Athletic Footwear Men's Street Footwear
## 1606 1610 1610
## Women's Apparel Women's Athletic Footwear Women's Street Footwear
## 1608 1606 1608
prop.table(table(data$Product))*100
##
## Men's Apparel Men's Athletic Footwear Men's Street Footwear
## 16.64594 16.68740 16.68740
## Women's Apparel Women's Athletic Footwear Women's Street Footwear
## 16.66667 16.64594 16.66667
#library(ggpubr)
Adidas$Product=factor(Adidas$Product,levels =c("Men's Apparel","Men's Athletic Footwear","Men's Street Footwear", "Women's Apparel","Women's Athletic Footwear","Women's Street Footwear"))
g2=ggplot(Adidas,aes(x=Product))+geom_bar(width = 0.9) + # Aumentar el ancho de las barras
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas si es necesario
Adidas$sales_method=factor(Adidas$sales_method,levels =c("In-store","Online","Outlet"))
g3=ggplot(Adidas,aes(x=sales_method))+geom_bar()+theme_bw()
Adidas$Region=factor(Adidas$Region,levels =c("Midwest", "Northeast", "South", "Southeast", "West"))
g4=ggplot(Adidas,aes(x=Region))+geom_bar(width = 0.8) + # Aumentar el ancho de las barras
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas si es necesario
ggarrange(g2, g3, g4, labels = c("A", "B","C"),ncol = 3, nrow = 1)
La frecuencia de compra de los productos de Hombre y mujeres es muy
similar, representadas en 50.02% hombres y en un 49.97% mujeres; donde
la mayor frecuencia de compra segun los canales de venta, es en el canal
online representado por un 50.67%, seguido del canal Outlet representada
en un 31.29% y finalmente en Tienda fisica con una frecuencia de 18.04;
de igual manera se ve una representacion segun la region con la mayor
participacion de la frecuencia de compra en la region West con un
porcentaje del 25.37% y la menor participacion es para la region
southeast con un porcentaje de participacion del 12.68%.
# Visualizar margen de utilidad por categoría de producto
p <-ggplot(Adidas, aes(x = Product, y = operating_margin, fill = Product)) +
geom_boxplot() +
labs(title = "Distribucion del Margen de Utilidad por Producto",
x = "Producto",
y = "Margen de Utilidad") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Convertir a gráfico interactivo
ggplotly(p)
la tendencia de la grafica permite identificar que el margen de utilidad de los productos oscila entre el 40% y el 50%, siendo la de mayor tendencia el producto de hombre Mens street footwear, seguidamente del producto de mujer Womens apparel; los demas productos presentan un margen de utilidad menor.
library(ggplot2)
library(plotly)
# Datos reales agrupados por canal de ventas
data <- data.frame(
Metodo = c("In-store", "Online", "Outlet"),
Categoria = rep(c("Ventas", "Utilidad"), each = 3),
Valor = c(35664375, 44965657, 39536618, 127591300, 96555180, 107988300)
)
# Crear el gráfico de barras apiladas
p <-ggplot(data, aes(x = Metodo, y = Valor / 1e6, fill = Categoria)) +
geom_bar(stat = "identity", position = "stack") +
scale_y_continuous(name = "Valores en millones dolares") +
labs(title = "Ventas y Utilidad por Metodo de Venta", x = "Metodo de Venta") +
scale_fill_manual(values = c("Ventas" = "blue", "Utilidad" = "green")) +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(p)
Analizando el volumen de venta observamos una mayor participación en
ventas en las tiendas Online y con utilidad operativa inferior que en
los otros dos métodos (In-Sotre y Outlet).
Se plantea revisar las categorías de producto en este método o canal,
incluyendo prodctos con mejor desempeño en margen, de esta manera se
contribuirá a mejorar las utilidades.
# Cargar la librería necesaria
library(dplyr)
# Crear un resumen de unidades vendidas, margen operativo y volumen de ventas por producto, ordenado
summary_df <- Adidas %>%
group_by(Product) %>%
summarise(
total_units_sold = sum(units_sold, na.rm = TRUE),
avg_operating_margin = mean(operating_margin, na.rm = TRUE),
total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE) # Volumen de ventas
) %>%
arrange(desc(total_units_sold)) # Orden descendente por unidades vendidas
# Mostrar el data frame resumen
print(summary_df)
## # A tibble: 6 × 4
## Product total_units_sold avg_operating_margin total_sales_volume
## <fct> <dbl> <dbl> <dbl>
## 1 Men's Street Footwear 593320 0.446 27680769
## 2 Men's Athletic Footw… 435526 0.403 20577180
## 3 Women's Apparel 433827 0.441 23870985
## 4 Women's Street Footw… 392269 0.410 17201563
## 5 Women's Athletic Foo… 317236 0.423 14315521
## 6 Men's Apparel 306683 0.413 16520632
# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)
# Crear un resumen de margen operativo, precio por unidad y volumen de ventas por producto
summary_df <- Adidas %>%
group_by(Product) %>%
summarise(
avg_operating_margin = mean(operating_margin, na.rm = TRUE), # Promedio margen operativo
avg_price_per_unit = mean(price_per_unit, na.rm = TRUE), # Precio promedio por unidad
total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE) # Volumen de ventas
) %>%
arrange(desc(total_sales_volume)) # Orden descendente por volumen de ventas
# Mostrar el data frame resumen
print(summary_df)
## # A tibble: 6 × 4
## Product avg_operating_margin avg_price_per_unit total_sales_volume
## <fct> <dbl> <dbl> <dbl>
## 1 Men's Street Footw… 0.446 44.2 27680769
## 2 Women's Apparel 0.441 51.6 23870985
## 3 Men's Athletic Foo… 0.403 43.8 20577180
## 4 Women's Street Foo… 0.410 40.3 17201563
## 5 Men's Apparel 0.413 50.3 16520632
## 6 Women's Athletic F… 0.423 41.1 14315521
# Crear un gráfico de dispersión
p <-ggplot(summary_df, aes(x = avg_price_per_unit, y = avg_operating_margin, size = total_sales_volume)) +
geom_point(alpha = 0.7, color = "blue") + # Puntos en azul, tamaño según volumen de ventas
geom_smooth(method = "lm", color = "red", se = FALSE) + # Línea de tendencia en rojo
labs(title = "Relacion entre Precio por Unidad, Margen Operativo y Volumen de Ventas",
x = "Precio Promedio por Unidad",
y = "Margen Operativo",
size = "Volumen de Ventas") +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(p)
De acuerdo a la tendencia positiva de la grafica se observa que a mayor precio por unidad mayor margen operativo y que productos con alto volumen de ventas tienen un mayor margen operativo, a diferencia de productos con volumen bajo de ventas que reflejan un margen operativo bajo.
# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)
# Crear un resumen de la utilidad operativa y total de ventas por producto
summary_df <- Adidas %>%
group_by(Product) %>%
summarise(
total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE), # Total de ventas
total_operating_profit = sum(units_sold * price_per_unit * operating_margin, na.rm = TRUE), # Utilidad operativa
avg_operating_margin = mean(operating_margin, na.rm = TRUE) # Margen operativo promedio
) %>%
arrange(desc(total_sales_volume)) # Orden descendente por ventas totales
# Mostrar la tabla resumen
print(summary_df)
## # A tibble: 6 × 4
## Product total_sales_volume total_operating_profit avg_operating_margin
## <fct> <dbl> <dbl> <dbl>
## 1 Men's Street F… 27680769 11629046. 0.446
## 2 Women's Apparel 23870985 9685221. 0.441
## 3 Men's Athletic… 20577180 7437457. 0.403
## 4 Women's Street… 17201563 6494017. 0.410
## 5 Men's Apparel 16520632 6381405. 0.413
## 6 Women's Athlet… 14315521 5597822. 0.423
# Crear un gráfico de dispersión
ggplot(summary_df, aes(x = total_sales_volume, y = total_operating_profit, size = avg_operating_margin)) +
geom_point(alpha = 0.7, color = "blue") + # Puntos en azul, tamaño según margen operativo
geom_smooth(method = "lm", color = "red", se = FALSE) + # Línea de tendencia roja
labs(title = "Analisis de Contribucion: Ventas vs Utilidad Operativa",
x = "Total de Ventas",
y = "Utilidad Operativa",
size = "Margen Operativo Prom.") +
theme_minimal()
Podemos observar que los productos con mayor total de ventas tienen mayor utilidad operativa en comparacion con los puntos pequeños abajo en la grafica que muestran ventas bajas y utilidad baja.
Enfocaremos nuestra estrategia en los productos como plan para contribuir con los objetivos de la compañía:
1.Revisar productos con alto volumen de ventas y baja utilidad: para realizar una estrategia de precios que contribuyan a mejorar el margen.
2.Plantear que estos productos se promocionen en el canal Outlet, dado que es el método de ventas que tiene mejor comportamiento en el margen, concluimos que es porque sus costos operativos son menores.
3.Plantear con los productos que tienen bajo volumen de ventas, realizar campañas o estrategias de mercadeo que permita intensificar el volumen de ventas en el método de venta Outlet, ya que este canal presenta un mejor comportamiento en el margen operacional.