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