Introducción

En la empresa Supermercado Montserrat contiene una gran cantidad de boletas generadas por cada caja. Por lo consecuente que cada boleta corresponde a un cliente y a su vez tiene registra sus productos y su cantidad. Esta información es enviada a la central, donde es almacenada por años. Y en la misma central contienen la información contenido de sus bodegas en cada sucursal. Siendo que se obtiene la información de compra, no se sabe cuál es el producto que el cliente prefieren y su relación con la cantidad de que contiene la bodega. Por lo cual se requiere una forma visual que indique el consumo y contenido de abastecimiento de los productos en cada sucursal. Así poder comprar o trasladar los productos entre sus 35 sucursales, dependiendo a la preferencia de los clientes

Descripción de los datos

Cada sucursal contiene a lo menos 3 cajas en funcionamiento,Los datos son almacenados en la misma caja por una semana como máximo y luego son eliminadas en forma automática.

Por lo cual la cantidad de transacción son variadas de pendiendo de cada boleta, cada boleta (en su inicio) contiene la cantidad de registros que coresponde a la compra,cada archivo en la caja tiene un formatos de nombre con una exteccion numerica “IDC001”, que el número corresponde a la caja de la transaccion (001) y el nombre IDC corresponde el tipo de dato (Encriptados). Esta información se envía en forma automática al servidor master, que queda en un solo archivo HOCIDC.001, que HOCIDC corresponde el tipo de datos (Encriptados) Cuando el número supere el valor 30 son eliminados. Esto implica que la información en cada sucursal se almacenará por 1 mes.
Cada noche se procede a rescatar de ventas, esto implica obtener cada archivó en cada sucursal con el nombre de “HOCIDC.001” y copiándola a la central (Servidor repositorio) con el nombre de HOCIDC02.191112, el HOCIDC corresponde al tipo de dato (Encriptado), 02 corresponde a la sucursal y la extensión corresponde a la fecha.

Este archivo es leído y almacenados en AS400 en una sola tabla llamada “ventas.2019”

Esquema general de la información

Se obtendrá del Servidor AS400 las siguientes tablas Ventas.2019 y Locales
Definiciones de la tabla:

Archivo Ventas.2019

Columna Tipo Datos Descripción
CODLOC:
Código de local
Numérico (3) Corresponde a la enumeración de la sucursal
FECHA:
Fecha del registro
Date Fecha correspondiente al registro
HORA :
Hora que se realizó el registro
Time Corresponde a la hora que se realizó la transacción
SECCION:
Número de sección que corresponde al producto
Numérico(3) Corresponde al código relacional de la sección que pertenece. Estas secciones puede ser verdura , panadería , etc.
NOMSEC:
Nombre de la sección
text(30) Corresponde al nombre que pertenes el producto.
PLU:
numero de código del producto.
Numérico(18) Corresponde al códigos de productos(PLU)
NOMPLU:
Nombre del producto
texto (50) Corresponde al nombre del producto
CANTIDAD:
Cantidad de la compra
doublé(4,3) Corresponde a la cantidad e la compra, puede ser valor en entero o con decimales para los pasables
VALOR:
Valor del producto
Numérico (8) Valor que el cliente pago por el producto
TOTAL:
Total de boleta
Numérico (8) Valor que el cliente canse el total de su compra
* FOLIO:
Número de boleta
Numérico (12) Número de boleta o factura

Archivo Locales

Columna Tipo Datos Descripción
CODLOC
Código de local
Numérico (3) Corresponde a la enumeración de la sucursal
NOMSUP
Nombre de la sucursal
Text(15) Nombre de la sucursal
DIRSUP
Dirección de la sucursal
Text(50) La ubicacion de la sucursal

Archivo Bodegas

Columna Tipo Datos Descripción
CODLOC
Código de local
Numérico (3) Corresponde a la enumeración de la sucursal
PLU
Número de código del producto.
Numérico (18) Corresponde al códigos de productos(PLU)) sucursal
CANINV
Cantidad de la compra
Doublé(4,3) Corresponde a la cantidad e la compra, puede ser valor en entero o con decimales

Procesamiento

El archivo Ventas.2019 contiene las ventas del año 2019, revisando los datos no se encuentras datos vacíos, solo que exciten dos observaciones.

El nombre de la columna “CODLOC” contiene un carácter oculto que provoca una mala lectura de su nombre, por lo cual se realiza un renombramiento de esta columna.

El archivo Locales contiene los nombres de cada sucursal excepto el posicionamiento global (GPS), por lo tanto, se convierte en excel en office 2014 en un ambiente Windows. para añadir las nuevas columnas, LONGITUD y LATITUD de cada sucursal. La información de la ubicación GPS se usará con la herramienta de google maps.

Procesamiento de datos

Se importará la información del archivo Ventas.2019, se renombrará la columna CODLOC por motivo que se encuentra el carácter («) que no corresponde.
Para esto se utilizará la sintaxis: names(Ventas)[1]<-“CODLOC”

Se importara el archivo Locales.xlsx , donde se introdujo manualmente las coordenada geográficas ya que no se encontraba esta información en el registros

Se importará el archivo Bodega, Donde se encuentra la información de cada sucursal

Obtención

Se importa el archivo Ventas.2019,Quedando con el nombre del dataset Ventas y sus valores nulos en “na”.

Ventas <- read.csv2("Ventas.2019", na="na")

Se importa archivo locales,Quedando con el nombre del dataset Locales y sus valores nulos en “0”.
con los tipo de columnas : “numeric”, “text”, “text”,“numeric”, “numeric”.

Locales <- read_excel("Locales.xlsx", col_types = c("numeric", "text", "text","numeric", "numeric"), na = "0")

Se importa archivo bodegas,Quedando con el nombre del dataset Bodegas

Bodegas <- read.csv2("Bodegas")

Transformación

Se cambia en la tabla Ventas la columna CODLOC por el mismo nombre, ya que contiene un carácter incorrecto en su sintáis. .

names(Ventas )[1]<-"CODLOC"

Se cambia los nombres de posición de las columnas de la tabla bodegas, por motivo que se encuentran en pociones incorrectas.

names(Bodegas)[1]<-"CODLOC"
names(Bodegas)[2]<-"PLU"
names(Bodegas)[3]<-"CANTBODE"

Procesos

  • Se tuvo que analizar las cantidades registradas en las ventas, y las cantidades en bodegas
    Observando esta información nos encontramos que se podía unir ambas informaciones generando un porcentaje de compras y porcentaje existente en la bodega. de esta manera se podra mostrar un promedio que lo que se consumen y lo que contienen en la bodegas.

  • También se pudo obtener la media, la median de la muestra de los datos en cada sucursal.

Se agrupa la información de ventas entre las columnas local y PLU, sumando la cantidad.

VentaAgrupada  <- Ventas %>% filter(SECCION != 8) %>% select(CODLOC,PLU,NOMPLU,CANTIDAD)  %>% group_by(CODLOC,PLU,NOMPLU) %>% summarise(CANTIDAD = sum( CANTIDAD))

Se agrupa la información de Bodega entre las columnas local y PLU, sumando la cantidad y la columna con el nombre CANTBODE

BodegaAgrupada <- Bodegas %>% group_by(CODLOC,PLU) %>% summarise(CANTBODE = sum(CANTBODE))

Se unen ambas tablas “VentaAgrupada” y "BodegaAgrupada, la unión de deberá unir através de CODLOC y PLU.

Agrupado       <- left_join(VentaAgrupada,BodegaAgrupada,by=c("CODLOC","PLU"))

Construimos el porcentaje de diferencia entre las ventas y existencia en bodega.

Agrupado       <- mutate(Agrupado,Porsentaje= round(CANTBODE*100/CANTIDAD,0))

El porcentaje de sobre stock en la cadena de sucursales corresponde a los siguientes productos.

Agrupado %>% filter(Porsentaje>100) %>% select("Sucursal" = CODLOC,"Producto" = NOMPLU,"%" = Porsentaje,PLU)
## # A tibble: 2 x 4
## # Groups:   Sucursal, PLU [2]
##   Sucursal Producto        `%`          PLU
##      <int> <fct>         <dbl>        <dbl>
## 1        2 TOMATE GRANEL   117 201560000008
## 2        7 TOMATE GRANEL   262 201560000008

La tendencia del mayor consumo del producto en la cadena.

Obtener el código de PLU del mayor diferencia

PLUPRO    <- as.factor((Agrupado %>% filter(Porsentaje>100))[1:1,]$PLU)[1]

Seleccionamos el todos los productos con el PLUPRO, Luego lo unimos con la tabla **Locales* para tener los nombres de las sucursales

Registros <- Ventas %>% filter(PLU==PLUPRO) %>% select(CODLOC,NOMPLU,( CANTIDAD)) 
Registros <- left_join(Registros,Locales,by=c("CODLOC"))

Nombre del producto

Nombre    <- as.vector( Registros[1:1,]["NOMPLU"])

Graficamos las tendencias de consumo en la cadena del supermercado Montserrat.

ggplot(Registros, aes(x=NOMSUP, y=CANTIDAD,fill = NOMSUP)) + labs(x = "Sucursales",y="Cantidades",title ="Frecuencia consumo por los Clientes " , subtitle =Registros$NOMPLU[1] )+geom_boxplot()  + theme(axis.text.x  = element_text(angle=90, vjust=0.5),legend.position = "none")

Graficamos las tendencias de consumo en la cadena del supermercado Montserrat.
Lo cual se muestra que algarrobal es donde más frecuencia consumen los clientes y a subes en monjitas es el local que consume menos entres sus sucursales.

Ahora verificamos lo que contiene en las bodegas, con los consumos en los locales.
Para esto hay obtener los datos Agrupado y unirlo con los Locales

Resultado <- Agrupado %>% filter(PLU == PLUPRO)
Resultado <- left_join(Resultado,Locales ,by=c("CODLOC"))

Mostramos los datos de bodega conjunto al consumo de los clientes

  ggplot(Resultado) + geom_bar(aes(x=NOMSUP, y=CANTBODE), stat="identity", fill="Green", alpha=0.9) +
  geom_errorbar( aes(x=NOMSUP, ymin=Minimo25, ymax=Minimo75), width=0.4, colour="Black", alpha=0.9, size=1.3) +
  theme(axis.text.x = element_text(angle = 60, hjust = 1) )+
  labs(x = "Sucursales",y="Cantidades",title ="Consumo Clientas VS Bodega " , subtitle =Resultado$NOMPLU[1])

Se muestra que algarrobal contiene más en bodega, respecto a su consumo de los clientes # Resultados

Discusión

Respecto a la información entregada y los resultados mostrados, Se encontró lo esperado lo que la empresa requería obtener, se pudo demostrar la preferencia de consumo de los clientes. Dependiendo de la sucursal y demostrando la cantidad en exceso de producto que se encuentra de esta misma sucursal. Esto implico poder solicitar compras más controladas y distribuir dependiendo de la preferencia de los clientes.

Conclusión

Podemos mostrar que, en cada zona o sucursal, los clientes tienen cierta preferencia de insumos, además se pudo mejorar las perdidas por vencimiento ya que se podrá distribuir más eficientemente entre las sucursales atreves de las preferencias dependiendo de su sector

#conclucion personal

Referencias