Explorando y describiendo datos de ventas.

Cargar las librerías

  • Utilizar {r warning=FALSE, message=FALSE} para que no muestre mensajes ni advertencias.
#SE INSTALAN LOS PAQUETES (SI ES QUE NO SE TIENEN INSTALADOS)
#install.packages("readr")
library(readr)
#install.packages("lubridate")
library(lubridate)
#install.packages("anytime")
library(anytime)
#install.packages("dplyr")
library(dplyr)

Cargar los datos

En RUTA, reemplazar la ruta con su directorio de trabajo en donde se encuentre Sales.csv

ruta <- "/home/JD/Analisis inteligente de datos/Datos" #DEFINE LA RUTA EN DONDE ESTÁN LOS DATOS
setwd(ruta)    
ventas <- read_csv("Sales.csv")
## Parsed with column specification:
## cols(
##   Folio = col_character(),
##   Hora = col_character(),
##   Total = col_double(),
##   Pago = col_double(),
##   Cajero = col_character()
## )
tail(ventas) #Los últimos seis registros
## # A tibble: 6 x 5
##   Folio           Hora             Total  Pago Cajero   
##   <chr>           <chr>            <dbl> <dbl> <chr>    
## 1 LBVT18070002268 31/08/2018 16:58  43.8  50   JAQUELINE
## 2 LBVT18070002269 31/08/2018 17:03  16.3  16.3 JAQUELINE
## 3 LBVT18070002270 31/08/2018 17:04  28.3  28.3 JAQUELINE
## 4 LBVT18070002271 31/08/2018 17:06  21.4  50   JAQUELINE
## 5 LBVT18070002272 31/08/2018 17:27  50    50   JAQUELINE
## 6 LBVT18070002273 31/08/2018 17:36  30.1  50   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 caracteres 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 de fecha para su mejor tratamiento fechahora
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"

Transformar la variable Hora para generear nuevas variables en ventas

ventas <- mutate(ventas, agnio = fagnio, mes = fmes, dia = fdia, hora = fhora, minuto = fminuto, fechahora = fecha_y_hora)
head(ventas)
## # A tibble: 6 x 11
##   Folio Hora   Total  Pago Cajero agnio   mes   dia  hora minuto
##   <chr> <chr>  <dbl> <dbl> <chr>  <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 LBVT… 01/0… 1121.  1121. MAYTE   2018     5     1    12     36
## 2 LBVT… 01/0…   18.5   20  MAYTE   2018     5     1    12     37
## 3 LBVT… 01/0…  160    200  MAYTE   2018     5     1    12     38
## 4 LBVT… 01/0…  398.   398. MAYTE   2018     5     1    12     47
## 5 LBVT… 01/0…   22     50  MAYTE   2018     5     1    12     48
## 6 LBVT… 01/0… 1314.  1314. MAYTE   2018     5     1    12     53
## # … with 1 more variable: fechahora <dttm>

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

  • Se utiliza la variable fechahora
  • Ver los primeros seis head() y últimos seis tail() registros ordenados.
ventas <- arrange(ventas, fechahora)
head(ventas)
## # A tibble: 6 x 11
##   Folio Hora  Total  Pago Cajero agnio   mes   dia  hora minuto
##   <chr> <chr> <dbl> <dbl> <chr>  <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 LBVT… 01/0…  88.8   100 ALE H…  2018     5     1     7     46
## 2 LBVT… 01/0… 184.    200 ALE H…  2018     5     1     7     53
## 3 LBVT… 01/0… 497.    500 ALE H…  2018     5     1     7     58
## 4 LBVT… 01/0…  11.5    12 ALE H…  2018     5     1     8     13
## 5 LBVT… 01/0… 200     200 ALE H…  2018     5     1     8     14
## 6 LBVT… 01/0… 177.    500 ALE H…  2018     5     1     8     16
## # … with 1 more variable: fechahora <dttm>
tail(ventas)
## # A tibble: 6 x 11
##   Folio Hora  Total  Pago Cajero agnio   mes   dia  hora minuto
##   <chr> <chr> <dbl> <dbl> <chr>  <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 LBVT… 31/0…  112.  120  ROSI …  2018     8    31    20     59
## 2 LBVT… 31/0…  345.  345  ROSI …  2018     8    31    21      3
## 3 LBVT… 31/0…  155.  205  ROSI …  2018     8    31    21      6
## 4 LBVT… 31/0…  586.  586. ALE H…  2018     8    31    21      6
## 5 LBVT… 31/0…  113.  113. ALE H…  2018     8    31    21      7
## 6 LBVT… 31/0…  163.  163. ALE H…  2018     8    31    21     13
## # … with 1 more variable: fechahora <dttm>

Interpretación de las ventas de acuerdo 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 de 2018

Agrupando datos por mes de ventas

totalespormes <- data.frame(ventas %>% group_by(month(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespormes <- arrange(totalespormes, desc(total))
totalespormes
##   month.fechahora.  frec   total
## 1                8 23088 4412733
## 2                7 21607 4197541
## 3                6 19838 3749558
## 4                5 20348 3748978

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

Agrupando datos por día del mes de ventas

totalespordiam <- data.frame(ventas %>% group_by(day(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespordiam <- arrange(totalespordiam, desc(total))
totalespordiam
##    day.fechahora. frec    total
## 1              19 3209 634982.2
## 2              20 3030 613940.9
## 3               5 3054 599102.4
## 4               3 2859 598909.3
## 5               1 2896 598225.3
## 6              26 3127 598143.7
## 7              12 2895 596444.3
## 8              13 2861 581453.2
## 9              27 2886 553716.7
## 10              6 2831 544872.1
## 11             17 2954 534699.1
## 12             10 2801 530426.5
## 13             29 2674 526266.7
## 14              8 2716 525955.2
## 15             15 2763 525826.6
## 16             30 2681 523042.5
## 17              4 2669 508573.0
## 18             22 2844 496941.9
## 19              7 2702 496837.3
## 20             16 2650 496319.4
## 21             18 2613 493902.0
## 22             14 2598 487313.8
## 23             21 2745 482880.4
## 24             24 2616 482324.3
## 25             11 2555 472398.8
## 26              2 2591 467214.4
## 27              9 2533 461478.3
## 28             23 2549 456681.6
## 29             25 2600 442974.2
## 30             28 2452 427454.4
## 31             31 1927 349509.3

Visualizando la frecuencia por día del mes de las ventas

barplot(totalespordiam$frec, names.arg = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"))

Visualizando el total por día del mes de las ventas

barplot(totalespordiam$total, names.arg = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"))

Agrupando datos por día de ventas

totalespordia <- data.frame(ventas %>% group_by(day(fechahora),month(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespordia <- arrange(totalespordia, desc(total))
totalespordia
##     day.fechahora. month.fechahora. frec     total
## 1               19                8 1414 326963.96
## 2               26                8 1224 278824.30
## 3                3                6 1035 252807.49
## 4               12                8 1043 252637.99
## 5                5                8 1043 247912.24
## 6                1                7  989 243835.81
## 7               29                7  927 228395.92
## 8               10                6  971 223796.92
## 9               13                5  924 220230.52
## 10               6                5  938 217337.92
## 11               8                7  957 217023.96
## 12              27                5  939 213355.65
## 13              17                6 1050 212959.97
## 14              20                5  882 205145.87
## 15              15                7  892 204735.35
## 16              22                7  992 202843.19
## 17              24                6  851 192391.89
## 18              20                8  921 181989.98
## 19              18                8  848 170467.92
## 20               4                8  757 163600.78
## 21               7                7  765 162076.87
## 22              11                8  757 156810.84
## 23              16                6  766 154663.79
## 24              14                7  769 151641.28
## 25              30                6  722 148591.44
## 26              30                7  724 148183.60
## 27              13                8  729 147950.50
## 28              21                8  823 146588.39
## 29               9                7  712 144720.88
## 30               5                5  755 143837.33
## 31              18                6  614 143766.56
## 32               1                5  713 143370.63
## 33               6                8  718 142928.35
## 34              21                7  771 142575.34
## 35              23                7  689 141714.37
## 36              31                7  708 141014.31
## 37               2                6  725 138920.29
## 38               2                7  695 138426.26
## 39              14                5  655 137144.68
## 40              11                6  676 136190.31
## 41              27                8  767 133035.16
## 42              12                5  664 132893.27
## 43               9                6  696 132876.78
## 44               3                8  646 132302.87
## 45               7                5  697 131037.49
## 46              20                7  672 129177.59
## 47              25                6  661 128161.26
## 48               4                6  698 128131.44
## 49              26                5  699 127044.04
## 50              25                8  758 126689.54
## 51              17                8  675 126552.56
## 52              28                7  695 126526.89
## 53              23                6  640 125776.42
## 54              30                5  623 125314.18
## 55              16                7  652 123254.66
## 56               3                7  585 121335.07
## 57               1                8  652 118464.13
## 58              15                8  617 117876.52
## 59              28                5  656 117511.66
## 60              16                8  616 116334.66
## 61              21                5  616 116272.39
## 62              31                8  648 116025.64
## 63              27                7  594 114781.94
## 64              13                7  641 114133.10
## 65              15                5  673 113642.24
## 66              12                6  583 112849.60
## 67              10                8  654 112784.25
## 68              14                8  633 109328.58
## 69               4                5  606 108690.41
## 70               7                8  651 108593.31
## 71               8                8  596 108448.50
## 72               4                7  608 108150.40
## 73              24                7  604 107923.97
## 74              19                6  576 107558.37
## 75               5                7  629 106574.61
## 76              10                7  579 105788.81
## 77              19                5  630 105103.66
## 78              25                7  598 104293.43
## 79              26                6  617 104122.30
## 80              29                6  577 103261.78
## 81              22                8  704 102463.63
## 82              16                5  616 102066.33
## 83              17                7  605 101709.63
## 84               8                5  573 101356.14
## 85              30                8  612 100953.23
## 86               5                6  627 100778.26
## 87              13                6  567  99139.10
## 88               8                6  590  99126.59
## 89              29                8  596  98687.00
## 90               2                5  585  98419.29
## 91              12                7  605  98063.45
## 92              20                6  555  97627.45
## 93              22                5  556  97580.41
## 94               6                7  615  97356.20
## 95              18                7  611  96624.15
## 96              29                5  574  95922.01
## 97              23                5  576  95648.54
## 98               9                8  551  95414.66
## 99              19                7  589  95356.26
## 100              7                6  589  95129.64
## 101             28                8  586  95104.24
## 102             22                6  592  94054.71
## 103             23                8  644  93542.30
## 104             17                5  624  93476.97
## 105              1                6  542  92554.74
## 106             27                6  586  92543.98
## 107             31                5  571  92469.37
## 108              3                5  593  92463.90
## 109             24                8  619  92008.76
## 110              2                8  586  91448.59
## 111             11                7  548  91150.47
## 112             24                5  542  89999.65
## 113             15                6  581  89572.48
## 114             14                6  541  89199.31
## 115              9                5  574  88466.00
## 116             28                6  515  88311.64
## 117             11                5  574  88247.16
## 118             26                7  587  88153.07
## 119             10                5  597  88056.56
## 120              6                6  560  87249.67
## 121             25                5  583  83829.97
## 122             18                5  540  83043.39
## 123             21                6  535  77444.26

Visualizando la frecuencia por día de las ventas

barplot(totalespordia$frec)

Visualizando el total por día de las ventas

barplot(totalespordia$total)

Agrupando datos por hora de ventas

totalesporhora <- data.frame(ventas %>% group_by(hour(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalesporhora <- arrange(totalesporhora, desc(total))
totalesporhora
##    hour.fechahora. frec      total
## 1               20 8540 1813265.26
## 2               19 7771 1597126.93
## 3               14 7590 1513358.72
## 4               15 7528 1499100.52
## 5               13 6743 1447631.00
## 6               16 7715 1324470.19
## 7               18 6500 1279146.00
## 8               17 6898 1226373.05
## 9               12 5570 1130093.27
## 10              11 5887  960757.34
## 11              10 5217  784896.29
## 12               9 4057  648065.07
## 13              21 1832  479069.84
## 14               8 2515  358712.15
## 15               7  518   46744.66

Visualizando la frecuencia por hora de las ventas

barplot(totalesporhora$frec, names.arg = c("7","8","9","10","11","12","13","14","15","16","17","18","19","20","21"))

Visualizando el total por hora de las ventas

barplot(totalesporhora$total, names.arg = c("7","8","9","10","11","12","13","14","15","16","17","18","19","20","21"))

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

Visualizando totales y frecuencias por cajero

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

Interpretración personal

Analizamos un conjunto de datos proveniente muy probablemente de un comercio, ya que se manejan ventas. Tenemos los campos de: Folio, Hora, Total, Pago y Cajero. Pudimos observar que los últimos seis registros de ventas fueron el 31 de Septiembre de 2018 por la cajera Jacqueline.

Después de limpiar los datos de fecha, deduje que estos registros de ventas son de las fechas 2018-05-01 07:46:00 - 2018-08-31 21:13:00 (1 de Mayo del 2018 a 31 de Agosto de 2018). Los horarios del comercio son de 07:00-21:00.

Mes en el que más se vendió

El mes en el que más se vendió fue el mes de Agosto con $4,412,733 en 23,088 ventas.

Mes en el que menos se vendió

El mes en el que menos se vendió fue el mes de Mayo con $3,748,978 en 20,348 ventas.

Día en el que más se vendió

El día en el que más se vendió fue el 19 de Agosto del 2018 con $326,963.96 en 1,414 ventas.

Día en el que menos se vendió

El día en el que menos se vendió fue el 21 de Junio del 2018 con $77,444.26 en 535 ventas.

Hora en la que más se vendió

La hora en la que más se vendió fue a las 08:00 PM con un total de $1,813,265.26 en 8,540 ventas.

Hora en la que menos se vendió

La hora en la que menos se vendió fue a las 07:00 AM con un total de $46,744.66 en 518 ventas.

Cajero que más vendió

La cajera que más vendió fue Maricruz con un total de $2,377,528 en 11,855 ventas.

Cajero que menos vendió

El cajero que menos vendió fue Eduardo con un total de $20,266.48 en 123 ventas.