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:
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