Adidas es una empresa multinacional líder en la industria de artículos deportivos, reconocida por su amplia oferta de productos y su presencia en múltiples mercados a nivel global. En un entorno altamente competitivo, el análisis de la información comercial se convierte en una herramienta clave para comprender el desempeño del negocio y apoyar la toma de decisiones estratégicas.
El presente informe tiene como objetivo desarrollar un análisis descriptivo y de la información comercial de la compañía, a partir de una base de datos que incluye variables como precio por unidad, unidades vendidas, ventas totales, utilidad operativa, margen operativo, producto, región, ciudad, distribuidor y método de venta.
A través de este análisis, se busca examinar el comportamiento de las ventas y la rentabilidad, identificar patrones relevantes y comparar el desempeño entre distintos segmentos del negocio. En particular, se analizan indicadores como ventas totales, participación relativa, distribución de variables, así como comparaciones por producto, región, distribuidor y canal de venta.
Adicionalmente, se exploran relaciones entre variables clave, como la relación entre precio y volumen de ventas, así como entre ventas y utilidad operativa, con el fin de identificar tendencias y posibles asociaciones dentro de los datos.
En conjunto, este enfoque permite obtener una visión integral del desempeño comercial de la empresa, identificar los principales impulsores de las ventas y sentar bases para la formulación de recomendaciones orientadas a la optimización de la estrategia comercial.
library(readxl)
library(dplyr)
library(ggplot2)
datos <- read_excel("~/Desktop/ANALITICA DE NEGOCIOS/DatosCaso1.xlsx")
#ANÁLISIS DESCRIPTIVO
summary(datos)
## distribuidor region estado ciudad
## Length:9648 Length:9648 Length:9648 Length:9648
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## producto precio_unidad unidades_vendidas ventas_total
## Length:9648 Min. : 7.00 Min. : 0.0 Min. : 0
## Class :character 1st Qu.: 35.00 1st Qu.: 106.0 1st Qu.: 4065
## Mode :character Median : 45.00 Median : 176.0 Median : 7804
## Mean : 45.22 Mean : 256.9 Mean :12455
## 3rd Qu.: 55.00 3rd Qu.: 350.0 3rd Qu.:15864
## Max. :110.00 Max. :1275.0 Max. :82500
## utilidad_operativa margen_operativo metodo_venta
## Min. : 0 Min. :0.100 Length:9648
## 1st Qu.: 1753 1st Qu.:0.350 Class :character
## Median : 3263 Median :0.410 Mode :character
## Mean : 4895 Mean :0.423
## 3rd Qu.: 6192 3rd Qu.:0.490
## Max. :39000 Max. :0.800
#Interpretación (IMPORTANTE en el informe):
#Indica si las ventas están concentradas o dispersas
#Comenta si el margen es alto o bajo en promedio
datos %>%
summarise(
promedio_precio = mean(precio_unidad, na.rm = TRUE),
promedio_unidades = mean(unidades_vendidas, na.rm = TRUE),
promedio_ventas = mean(ventas_total, na.rm = TRUE),
promedio_utilidad = mean(utilidad_operativa, na.rm = TRUE),
promedio_margen = mean(margen_operativo, na.rm = TRUE)
)
## # A tibble: 1 × 5
## promedio_precio promedio_unidades promedio_ventas promedio_utilidad
## <dbl> <dbl> <dbl> <dbl>
## 1 45.2 257. 12455. 4895.
## # ℹ 1 more variable: promedio_margen <dbl>
tabla_resumen <- datos %>%
summarise(
Precio_Promedio = mean(precio_unidad, na.rm = TRUE),
Unidades_Promedio = mean(unidades_vendidas, na.rm = TRUE),
Ventas_Promedio = mean(ventas_total, na.rm = TRUE),
Utilidad_Promedio = mean(utilidad_operativa, na.rm = TRUE),
Margen_Promedio = mean(margen_operativo, na.rm = TRUE)
)
tabla_resumen
## # A tibble: 1 × 5
## Precio_Promedio Unidades_Promedio Ventas_Promedio Utilidad_Promedio
## <dbl> <dbl> <dbl> <dbl>
## 1 45.2 257. 12455. 4895.
## # ℹ 1 more variable: Margen_Promedio <dbl>
ventas_region <- datos %>%
group_by(region) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE))
ggplot(ventas_region, aes(x = reorder(region, ventas), y = ventas, fill = region)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Ventas Totales por Región",
x = "Región",
y = "Ventas"
)
ventas_producto <- datos %>%
group_by(producto) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE))
ggplot(ventas_producto, aes(x = reorder(producto, ventas), y = ventas, fill = ventas)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
scale_fill_gradient(low = "skyblue", high = "darkblue") +
labs(
title = "Ventas Totales por Producto",
x = "Producto",
y = "Ventas"
)
ventas_distribuidor <- datos %>%
group_by(distribuidor) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
mutate(participacion = ventas / sum(ventas))
ggplot(ventas_distribuidor, aes(x = "", y = participacion, fill = distribuidor)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
geom_text(aes(label = scales::percent(participacion)),
position = position_stack(vjust = 0.5),
size = 3) +
labs(title = "Participación de Ventas por Distribuidor")
ventas_metodo <- datos %>%
group_by(metodo_venta) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE))
ggplot(ventas_metodo, aes(x = metodo_venta, y = ventas, fill = metodo_venta)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(
title = "Ventas por Método de Venta",
x = "Método",
y = "Ventas"
)
participacion_producto <- datos %>%
group_by(producto) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
mutate(participacion = ventas / sum(ventas)) %>%
arrange(desc(participacion))
ggplot(participacion_producto, aes(x = "", y = participacion, fill = producto)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
geom_text(aes(label = scales::percent(participacion)),
position = position_stack(vjust = 0.5),
size = 3) +
labs(title = "Participación de Ventas por Producto")
participacion_region <- datos %>%
group_by(region) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
mutate(participacion = ventas / sum(ventas))
ggplot(participacion_region, aes(x = "", y = participacion, fill = region)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
geom_text(aes(label = scales::percent(participacion)),
position = position_stack(vjust = 0.5),
size = 3) +
labs(title = "Participación de Ventas por Región")
participacion_distribuidor <- datos %>%
group_by(distribuidor) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
mutate(participacion = ventas / sum(ventas))
ggplot(participacion_distribuidor, aes(x = "", y = participacion, fill = distribuidor)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
geom_text(aes(label = scales::percent(participacion)),
position = position_stack(vjust = 0.5),
size = 3) +
labs(title = "Participación de Ventas por Distribuidor")
participacion_metodo <- datos %>%
group_by(metodo_venta) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
mutate(participacion = ventas / sum(ventas))
ggplot(participacion_metodo, aes(x = "", y = participacion, fill = metodo_venta)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
geom_text(aes(label = scales::percent(participacion)),
position = position_stack(vjust = 0.5),
size = 4) +
labs(title = "Participación por Método de Venta")
ranking_producto <- datos %>%
group_by(producto) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas))
top_productos <- ranking_producto %>%
slice_head(n = 5)
bottom_productos <- ranking_producto %>%
slice_tail(n = 5)
ggplot(top_productos, aes(x = reorder(producto, ventas), y = ventas, fill = ventas)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Top 5 Productos por Ventas",
x = "Producto",
y = "Ventas"
)
#10. RENTABILIDAD ##5.1 Distribución del margen
ggplot(datos, aes(x = margen_operativo)) +
geom_histogram(bins = 20) +
theme_minimal()
##5.2 Rentabilidad por región
rentabilidad_region <- datos %>%
group_by(region) %>%
summarise(
margen_promedio = mean(margen_operativo, na.rm = TRUE),
utilidad_total = sum(utilidad_operativa, na.rm = TRUE)
) %>%
arrange(desc(margen_promedio))
ggplot(rentabilidad_region, aes(x = reorder(region, margen_promedio), y = margen_promedio, fill = region)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Margen Operativo Promedio por Región",
x = "Región",
y = "Margen"
)
# Interpretación
El análisis de rentabilidad por región evidencia que el desempeño no es homogéneo entre mercados. Algunas regiones presentan mayores niveles de margen operativo, lo que indica una mayor eficiencia en la generación de utilidad a partir de las ventas.
rentabilidad_producto <- datos %>%
group_by(producto) %>%
summarise(
margen_promedio = mean(margen_operativo, na.rm = TRUE),
utilidad_total = sum(utilidad_operativa, na.rm = TRUE)
) %>%
arrange(desc(margen_promedio))
ggplot(rentabilidad_producto, aes(x = reorder(producto, margen_promedio), y = margen_promedio, fill = margen_promedio)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Margen Operativo Promedio por Producto",
x = "Producto",
y = "Margen"
)
# Interpretación
Existen diferencias en la rentabilidad entre productos, lo que sugiere que no todas las líneas contribuyen de la misma manera a la generación de valor. Algunos productos presentan márgenes superiores, lo que los posiciona como estratégicos desde una perspectiva de rentabilidad.
rentabilidad_distribuidor <- datos %>%
group_by(distribuidor) %>%
summarise(
margen_promedio = mean(margen_operativo, na.rm = TRUE),
utilidad_total = sum(utilidad_operativa, na.rm = TRUE)
) %>%
arrange(desc(margen_promedio))
ggplot(rentabilidad_distribuidor, aes(x = reorder(distribuidor, margen_promedio), y = margen_promedio, fill = margen_promedio)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Margen Operativo Promedio por Distribuidor",
x = "Distribuidor",
y = "Margen"
)
# Interpretación
El análisis de rentabilidad por distribuidor permite identificar qué canales no solo generan ventas, sino también mayor eficiencia en términos de margen. Esto resulta clave para evaluar la calidad del ingreso generado por cada distribuidor.
#VENTAS VS MARGEN (EJ: POR REGIÓN)
comparacion_region <- datos %>%
group_by(region) %>%
summarise(
ventas = sum(ventas_total, na.rm = TRUE),
margen = mean(margen_operativo, na.rm = TRUE)
)
ggplot(comparacion_region, aes(x = ventas, y = margen, label = region)) +
geom_point(size = 3) +
geom_text(vjust = -0.5) +
theme_minimal() +
labs(
title = "Ventas vs Margen por Región",
x = "Ventas",
y = "Margen"
)
# Interpretación (MUY IMPORTANTE)
Este análisis permite evidenciar que un mayor volumen de ventas no necesariamente implica mayor rentabilidad, resaltando la importancia de evaluar ambos indicadores de manera conjunta.
El análisis de rentabilidad evidencia que existen diferencias significativas entre regiones, productos y distribuidores en términos de generación de valor. Esto resalta la importancia de complementar el análisis de ventas con indicadores de margen y utilidad, con el fin de obtener una visión más completa del desempeño del negocio.
#7. ANÁLISIS POR SEGMENTOS CLAVE ##Método de venta
datos %>%
group_by(metodo_venta) %>%
summarise(
ventas = sum(ventas_total),
utilidad = sum(utilidad_operativa)
)
## # A tibble: 3 × 3
## metodo_venta ventas utilidad
## <chr> <dbl> <dbl>
## 1 In-store 35664375 12759129.
## 2 Online 44965657 19552538.
## 3 Outlet 39536618 14913301.
#Combinaciones estratégicas
datos %>%
group_by(producto, region) %>%
summarise(ventas = sum(ventas_total)) %>%
arrange(desc(ventas))
## # A tibble: 30 × 3
## # Groups: producto [6]
## producto region ventas
## <chr> <chr> <dbl>
## 1 Men's Street Footwear West 7389988
## 2 Women's Apparel West 7038046
## 3 Men's Street Footwear Northeast 6841324
## 4 Men's Athletic Footwear West 6761339
## 5 Women's Street Footwear West 5748586
## 6 Women's Apparel Northeast 5045208
## 7 Men's Apparel West 4827378
## 8 Men's Street Footwear Midwest 4707360
## 9 Men's Street Footwear Southeast 4693836
## 10 Women's Athletic Footwear West 4670820
## # ℹ 20 more rows
#PRUEBAS
#1.VENTAS PROMEDIO POR TRANSACCIÓN
datos <- datos %>%
mutate(venta_promedio = ventas_total / unidades_vendidas)
summary(datos$venta_promedio)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 7.00 35.00 45.00 45.22 55.00 110.00 4
#Visualización
ggplot(datos, aes(x = venta_promedio)) +
geom_histogram(bins = 30) +
theme_minimal()
.
#3. VOLUMEN RELATIVO POR REGIÓN / CIUDAD
ventas_region <- datos %>%
group_by(region) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas))
#GRAFICO
ggplot(ventas_region, aes(x = reorder(region, ventas), y = ventas)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal()
#Código (Ciudad)
ventas_ciudad <- datos %>%
group_by(ciudad) %>%
summarise(ventas = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas))
##Interpretación. El análisis de volumen relativo por región y ciudad permite identificar los mercados más relevantes para la compañía. Aquellas regiones con mayor volumen de ventas representan oportunidades estratégicas de consolidación, mientras que regiones con menor desempeño podrían requerir estrategias de crecimiento o reevaluación comercial.