Visualización de datos faltantes con Barplot en R

En este artículo, discutiremos cómo visualizar los datos que faltan con un gráfico de barras utilizando el lenguaje de programación R.

Los datos faltantes son aquellos puntos de datos que no se registran, es decir, no se ingresan en el conjunto de datos. Por lo general, los datos que faltan se representan como NA o NaN o incluso como una celda vacía. 

Conjunto de datos en uso:

missing data example

En el caso de conjuntos de datos más grandes, es posible que algunos datos faltantes no afecten la información general, mientras que puede ser una gran pérdida de información en el caso de conjuntos de datos más pequeños. Estos datos faltantes se eliminan o imputan según el conjunto de datos. Para decidir cómo lidiar con los datos que faltan, primero veremos cómo visualizar los puntos de datos que faltan.

Primero contemos el número total de valores faltantes.

Ejemplo: contar valores perdidos

R

# Creating a sample dataframe using 3 vectors
age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# count the total number of missing values
sum(is.na(df))

Producción: 

5

También podemos averiguar cuántos valores faltantes hay en cada atributo/columna.

Ejemplo: Cuente los valores que faltan en cada atributo/columna  

R

# Creating a sample dataframe using 3 vectors
age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# count number of missing values in each 
# attribute/column
sapply(df, function(x) sum(is.na(x)))

Producción:

age name grade
2   3    0

Visualización de todos los valores faltantes

Primero, visualicemos las frecuencias de los valores faltantes y no faltantes para datos completos usando la función barplot() en R.

Sintaxis de barplot():

barplot(x, nombre.args = NULL, col = ” “, main = ” ”, xlab = ” “, ylab = ” ”, al lado = FALSO, horiz = VERDADERO …)

Parámetros:

  • x : vector o array
  • names.arg : etiqueta para cada barra
  • col : color de las barras 
  • main : título de la gráfica de barras
  • xlab: etiqueta para el eje x
  • ylab : etiqueta para el eje y
  • al lado: para especificar un diagrama de barras agrupado o apilado
  • horiz : orientación de las barras (horizontal o vertical)

Ejemplo: visualización de todos los valores faltantes

R

# Creating a sample dataframe using 3 vectors
age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# converting a frequency table for missing 
# values to dataframe 
freqDf <- data.frame(table(is.na(df)))
  
# barplot for visualization
barplot(freqDf$Freq , main = "Total Missing values",
xlab = "Missing Data", ylab = "Frequency", 
        names.arg = c("FALSE","TRUE"),
col = c("#80dfff","lightgreen"))
  
# legend for barplot
legend("topright",
c("Non-Missing Values","Missing Values"),
fill = c("#80dfff","lightgreen"))

Producción:

Visualización de datos faltantes para una columna

Para esto, seleccionamos la columna que estamos tratando de visualizar y luego hacemos lo necesario.

Ejemplo: visualización de datos faltantes para una columna 

R

# Creating a sample dataframe using 3 vectors
age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# frequency table for missing data for 1 column,
# here age column is taken
freqDf2 <- data.frame(table(is.na(df$age)))
  
# barplot for 1 column/feature
barplot(freqDf2$Freq,
main = "Total Missing values",xlab = "Missing Data",
ylab = "Frequency",names.arg = c("FALSE","TRUE"),
col = c("#ffb3b3","#99e6ff"))
  
# legend for barplot
legend("topright",
c("Non-Missing Values","Missing Values"),
       fill = c("#ffb3b3","#99e6ff"))

Producción: 

Visualización de datos faltantes para todas las columnas

Vamos a crear una función para transformar el marco de datos en una array binaria VERDADERO/FALSO y luego visualizarla usando un gráfico de barras en R.

Ejemplo: visualización de datos faltantes para todas las columnas  

R

age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# function convert dataframe to binary TRUE/FALSE matrix
toBinaryMatrix <- function(df){
m<-c()
for(i in colnames(df)){
    x<-sum(is.na(df[,i]))
    # missing value count
    m<-append(m,x)
    # non-missing value count
    m<-append(m,nrow(df)-x) 
}
  
# adding column and row names to matrix
a<-matrix(m,nrow=2)
rownames(a)<-c("TRUE","FALSE")
colnames(a)<-colnames(df)
  
return(a)
}
  
# function call
binMat = toBinaryMatrix(df)
binMat

Producción: 

       age    name  grade
TRUE    2     3       0
FALSE    4     3       6

Diagrama de barras apiladas     

Los valores que faltan se pueden representar en contraste con los valores presentes mediante un gráfico de barras apiladas.

Ejemplo: gráfico de barras apiladas 

R

age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# stacked barplot for missing data in all columns
barplot(binMat,
main = "Missing values in all features",xlab = "Frequency",
col = c("#4dffd2","#ff9999"))
  
# legend for barplot
legend("bottomright",
c("Missing values","Non-Missing values"),
fill = c("#4dffd2","#ff9999"))

Producción: 

Diagrama de barras agrupado

Otra visualización que puede resultar útil es un diagrama de barras agrupado.

Ejemplo: diagrama de barras agrupado 

R

age = c(12,34,NA,7,15,NA)
name = c('rob',NA,"arya","jon",NA,NA)
grade = c("A","A","D","B","C","B")
df <- data.frame(age,name,grade)
  
# grouped barplot for missing data in all columns
barplot(binMat,
main = "Missing values in all features",xlab = "Frequency",
col = c("#ffff99","#33bbff"),beside=TRUE,
horiz = TRUE)
  
# legend for barplot
legend("right",c("Missing values","Non-Missing values"),
fill = c("#ffff99","#33bbff"))

Producción: 

Publicación traducida automáticamente

Artículo escrito por saaiswethasret y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *