Introducción

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

Resumen general

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>

1. Ventas por región

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"
  )

2. Ventas por producto

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"
  )

3. VENTAS POR DISTRIBUIDOR

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")

4.METODO DE VENTA

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"
  )

5. PARTICIPACION POR PRODUCTO

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")

6. PARTICIPACIÓN POR REGIÓN

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")

7. PARTICIPACIÓN POR DISTRIBUIDOR

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")

8. PARTICIPACIÓN POR MÉTODO DE VENTA

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")

9 RANKINGS

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 POR PRODUCTO

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 POR DISTRIBUIDOR

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.