Adidas es una de las marcas más reconocidas en la industria global de artículos deportivos. Fundada en 1949 en Alemania, ha consolidado su presencia en los principales mercados internacionales, ofreciendo una amplia gama de productos que incluyen calzado deportivo, ropa y accesorios. Su posicionamiento estratégico, capacidad de innovación y enfoque en el rendimiento la han convertido en un referente del sector a nivel mundial. El análisis del desempeño comercial y financiero de Adidas es fundamental para evaluar su competitividad, identificar patrones de consumo y comprender los factores que impulsan su rentabilidad. En este documento, realizaremos un análisis exploratorio de variables financieras clave, como el precio por unidad, unidades vendidas, ventas totales, utilidad operativa y margen operativo, utilizando R. Aplicaremos técnicas de estadística descriptiva y visualización de datos para detectar tendencias, niveles de variabilidad y relaciones entre variables, facilitando una mejor interpretación del desempeño de la compañía en distintos segmentos como región, producto y método de venta. A través de este análisis, se busca proporcionar una visión integral y estratégica del desempeño comercial de la compañía, lo cual sirve como insumo para directivos, analistas y académicos interesados en comprender la dinámica financiera y operativa de una empresa líder en la industria deportiva.
El análisis exploratorio de datos (EDA) es un paso clave para comprender la información financiera 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 y relaciones entre variables como el precio por unidad, las unidades vendidas, las ventas totales, la utilidad operativa y el margen operativo.
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")
# Cargar los datos desde el archivo Excel
library(readxl)
# Especificar la ruta correcta al archivo
Adidas <- read_excel("Adidas.xlsx",
col_types = c("text", "text", "text",
"text", "text", "numeric",
"numeric", "numeric",
"numeric", "numeric", "text"))
# Ver las primeras filas de los datos
class(Adidas)
## [1] "tbl_df" "tbl" "data.frame"
colnames(Adidas)
## [1] "distribuidor" "region" "estado"
## [4] "ciudad" "producto" "precio_unidad"
## [7] "unidades_vendidas" "ventas_total" "utilidad_operativa"
## [10] "margen_operativo" "metodo_venta"
head(Adidas)
| distribuidor | region | estado | ciudad | producto | precio_unidad | unidades_vendidas | ventas_total | utilidad_operativa | margen_operativo | metodo_venta |
|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
# Cargar las librerías necesarias
library(dplyr)
# Resumen estadístico de las variables disponibles en los datos de Adidas
resumen_adidas <- Adidas %>%
select(precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo) %>% # Selección de variables
summary() # Resumen estadístico
# Mostrar el resumen
print(resumen_adidas)
## precio_unidad unidades_vendidas ventas_total utilidad_operativa
## Min. : 7.00 Min. : 0.0 Min. : 0 Min. : 0
## 1st Qu.: 35.00 1st Qu.: 106.0 1st Qu.: 4065 1st Qu.: 1753
## Median : 45.00 Median : 176.0 Median : 7804 Median : 3263
## Mean : 45.22 Mean : 256.9 Mean :12455 Mean : 4895
## 3rd Qu.: 55.00 3rd Qu.: 350.0 3rd Qu.:15864 3rd Qu.: 6192
## Max. :110.00 Max. :1275.0 Max. :82500 Max. :39000
## margen_operativo
## Min. :0.100
## 1st Qu.:0.350
## Median :0.410
## Mean :0.423
## 3rd Qu.:0.490
## Max. :0.800
#Gráficos de barras ## Ventas totales de Adidas por region
# Cargar las librerías necesarias
library(plotly)
library(dplyr)
# Crear el gráfico de barras interactivo con color atractivo y corregir el error de texto
grafico_barras_adidas <- Adidas %>%
plot_ly(x = ~region, y = ~ventas_total, type = 'bar',
marker = list(color = '#00BFFF')) %>% # Azul brillante para las barras
layout(
title = "Ventas Totales de Adidas por Region",
titlefont = list(size = 24, family = "Arial, sans-serif", color = "#003366", bold = TRUE), # Título en negrita y tipografía bonita
xaxis = list(
title = "Region",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
yaxis = list(
title = "Ventas Totales (Miles de pesos)",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
hovermode = "x", # Modo de hover por cada barra
plot_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo del gráfico blanco
paper_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo de la página blanco
showlegend = FALSE, # Eliminar la leyenda ya que no es necesaria
annotations = list( # Agregar las etiquetas sobre las barras con los valores
list(
x = ~region,
y = ~ventas_total,
text = paste0(round(Adidas$ventas_total / 1000000, 1), "M"), # Convertir a millones y agregar 'M'
showarrow = FALSE,
font = list(size = 12, color = 'black')
)
)
)
# Mostrar el gráfico
grafico_barras_adidas
El gráfico muestra las ventas totales de Adidas por región, destacando que la región Oeste tiene las ventas más altas, superando los 40 millones de pesos. Le siguen las regiones del Noreste y Sureste con ventas similares cercanas a los 20 millones de pesos. Las regiones Midwest y Sur presentan las ventas más bajas, con menos de 20 millones de pesos. Esto sugiere que la región Oeste es la de mayor demanda para Adidas, mientras que el Sur y Midwest tienen un rendimiento más bajo en ventas.
# Cargar las librerías necesarias
library(plotly)
library(dplyr)
# Crear el gráfico de barras interactivo con color atractivo y corregir el error de texto
grafico_barras_adidas <- Adidas %>%
plot_ly(x = ~producto, y = ~ventas_total, type = 'bar',
marker = list(color = '#00BFFF')) %>% # Azul brillante para las barras
layout(
title = "Ventas Totales de Adidas por producto", # Corregido "Región" por "Region"
titlefont = list(size = 24, family = "Arial, sans-serif", color = "#003366", bold = TRUE), # Título en negrita y tipografía bonita
xaxis = list(
title = "producto", # Reemplazado "Región" por "Region"
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
yaxis = list(
title = "Ventas Totales (Miles de pesos)",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
hovermode = "x", # Modo de hover por cada barra
plot_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo del gráfico blanco
paper_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo de la página blanco
showlegend = FALSE, # Eliminar la leyenda ya que no es necesaria
annotations = list( # Agregar las etiquetas sobre las barras con los valores
list(
x = ~region,
y = ~ventas_total,
text = paste0(round(Adidas$ventas_total / 1000000, 1), "M"), # Convertir a millones y agregar 'M'
showarrow = FALSE,
font = list(size = 12, color = 'black')
)
),
margin = list(t = 80) # Ajustar el margen superior para evitar que el título se corte
)
# Mostrar el gráfico
grafico_barras_adidas
El gráfico muestra las ventas totales por producto de Adidas en dólares, donde los productos de ropa masculina y calzado deportivo masculino lideran con más de 20 millones de dólares en ventas. Los calzados femeninos siguen con aproximadamente 18 millones de dólares, mientras que los productos de ropa y calzado deportivo femenino tienen las ventas más bajas, pero aún superando los 10 millones de dólares. ##Análisis de Rentabilidad
library(dplyr)
# Cargar librerías necesarias
library(dplyr)
# Crear la columna 'Rentabilidad' en Adidas
Adidas_clean <- Adidas %>%
mutate(Rentabilidad = (utilidad_operativa / ventas_total) * 100)
# Verificar la estructura de la nueva base de datos
str(Adidas_clean)
## tibble [9,648 × 12] (S3: tbl_df/tbl/data.frame)
## $ distribuidor : chr [1:9648] "Foot Locker" "Foot Locker" "Foot Locker" "Foot Locker" ...
## $ region : chr [1:9648] "Northeast" "Northeast" "Northeast" "Northeast" ...
## $ estado : chr [1:9648] "New York" "New York" "New York" "New York" ...
## $ ciudad : chr [1:9648] "New York" "New York" "New York" "New York" ...
## $ producto : chr [1:9648] "Men's Street Footwear" "Men's Athletic Footwear" "Women's Street Footwear" "Women's Athletic Footwear" ...
## $ precio_unidad : num [1:9648] 50 50 40 45 60 50 50 50 40 45 ...
## $ unidades_vendidas : num [1:9648] 1200 1000 1000 850 900 1000 1250 900 950 825 ...
## $ ventas_total : num [1:9648] 60000 50000 40000 38250 54000 ...
## $ utilidad_operativa: num [1:9648] 30000 15000 14000 13388 16200 ...
## $ margen_operativo : num [1:9648] 0.5 0.3 0.35 0.35 0.3 0.25 0.5 0.3 0.35 0.35 ...
## $ metodo_venta : chr [1:9648] "In-store" "In-store" "In-store" "In-store" ...
## $ Rentabilidad : num [1:9648] 50 30 35 35 30 25 50 30 35 35 ...
# Agrupar por producto y calcular los totales de ventas, utilidad y rentabilidad promedio
rentabilidad_por_producto <- Adidas_clean %>%
group_by(producto) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Utilidad_Operativa = sum(utilidad_operativa, na.rm = TRUE),
Rentabilidad_Promedio = mean(Rentabilidad, na.rm = TRUE)
)
# Ver el resultado
print(rentabilidad_por_producto)
## # A tibble: 6 × 4
## producto Ventas_Totales Utilidad_Operativa Rentabilidad_Promedio
## <chr> <dbl> <dbl> <dbl>
## 1 Men's Apparel 16520632 6381405. 41.3
## 2 Men's Athletic Footwe… 20577180 7437457. 40.3
## 3 Men's Street Footwear 27680769 11629046. 44.6
## 4 Women's Apparel 23870985 9685221. 44.1
## 5 Women's Athletic Foot… 14315521 5597822. 42.4
## 6 Women's Street Footwe… 17201563 6494017. 41.0
# Crear gráfico de barras de rentabilidad promedio por producto con etiquetas de datos
ggplot(rentabilidad_por_producto, aes(x = reorder(producto, Rentabilidad_Promedio), y = Rentabilidad_Promedio, fill = producto)) +
geom_bar(stat = "identity") + # Barras de las rentabilidades
coord_flip() + # Girar el gráfico para que las etiquetas sean legibles
scale_fill_brewer(palette = "Set2") + # Colores agradables
labs(title = "Rentabilidad Promedio por Producto",
x = "Producto",
y = "Rentabilidad Promedio (%)") +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
legend.position = "none" # Eliminar la leyenda
) +
# Agregar etiquetas de datos sobre las barras
geom_text(aes(label = round(Rentabilidad_Promedio, 1)), hjust = -0.2, color = "black", size = 4)
El gráfico muestra la rentabilidad promedio por producto de Adidas, destacando que los productos de ropa masculina y calzado masculino y femenino tienen una rentabilidad similar, rondando el 40%. Los productos de ropa femenina y calzado deportivo femenino tienen una rentabilidad ligeramente inferior pero aún considerable, alrededor del 30-35%. Esto sugiere que, en general, la rentabilidad de los productos de Adidas está bastante equilibrada entre las diferentes categorías, con una ligera ventaja para las líneas de ropa y calzado masculino, aunque la diferencia no es significativa. Este comportamiento puede indicar que Adidas mantiene una estrategia eficiente de precios y márgenes a través de sus diferentes líneas de productos. ## Distribución de ventas por método de venta
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
library(dplyr)
library(plotly)
# Limpiar caracteres especiales en la columna 'metodo_venta'
Adidas$metodo_venta <- gsub("[^[:print:]]", "", Adidas$metodo_venta) # Eliminar caracteres no imprimibles
Adidas$metodo_venta <- gsub("[\n\t\r]", " ", Adidas$metodo_venta) # Eliminar saltos de línea y tabulaciones
# Asegurarse de que la columna 'metodo_venta' esté en UTF-8
Adidas$metodo_venta <- iconv(Adidas$metodo_venta, from = "latin1", to = "UTF-8", sub = " ")
# Crear gráfico de torta para mostrar la distribución de ventas por método de venta
grafico_torta <- Adidas %>%
group_by(metodo_venta) %>%
summarise(Ventas_Totales = sum(ventas_total)) %>%
plot_ly(labels = ~metodo_venta, values = ~Ventas_Totales, type = 'pie',
marker = list(colors = c('#003366', '#00BFFF', '#1E90FF', '#4682B4'))) %>%
layout(title = "Distribución de Ventas por Método de Venta")
# Mostrar el gráfico
grafico_torta
El gráfico de pie muestra la distribución de las ventas de Adidas según el método de venta utilizado. Se observa que el 37.4% de las ventas provienen de ventas online, lo que refleja el crecimiento de las compras a través de plataformas digitales. El 32.9% de las ventas se realiza en outlets, lo que sugiere una estrategia orientada a ofrecer productos a precios más bajos para atraer a los consumidores en busca de descuentos. Finalmente, el 29.7% de las ventas proviene de tiendas físicas, lo que indica que las ventas en puntos de venta siguen siendo importantes, aunque con una menor proporción en comparación con los canales online y outlet. Esto resalta la importancia de mantener una estrategia de ventas multicanal, optimizando tanto los canales digitales como los físico
# Crear gráfico con ggplot2 de precio por unidad y unidades vendidas
library(ggplot2)
# Calcular la correlación entre precio_unidad y unidades_vendidas
correlation_value <- cor(Adidas$precio_unidad, Adidas$unidades_vendidas)
# Crear gráfico
ggplot(Adidas, aes(x = precio_unidad, y = unidades_vendidas)) +
geom_point(color = "black", size = 3) + # Puntos de dispersión
geom_smooth(method = "lm", color = "blue", size = 1) + # Línea de regresión lineal
theme_minimal() + # Estilo minimalista
labs(title = paste("Relación entre Precio por Unidad y Unidades Vendidas\nCorrelación: ", round(correlation_value, 2)), # Título con la correlación
x = "Precio por Unidad", # Título del eje X
y = "Unidades Vendidas") # Título del eje Y
La gráfica muestra que aunque hay una relación positiva entre el precio y las unidades vendidas, la correlación es baja, lo que sugiere que otros factores además del precio están influyendo en las unidades vendidas.
Gráfico de barras
# Cargar librerías necesarias
library(dplyr)
library(ggplot2)
library(scales) # Agregar esta línea para usar la función 'percent()'
# Calcular participación por producto
ventas_producto <- Adidas %>%
group_by(producto) %>%
summarise(ventas_totales = sum(ventas_total, na.rm = TRUE)) %>%
mutate(porcentaje = ventas_totales / sum(ventas_totales))
# Crear gráfico de torta con tamaño de texto ajustado
ggplot(ventas_producto, aes(x = "", y = porcentaje, fill = producto)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
geom_text(aes(label = percent(porcentaje)), # Ahora 'percent()' debería funcionar correctamente
position = position_stack(vjust = 0.5),
color = "white",
size = 3.5) + # Reducir el tamaño de la fuente
scale_fill_brewer(palette = "Set2") +
labs(title = "Participación de Ventas por Producto",
fill = "Producto") +
theme_void() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5) # Título centrado y en negrita
)
##Utilidad Operativa por Producto
# Cargar librería "scales" para formatear los números
library(scales)
# Crear gráfico de barras para Utilidad Operativa por Producto sin notación científica
ggplot(Adidas, aes(x = reorder(producto, utilidad_operativa), y = utilidad_operativa, fill = producto)) +
geom_bar(stat = "identity") +
coord_flip() + # Girar el gráfico para facilitar la lectura de los nombres de los productos
scale_fill_brewer(palette = "Set2") + # Colores más agradables
scale_y_continuous(labels = label_comma()) + # Formatear los números sin notación científica
labs(
title = "Utilidad Operativa por Producto",
x = "Producto",
y = "Utilidad Operativa (Miles de Dólares)"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
legend.position = "none" # Eliminar la leyenda
)
El gráfico muestra la utilidad operativa de cada producto de Adidas. Los productos con barras más altas, como “Men’s Street Footwear”, generan mayores ganancias, mientras que otros, como “Women’s Athletic Footwear”, tienen utilidades más bajas. Esto permite identificar los productos más rentables y enfocar esfuerzos en mejorar los menos rentables.
# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)
# Calcular el margen operativo promedio por distribuidor
margen_promedio <- Adidas %>%
group_by(distribuidor) %>%
summarise(margen_operativo_promedio = mean(margen_operativo, na.rm = TRUE))
# Crear la gráfica de barras con etiquetas negras dentro de las barras para el margen operativo promedio por distribuidor
ggplot(margen_promedio, aes(x = reorder(distribuidor, margen_operativo_promedio), y = margen_operativo_promedio)) +
geom_bar(stat = "identity", fill = "#00BFFF", width = 0.6) + # Ancho de las barras ajustado
coord_flip() + # Girar las barras para mejor visibilidad
geom_text(aes(label = round(margen_operativo_promedio, 2)),
color = "black", size = 3, hjust = 0.5, vjust = 0.5) + # Etiquetas negras centradas dentro de las barras
theme_minimal() + # Estilo minimalista
labs(title = "Margen Operativo Promedio por Distribuidor", # Título
x = "Distribuidor", # Título del eje X
y = "Margen Operativo Promedio") # Título del eje Y
theme(
plot.margin = margin(1, 2, 1, 1, "cm"), # Ajuste del margen para evitar corte
axis.text = element_text(size = 8) # Reducir tamaño de los textos del eje
)
## <theme> List of 2
## $ axis.text : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : num 8
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi FALSE
## $ plot.margin: <ggplot2::margin> num [1:4] 1 2 1 1
## @ complete: logi FALSE
## @ validate: logi TRUE
El análisis del desempeño comercial y la rentabilidad de Adidas revela que la región Oeste es la de mayor rendimiento en ventas, seguida por las regiones Noreste y Sureste, mientras que el Sur y Midwest muestran un rendimiento relativamente bajo. En términos de productos, Men’s Street Footwear y Men’s Apparel lideran las ventas, mientras que los productos femeninos tienen una participación menor en las ventas totales, aunque aún significativas. La rentabilidad promedio es alta en productos masculinos, con un rendimiento más bajo en categorías de calzado y ropa femenina. La venta online emerge como el canal más lucrativo, reflejando el cambio hacia las compras digitales.
Se recomienda fortalecer la estrategia de ventas en el Sur y Midwest, mediante campañas de marketing y expansión de canales de distribución. Además, sería valioso optimizar las líneas de productos femeninos, tanto en precios como en márgenes operativos, para aumentar su rentabilidad. Dado el crecimiento de las ventas online, es clave invertir más en este canal, mientras se mantiene un equilibrio con las ventas en outlets y tiendas físicas. También, enfocar esfuerzos en los productos masculinos de alto rendimiento podría continuar consolidando a Adidas en el mercado.