1. Descripción del archivo de datos

La data que seleccioné para analizar para esta práctica del foro fue la de las transacciones con tarjetas de créditos. El archivo de datos a utilizar, de nombre credit_card_transaction_flow.csv, es un data.frame. Se trata de un archivo multivariable, con 50,000 observaciones y obtenido del la web <a href=“https://www.kaggle.com/datasets/rajatsurana979/comprehensive-credit-card-transactions-dataset”

La base de datos cuentas con las siguientes variables:

  • Customer ID: Identificador unico por cada cliente.
  • Name: Primer nombre del cliente.
  • Surname: Primer apellido del cliente.
  • Gender: Genero del cliente.
  • Birthdate: Fecha de nacimiento de cada cliente.
  • Tansaction Amount: El monto en dólares de cada transacción.
  • Date: Fecha en la que se produjo la transacción.
  • Merchant Name: El nombre del comerciante donde se realizó la transacción.
  • Category: Categorización de la transacción.

2. Selección

Con esta elección, busco explorar los hábitos de consumo de los clientes durante un período de tiempo utilizando un gráfico de Treemap. El Treemap es una visualización que permite representar jerarquías de datos de manera eficiente, mostrando la distribución proporcional de valores dentro de cada categoría. En este caso, cada celda del Treemap representará una combinación de género y categoría de transacciones, donde el tamaño de la celda reflejará el monto total de transacciones realizadas. Además, hemos seleccionado una paleta de colores suaves para asegurar una representación visual agradable y fácil de interpretar de los datos.

3. Ambiente de trabajo

# Cargar el dataset Credit_transaction
getwd()
## [1] "C:/Users/bianc/OneDrive/Escritorio/Maestria/Modulo 8/Foro"
setwd("C:/Users/bianc/OneDrive/Escritorio/Maestria/Modulo 8/Foro")
Credit_transaction=read.csv("credit_card_transaction_flow.csv", sep=",", header=TRUE)

3. Instalación de las librerías necesarias

library(dplyr)
library(tidyverse)
library(ggplot2)
library(plotly)

4. Características generales de la base de datos

Observación de la base de datos Credit Transaction

dim(Credit_transaction) #Dimención de la base de datos, filas y columnas de forma conjunta
## [1] 50000     9
names(Credit_transaction) #Nombre de las variables
## [1] "Customer.ID"        "Name"               "Surname"           
## [4] "Gender"             "Birthdate"          "Transaction.Amount"
## [7] "Date"               "Merchant.Name"      "Category"
nrow(Credit_transaction) #Número de filas
## [1] 50000
head(Credit_transaction, n=10) #Primera filas de la base de datos Credit Transaction
##    Customer.ID      Name    Surname Gender  Birthdate Transaction.Amount
## 1       752858      Sean  Rodriguez      F 20-10-2002              35.47
## 2        26381  Michelle     Phelps        24-10-1985            2552.72
## 3       305449     Jacob   Williams      M 25-10-1981             115.97
## 4       988259    Nathan     Snyder      M 26-10-1977              11.31
## 5       764762   Crystal      Knapp      F  2/11/1951              62.21
## 6       576539    Monica   Bartlett      F 20-10-2001              99.14
## 7       124681    Thomas       Shaw        26-10-1976             145.94
## 8       521807    Kelsey       Pena      F 28-10-1968             161.39
## 9       504238    Denise     Porter      M 31-10-1957              77.73
## 10      583532 Alexander Richardson      F 27-10-1974             142.85
##          Date              Merchant.Name    Category
## 1    3/4/2023              Smith-Russell    Cosmetic
## 2  17-07-2023     Peck, Spence and Young      Travel
## 3  20-09-2023                 Steele Inc    Clothing
## 4   11/1/2023 Wilson, Wilson and Russell    Cosmetic
## 5  13-06-2023              Palmer-Hinton Electronics
## 6  24-08-2023     Tran, Torres and Joyce    Cosmetic
## 7  30-08-2023  Evans, Griffin and Torres    Cosmetic
## 8    8/2/2023                 Miller PLC    Cosmetic
## 9   12/1/2023             Jackson-Morgan  Restaurant
## 10   7/6/2023   Blake, Mays and Anderson    Clothing
sum(is.na(Credit_transaction)) #Si contienen n/a o no
## [1] 0
str(Credit_transaction) #Estructura de la base de datos
## 'data.frame':    50000 obs. of  9 variables:
##  $ Customer.ID       : int  752858 26381 305449 988259 764762 576539 124681 521807 504238 583532 ...
##  $ Name              : chr  "Sean" "Michelle" "Jacob" "Nathan" ...
##  $ Surname           : chr  "Rodriguez" "Phelps" "Williams" "Snyder" ...
##  $ Gender            : chr  "F" "" "M" "M" ...
##  $ Birthdate         : chr  "20-10-2002" "24-10-1985" "25-10-1981" "26-10-1977" ...
##  $ Transaction.Amount: num  35.5 2552.7 116 11.3 62.2 ...
##  $ Date              : chr  "3/4/2023" "17-07-2023" "20-09-2023" "11/1/2023" ...
##  $ Merchant.Name     : chr  "Smith-Russell" "Peck, Spence and Young" "Steele Inc" "Wilson, Wilson and Russell" ...
##  $ Category          : chr  "Cosmetic" "Travel" "Clothing" "Cosmetic" ...
#Conteo variable Gender
Credit_transaction %>%
  count(Gender) 
##   Gender     n
## 1         5047
## 2      F 22713
## 3      M 22240

5. Tranformación de los datos para hacer el Treemap

# Reemplazar los valores en blanco por "No especificado"
Credit_transaction$Gender <- ifelse(Credit_transaction$Gender == "", "N/A", Credit_transaction$Gender)

#Agrupación de la categoría, Gender y Transaction.Amount

credit_group <- Credit_transaction %>%
  group_by(Gender, Category) %>%
  summarise(Transaction.Amount = sum(Transaction.Amount)) %>%
  ungroup()

credit_group <- credit_group %>%
  mutate(ids = ifelse(Category == "", Gender, paste0(Gender, "-", Category)))

par_info <- credit_group %>%
  group_by(Category) %>%
  summarise(Transaction.Amount = sum(Transaction.Amount)) %>%
  rename(Gender = Category) %>%
  mutate(Category = "", ids = Gender) %>%
  select(names(credit_group))

ahora_es_personal <- rbind(credit_group, par_info)

6. Treemap

# Paleta de colores 
palette_suave <- c("#FADBD8", "#D6EAF8", "#D5F5E3", "#FCF3CF", "#FDEBD0", "#D6DBDF", "#EDBB99", "#ABEBC6", "#E8DAEF", "#D5F5E3")

# Asignar colores de la paleta a géneros y categorías
generos_unicos <- unique(ahora_es_personal$Gender)
categorias_unicas <- unique(ahora_es_personal$Category)
sum_unique<-length(generos_unicos) + length(categorias_unicas)
colores_asignados <- palette_suave[1:sum_unique]

# Crear una columna de colores basada en el género y la categoría
ahora_es_personal$Color <- colores_asignados[match(ahora_es_personal$Gender, generos_unicos)]
ahora_es_personal$Color[ahora_es_personal$Category != ""] <- colores_asignados[match(ahora_es_personal$Category[ahora_es_personal$Category != ""], generos_unicos)]

# Crear el treemap con la paleta de colores personalizada
treemap <- plot_ly(
  data = ahora_es_personal,
  type = "treemap",
  labels = ~Gender,
  parents = ~Category,
  values = ~Transaction.Amount,
  ids = ~ids,
  branchvalues = "total",
  marker = list(colors = ahora_es_personal$Color)
)

7. Mostrar el treemap interativo

Para explorar las transacciones por género y categoría, simplemente pasa el cursor sobre los cuadros del gráfico. Esta funcionalidad te permitirá obtener información detallada sobre las transacciones realizadas por género en cada categoría. Al pasar el cursor, podrás visualizar fácilmente el monto total de transacciones y comparar los hábitos de consumo entre hombres y mujeres en diferentes áreas.

# Mostrar el treemap interativo
treemap

7. Conclusión

Al analizar la base de datos Credit_transaction, observamos que hay más mujeres que hombres, con 22,713 y 22,240 registros respectivamente. Esta disparidad en la distribución de género sugiere que las transacciones realizadas por mujeres podrían ser mayores que las de los hombres. Al sumar los montos de transacción, efectivamente encontramos que las mujeres gastan ligeramente más que los hombres en general.

El gráfico de Treemap interativo revela que la categoría de viajes (Travel) es la de mayor gasto tanto para hombres como para mujeres. Sin embargo, las mujeres superan a los hombres en gastos en esta categoría, con un monto de US$ 5,975,346.51 en comparación con el género masculino. Además, las mujeres muestran un mayor consumo en categorías como Cosméticos (Cosmetic) y Restaurantes, mientras que los hombres lideran en Electrónicos (Electronics), Mercados (Market) y Ropa (Clothing). Destaca especialmente el consumo en la categoría de Electrónicos por parte de los hombres, superando a las mujeres en este aspecto.