Explorando y describiendo datos de ventas.

Cargar las librerías

  • Utilizar {r warning=FALSE, message=FALSE}
  • Para que no muestre mensajes y warnings
library(readr)     # Para leer datos
library(lubridate) # Para fechas y Times
library(anytime)   # Para fechas y Times
library(dplyr)     # Para filters(), select(),...mutate(), arrange()...  

Cargar los datos

ventas <- read_csv("~/Mis clases ITD/Semestre Enero Junio 2020/Analisis Inteligente de Datos/datos/retail-sales/Sales.csv")

ventas <- as.data.frame(ventas) # Es un data frame

head(ventas) # los primeros seis registros
##             Folio             Hora   Total    Pago Cajero
## 1 LBVT18010004435 01/05/2018 12:36 1121.20 1121.20  MAYTE
## 2 LBVT18010004436 01/05/2018 12:37   18.50   20.00  MAYTE
## 3 LBVT18010004437 01/05/2018 12:38  160.00  200.00  MAYTE
## 4 LBVT18010004438 01/05/2018 12:47  397.50  397.50  MAYTE
## 5 LBVT18010004439 01/05/2018 12:48   22.00   50.00  MAYTE
## 6 LBVT18010004440 01/05/2018 12:53 1314.19 1314.19  MAYTE
tail(ventas) # los últimos seis registros
##                 Folio             Hora Total  Pago    Cajero
## 84876 LBVT18070002268 31/08/2018 16:58 43.80 50.00 JAQUELINE
## 84877 LBVT18070002269 31/08/2018 17:03 16.32 16.32 JAQUELINE
## 84878 LBVT18070002270 31/08/2018 17:04 28.32 28.32 JAQUELINE
## 84879 LBVT18070002271 31/08/2018 17:06 21.36 50.00 JAQUELINE
## 84880 LBVT18070002272 31/08/2018 17:27 50.00 50.00 JAQUELINE
## 84881 LBVT18070002273 31/08/2018 17:36 30.14 50.00 JAQUELINE

Limpiar la variable Hora de ventas

  • Crear con la descomposición de la variable Hora de ventas
  • El propósito es tener mejor control de un dato tipo date() y/o datetime()
  • Por medio de la función substr(), extraer los caraceres adecuados de la variabe Hora, dejar la Hora en una variable nueva llamada fechas y a partir de ésta, variable extraer año, mes, dia, hora, minutos.
  • Mediate as.numeric() convertir a formato numérico cada variable
  • Se muestran con head() solo los primeros seis regisros
fechas <- ventas$Hora
# fechas y horas con todos los caracteres
head(fechas)
## [1] "01/05/2018 12:36" "01/05/2018 12:37" "01/05/2018 12:38" "01/05/2018 12:47"
## [5] "01/05/2018 12:48" "01/05/2018 12:53"
fagnio <- as.numeric(substr(fechas, 7,10))
head(fagnio)
## [1] 2018 2018 2018 2018 2018 2018
fmes <- as.numeric(substr(fechas, 4,5))
head(fmes)
## [1] 5 5 5 5 5 5
fdia <- as.numeric(substr(fechas, 1,2))
head(fdia)
## [1] 1 1 1 1 1 1
fhora <- as.numeric(substr(fechas, 12,13))
head(fhora)
## [1] 12 12 12 12 12 12
fminuto <- as.numeric(substr(fechas, 15,16))
head(fminuto)
## [1] 36 37 38 47 48 53
# Generar el formato fecha para su mejor tratamientofechahora
fecha.y.hora <- make_datetime(year = fagnio, 
                          month = fmes, 
                          day=fdia,
                          hour=fhora,
                          min=fminuto)
head(fecha.y.hora)
## [1] "2018-05-01 12:36:00 UTC" "2018-05-01 12:37:00 UTC"
## [3] "2018-05-01 12:38:00 UTC" "2018-05-01 12:47:00 UTC"
## [5] "2018-05-01 12:48:00 UTC" "2018-05-01 12:53:00 UTC"

Transforar la variable Hora para generar nuevas variables en ventas

ventas <- mutate(ventas, agnio = fagnio, mes = fmes, dia = fdia, hora=fhora, minuto=fminuto, fechahora = fecha.y.hora)

head(ventas)
##             Folio             Hora   Total    Pago Cajero agnio mes dia hora
## 1 LBVT18010004435 01/05/2018 12:36 1121.20 1121.20  MAYTE  2018   5   1   12
## 2 LBVT18010004436 01/05/2018 12:37   18.50   20.00  MAYTE  2018   5   1   12
## 3 LBVT18010004437 01/05/2018 12:38  160.00  200.00  MAYTE  2018   5   1   12
## 4 LBVT18010004438 01/05/2018 12:47  397.50  397.50  MAYTE  2018   5   1   12
## 5 LBVT18010004439 01/05/2018 12:48   22.00   50.00  MAYTE  2018   5   1   12
## 6 LBVT18010004440 01/05/2018 12:53 1314.19 1314.19  MAYTE  2018   5   1   12
##   minuto           fechahora
## 1     36 2018-05-01 12:36:00
## 2     37 2018-05-01 12:37:00
## 3     38 2018-05-01 12:38:00
## 4     47 2018-05-01 12:47:00
## 5     48 2018-05-01 12:48:00
## 6     53 2018-05-01 12:53:00

Ordenar conforme las variables año mes, dia hora minuto ascendente.

  • Se utiliza la variable fechahora
  • Ver los primeros seis y últimos seis registros ordenados
ventas <- arrange(ventas, fechahora)
head(ventas)
##             Folio             Hora  Total Pago     Cajero agnio mes dia hora
## 1 LBVT18020018825 01/05/2018 07:46  88.85  100 ALE HUERTA  2018   5   1    7
## 2 LBVT18020018826 01/05/2018 07:53 183.75  200 ALE HUERTA  2018   5   1    7
## 3 LBVT18020018827 01/05/2018 07:58 497.18  500 ALE HUERTA  2018   5   1    7
## 4 LBVT18020018828 01/05/2018 08:13  11.50   12 ALE HUERTA  2018   5   1    8
## 5 LBVT18020018829 01/05/2018 08:14 200.00  200 ALE HUERTA  2018   5   1    8
## 6 LBVT18020018830 01/05/2018 08:16 177.20  500 ALE HUERTA  2018   5   1    8
##   minuto           fechahora
## 1     46 2018-05-01 07:46:00
## 2     53 2018-05-01 07:53:00
## 3     58 2018-05-01 07:58:00
## 4     13 2018-05-01 08:13:00
## 5     14 2018-05-01 08:14:00
## 6     16 2018-05-01 08:16:00
tail(ventas)
##                 Folio             Hora  Total   Pago     Cajero agnio mes dia
## 84876 LBVT18020048670 31/08/2018 20:59 112.50 120.00 ROSI MEJIA  2018   8  31
## 84877 LBVT18020048671 31/08/2018 21:03 344.80 345.00 ROSI MEJIA  2018   8  31
## 84878 LBVT18020048672 31/08/2018 21:06 154.80 205.00 ROSI MEJIA  2018   8  31
## 84879 LBVT18030071088 31/08/2018 21:06 585.65 585.65 ALE HUERTA  2018   8  31
## 84880 LBVT18030071089 31/08/2018 21:07 112.70 112.70 ALE HUERTA  2018   8  31
## 84881 LBVT18030071090 31/08/2018 21:13 162.70 162.70 ALE HUERTA  2018   8  31
##       hora minuto           fechahora
## 84876   20     59 2018-08-31 20:59:00
## 84877   21      3 2018-08-31 21:03:00
## 84878   21      6 2018-08-31 21:06:00
## 84879   21      6 2018-08-31 21:06:00
## 84880   21      7 2018-08-31 21:07:00
## 84881   21     13 2018-08-31 21:13:00

Interpretación de las ventas de cuerdo a fechahora

  • Las ventas inician con fecha: 2018-05-01 07:46:00
  • Las ventas terminan con fecha: 2018-08-31 21:13:00
  • Del 1 de Mayo del 2018 al 31 de Agosto 2018

Agrupando datos por mes de ventas

totalespormes <- data.frame(ventas %>% 
  group_by(month(fechahora)) %>%
  summarize(frec = n(), total = sum(Total)))

totalespormes
##   month.fechahora.  frec   total
## 1                5 20348 3748978
## 2                6 19838 3749558
## 3                7 21607 4197541
## 4                8 23088 4412733

Visualizando la frecuencia por mes de las ventas

barplot(totalespormes$frec, names.arg = month.name[5:8])

Visualizando los totales por mes de las ventas

barplot(totalespormes$total, names.arg = month.name[5:8])

Totales por Cajero

Agrupando datos por cajero de ventas

  • Agrupar por cajero
  • Ordenar por frecuencia
totalesporcajero <- data.frame(ventas %>% 
  group_by(Cajero) %>%
  summarize(frec = n(), total = sum(Total)))

totalesporcajero <- arrange(totalesporcajero, desc(frec))
totalesporcajero
##           Cajero  frec      total
## 1       MARICRUZ 11885 2377528.60
## 2    JUAN MARTIN 10287 2043433.47
## 3     ALE HUERTA 10215 2121820.22
## 4     FERNANDO C 10089 2051828.96
## 5    JESUS PEREZ  6739 1307989.69
## 6          MAYTE  5565 1126737.82
## 7     ROSI MEJIA  4934 1030549.23
## 8       MONSE L.  4236  383628.75
## 9          JANET  3594  681716.26
## 10        MIRIAM  3241  674795.88
## 11    GABY LUCIO  2591  555617.24
## 12          LINA  2367  496577.05
## 13        SARAHY  2103  161650.91
## 14     JAQUELINE  1792  205634.67
## 15      ALE DIAZ  1488  321807.38
## 16     EDUARDO V  1265  215377.09
## 17 MIRIAM LANDIN   906  193589.88
## 18       CLAUDIA   783   47937.92
## 19          MAGO   490   43925.29
## 20        ELI C.   188   46397.50
## 21       EDUARDO   123   20266.48

Visualziando totales y frecuencias por cajero

barplot(totalesporcajero$frec, names.arg = totalesporcajero$Cajero)

Interpretación

  • 200 palabras de interpretación ….
  • Pendiente