INTRODUCCION

1) Entorno de trabajo

Antes de explorar los datos, se configura el entorno de trabajo. Se configura el entorno de trabajo instalando readr, ggplot2, pastecs, patchwork, dplyr, plotly y el dataset transactions.csv. Nota: Reemplazar la ruta de acceso al archivo csv.

library(readr)
library(ggplot2)
library(pastecs)
library(patchwork)
library(dplyr)
library(plotly)
transactions <- read_delim("/Users/anadinezio/Downloads/CA_Clase 2/Transactions.csv", 
                       delim = ";", escape_double = FALSE,trim_ws = TRUE)

2) Exploracion del dataset

La exploración inicial es fundamental para guiar los siguientes pasos del análisis. Las funciones a continuacion son para responder preguntas básicas como:

¿Qué tipo de información contiene el conjunto de datos? ¿Cuáles son los valores típicos de cada variable? ¿Hay valores inusuales o inesperados? ¿Cuántos datos tenemos para trabajar?

head(transactions)    # Muestra las primeras filas de la tabla, da un vistazo rápido de cómo se ven los datos.
## # A tibble: 6 × 7
##   orderId clientId product gender orderdate  Quantity Price
##     <dbl>    <dbl> <chr>   <chr>  <chr>         <dbl> <dbl>
## 1       1      255 g       female 03/01/2017        3     5
## 2       1      255 a       female 03/01/2017        3    14
## 3       1      255 b       female 03/01/2017        3    22
## 4       1      255 a       female 03/01/2017        1    14
## 5       2      145 h       male   05/01/2017        1    26
## 6       2      145 h       male   05/01/2017        1    26
tail(transactions)    # Muestra las últimas filas, puede ser útil para ver si hay algún patrón o anomalía al final del conjunto de datos.
## # A tibble: 6 × 7
##   orderId clientId product gender orderdate  Quantity Price
##     <dbl>    <dbl> <chr>   <chr>  <chr>         <dbl> <dbl>
## 1     999      241 i       female 13/03/2017        2    32
## 2    1000      235 e       female 03/02/2017        2    30
## 3    1000      235 b       female 03/02/2017        1    22
## 4    1000      235 f       female 03/02/2017        1    24
## 5    1000      235 h       female 03/02/2017        1    26
## 6    1000      235 g       female 03/02/2017        2     5
summary(transactions) # Resumen estadístico de cada columna (media, rango, etc.).
##     orderId          clientId       product             gender         
##  Min.   :   1.0   Min.   :  1.0   Length:4805        Length:4805       
##  1st Qu.: 261.0   1st Qu.: 72.0   Class :character   Class :character  
##  Median : 510.0   Median :143.0   Mode  :character   Mode  :character  
##  Mean   : 504.6   Mean   :148.7                                        
##  3rd Qu.: 750.0   3rd Qu.:224.0                                        
##  Max.   :1000.0   Max.   :300.0                                        
##   orderdate            Quantity         Price     
##  Length:4805        Min.   :1.000   Min.   : 5.0  
##  Class :character   1st Qu.:1.000   1st Qu.:12.0  
##  Mode  :character   Median :2.000   Median :14.0  
##                     Mean   :1.977   Mean   :18.2  
##                     3rd Qu.:3.000   3rd Qu.:26.0  
##                     Max.   :3.000   Max.   :32.0
str(transactions)     # Estructura de los datos (tipo de cada columna y valores).
## spc_tbl_ [4,805 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ orderId  : num [1:4805] 1 1 1 1 2 2 2 2 3 3 ...
##  $ clientId : num [1:4805] 255 255 255 255 145 145 145 145 241 241 ...
##  $ product  : chr [1:4805] "g" "a" "b" "a" ...
##  $ gender   : chr [1:4805] "female" "female" "female" "female" ...
##  $ orderdate: chr [1:4805] "03/01/2017" "03/01/2017" "03/01/2017" "03/01/2017" ...
##  $ Quantity : num [1:4805] 3 3 3 1 1 1 1 1 3 2 ...
##  $ Price    : num [1:4805] 5 14 22 14 26 26 14 26 12 5 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   orderId = col_double(),
##   ..   clientId = col_double(),
##   ..   product = col_character(),
##   ..   gender = col_character(),
##   ..   orderdate = col_character(),
##   ..   Quantity = col_double(),
##   ..   Price = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
ncol(transactions)    # Número de columnas (variables).
## [1] 7
nrow(transactions)    # Número de filas (observaciones).
## [1] 4805

El campo de fecha es de tipo char, se transforma a tipo date:

transactions$orderdate <- as.Date(transactions$orderdate, format = "%d/%m/%Y")
str(transactions)
## spc_tbl_ [4,805 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ orderId  : num [1:4805] 1 1 1 1 2 2 2 2 3 3 ...
##  $ clientId : num [1:4805] 255 255 255 255 145 145 145 145 241 241 ...
##  $ product  : chr [1:4805] "g" "a" "b" "a" ...
##  $ gender   : chr [1:4805] "female" "female" "female" "female" ...
##  $ orderdate: Date[1:4805], format: "2017-01-03" "2017-01-03" ...
##  $ Quantity : num [1:4805] 3 3 3 1 1 1 1 1 3 2 ...
##  $ Price    : num [1:4805] 5 14 22 14 26 26 14 26 12 5 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   orderId = col_double(),
##   ..   clientId = col_double(),
##   ..   product = col_character(),
##   ..   gender = col_character(),
##   ..   orderdate = col_character(),
##   ..   Quantity = col_double(),
##   ..   Price = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>

Missing data

Detectar si hay algun missing data (“NA)

rowSums(is.na(transactions)) # Cantidad de Missing por Filas
##    [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##   [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##   [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [297] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [371] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [408] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [445] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [482] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [519] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [556] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [593] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [630] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [667] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [704] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [741] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [778] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [815] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [852] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [889] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [926] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [963] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1000] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1037] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1074] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1111] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1148] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1185] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1222] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1259] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1296] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1333] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1370] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1407] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1444] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1481] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1518] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1555] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1592] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1629] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1666] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1703] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1740] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1777] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1814] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1851] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1888] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1925] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1962] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1999] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2036] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2073] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2110] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2147] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2184] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2221] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2258] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2295] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2332] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2369] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2406] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2443] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2480] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2517] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2554] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2591] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2628] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2665] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2702] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2739] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2776] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2813] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2850] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2887] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2924] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2961] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [2998] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3035] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3072] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3109] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3146] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3183] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3220] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3257] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3294] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3331] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3368] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3405] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3442] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3479] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3516] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3553] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3590] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3627] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3664] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3701] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3738] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3775] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3812] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3849] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3886] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3923] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3960] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [3997] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4034] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4071] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4108] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4145] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4182] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4219] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4256] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4293] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4330] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4367] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4404] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4441] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4478] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4515] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4552] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4589] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4626] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4663] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4700] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4737] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [4774] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
colSums(is.na(transactions)) # Cantidad de Missing por Columnas
##   orderId  clientId   product    gender orderdate  Quantity     Price 
##         0         0         0         0         0         0         0

Funciones estadisticas para analizar las variables cantidad y precio

Promedio de cada variable numerica

mean(transactions$orderId) 
## [1] 504.6239
mean(transactions$Quantity)
## [1] 1.976691
mean(transactions$Price) 
## [1] 18.20333

Se observa una media de cantidad de 1.97 (casi 2) y un precio medio de compra de 18.20. La verdad que no tiene mucho sentido analizar el orderID, de aqui en adelante solo se analiza cantidad y precio.

Varianza, desvio standar y otros parametros estadisticos

# Varianza
var(transactions$Quantity)
## [1] 0.6688987
var(transactions$Price)
## [1] 78.58292
# Desvio Estandar
sd(transactions$Quantity)
## [1] 0.8178623
sd(transactions$Price)
## [1] 8.864701
# Summary 
summary(transactions$Quantity) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   2.000   1.977   3.000   3.000
summary(transactions$Price) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     5.0    12.0    14.0    18.2    26.0    32.0
max(transactions$orderdate)
## [1] "2017-04-11"
min(transactions$orderdate)
## [1] "2017-01-02"

Resumen: El conjunto de datos esta formado por 7 columnas y 4805 filas. Las variables o las columnas son : orderID, clientID, product, gender, orderdate, Quantity y Price.
Se trata de un conjunto de datos de una tienda que vente 9 tipos de productos, cuyos precios van de 5 a 32 (vamos a suponer euros).
Los datos estan registrados en un rango temporal de “2017-04-11” a “2017-01-02”.

Analisis de la variable Cantidad:

El valor medio es 2, con un minimo de 1 y un maximo de 3. A partir del valor del valor relativamente bajo de varianza (0.668) y de los valores extremos se puede concluir que la cantidad de productos comprados en cada transacción no varía mucho. La mayoría de las compras probablemente se concentran alrededor del promedio de cantidad (2) o simplemente entre 1 y 3.
Consistencia: Las transacciones tienden a ser bastante consistentes en términos de la cantidad de productos adquiridos.

Analisis de la variable Precio:

El valor medio es de 18.2, con un minimo de 5 y un maximo de 32. El valro de varianza mas alto, en comparacion con la cantidad, indica que los precios de los productos comprados varían considerablemente. Hay una mayor diversidad en los precios de los artículos en las transacciones. Rango Amplio: Los precios pueden oscilar entre valores bajos y altos, lo que sugiere una gama más amplia de productos con diferentes costos.

Hay mas dispersion en los datos de precio que de cantidad..

No hay missing data (“NA”) en el conjunto de datos.

DESARROLLO

Despues de entender que tipo de datos estamos trabajando, se incorporan las visualizaciones a la exploracion de los datos (EDA). ### Histograma Con el uso de histogramas se puede verificar la hipotesis acerca del porque de la varianza de la cantidad.

library(patchwork)

# Histograma 1
p1 <- ggplot(transactions, aes(x = Quantity)) +
  geom_histogram() +
  labs(title = "Histograma de Cantidad")

# Histograma 2
p2 <- ggplot(transactions, aes(x = Price)) +
  geom_histogram() +
  labs(title = "Histograma de Precio")

# Combinar los gráficos
p1 + p2

Grafico de barras.

Se pueden hacer muchos graficos de barras. Aprovechando que existe el campo genero, se grafica la cantidad de productos vendidos segun el genero. Esto nos permite analizar y entender que genero compra mas cantidad. En este caso el genero femenino compra mas cantidad que el masculino y particularmente, hay mayor frecuencia de compra de una unidad por parte de las mujeres, mientras que los hombres compan mas de a 3 unidades.

Se podria hacer lo mismo pero en lugar de graficar x = Quantity, utilizar x = Price para saber que genero compra

ggplot(data = transactions, aes(x = Quantity, fill = gender)) +
  geom_bar(position = "dodge") +  # Dodge bars to show side-by-side
  labs(title = "Count Quantity", subtitle=" by gender", x = "Quantity", y = "Count") +
  scale_fill_manual(values = c("female" = "lightpink", "male" = "lightblue"))  

Grafico de barras 2

Plot 1: Este grafico de barras muestra la cantidad de productos vendidos (altura de la barra) y el precio de cada uno de ellos (color de la barra)

Plot 2: Este grafico solo muestra los precios por producto.

Estos graficos nos permiten identificar los precios de los productos y los productos mas vendidos. El producto que mas se vende es “a” y el que menos se vende es el “c”. En cuanto al precio de los mismos, el producto “i” es el mas caro (32) y el mas barato es el “g”.

plot1 <- 
  ggplot(data = transactions, aes(x = product, fill = Price)) +
  geom_bar(position = "dodge") +  # Dodge bars to show side-by-side
  labs(title = "Product Sales Count" ,subtitle= "Product Price", x = "product", y = "Count", caption= "plot 1")

# geom col
product_summary <- transactions %>%
  group_by(product) %>%
  summarize(avg_price= mean(Price))

plot2 <-
  ggplot(data = product_summary, aes(x = product, y = avg_price, fill= product)) +
  geom_col()+
  labs(title = "Product Sales Count" ,subtitle= "Product Price", x = "product", y = "Price", caption = "plot 2")

# Combine plots, side by side
plot1 + plot2

CONCLUSION

El conjunto de datos analizado registra 4805 transacciones de una tienda que vende 9 productos diferentes, con precios que oscilan entre 5 y 32 euros. Los datos cubren un período desde el 2 de enero de 2017 hasta el 11 de abril de 2017.

Cantidad de Productos por Transacción:

La mayoría de las transacciones involucran la compra de 1 a 3 productos, con un promedio de casi 2 productos por compra. Esto indica una consistencia en el comportamiento de compra de los clientes.

Precios de los Productos:

Existe una amplia variedad en los precios de los productos, lo que sugiere una oferta diversa para diferentes presupuestos. El producto “i” es el más caro (32 euros) y el producto “g” es el más económico (5 euros).

Diferencias por Género: Las mujeres tienden a comprar más productos en general que los hombres, especialmente en cantidades individuales. Los hombres, por otro lado, tienden a comprar más productos en lotes de 3 unidades.

Productos Más Vendidos:

El producto “a” es el más popular, mientras que el producto “c” es el menos vendido.

Conclusiones Clave: Los clientes suelen comprar una cantidad limitada de productos por transacción. La tienda ofrece una amplia gama de precios para atraer a diferentes clientes. Existen diferencias en los patrones de compra entre hombres y mujeres. Algunos productos son significativamente más populares que otros.