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:
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.
# 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)
library(dplyr)
library(tidyverse)
library(ggplot2)
library(plotly)
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
# 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)
# 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)
)
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
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.