pandas

Pandas

Tutorial Pandas: Identificación de valores faltantes

Pandas: Aprende cómo identificar valores faltantes en datos utilizando funciones como `isna()`, `isnull()`, y técnicas avanzadas. Mejora tu análisis de datos manejando missing values.

¿Qué son los valores faltantes o missing values?

En el contexto de la manipulación y análisis de datos con Pandas, los valores faltantes, también conocidos como "missing values", representan datos que están ausentes en un conjunto de datos. Estos valores faltantes pueden surgir por diversas razones, como errores de entrada de datos, problemas de recolección de datos o simplemente porque la información no está disponible. 

En Pandas, los valores faltantes se representan típicamente como NaN (Not a Number), aunque también pueden aparecer como None en ciertos casos.

La presencia de valores faltantes puede distorsionar los resultados del análisis estadístico y de machine learning, por lo que es crucial identificarlos y tratarlos adecuadamente.

Representación en Pandas

En Pandas, los valores faltantes se manejan principalmente con el objeto NaN del módulo numpy

A continuación, se muestra un ejemplo básico de cómo Pandas representa los valores faltantes:

import pandas as pd
import numpy as np

data = {'col1': [1, 2, np.nan, 4],
        'col2': [np.nan, 2, 3, 4]}
df = pd.DataFrame(data)
print(df)

El resultado será:

   col1  col2
0   1.0   NaN
1   2.0   2.0
2   NaN   3.0
3   4.0   4.0

En este ejemplo, np.nan se utiliza para representar valores faltantes en el DataFrame.

Importancia de identificar valores faltantes

La identificación de valores faltantes es un paso crítico en el proceso de limpieza y preparación de datos. Los valores faltantes pueden influir en:

  • Resultados estadísticos: Las operaciones estadísticas como la media, mediana y desviación estándar pueden verse afectadas por la presencia de valores faltantes.
  • Análisis de datos: Los gráficos y visualizaciones pueden ser engañosos si no se manejan adecuadamente los valores faltantes.
  • Modelos de machine learning: Muchos algoritmos de aprendizaje automático no pueden manejar valores faltantes directamente y requieren que estos sean imputados o eliminados.

Métodos para tratar valores faltantes

Una vez identificados, existen varios métodos para manejar los valores faltantes en Pandas:

  • Eliminación: Se pueden eliminar las filas o columnas que contienen valores faltantes.
  • Imputación: Se pueden reemplazar los valores faltantes con un valor específico, como la media o la mediana de la columna.
  • Interpolación: Se pueden estimar los valores faltantes utilizando métodos de interpolación.

Ejemplo de eliminación de filas con valores faltantes:

df_cleaned = df.dropna()
print(df_cleaned)

El resultado será:

   col1  col2
1   2.0   2.0
3   4.0   4.0

Ejemplo de imputación de valores faltantes con la media de la columna:

df_filled = df.fillna(df.mean())
print(df_filled)

El resultado será:

   col1  col2
0   1.0   3.0
1   2.0   2.0
2   2.333333  3.0
3   4.0   4.0

En este ejemplo, df.mean() calcula la media de cada columna y fillna() reemplaza los valores faltantes con la media correspondiente.

¿Cómo identificar valores faltantes en Pandas?

Para identificar valores faltantes en un DataFrame de Pandas, existen varias funciones y métodos que facilitan esta tarea.

  • isna(): Este método devuelve un DataFrame de la misma forma que el original, pero con valores booleanos donde True indica la presencia de un valor faltante (NaN o None) y False indica la ausencia de valores faltantes.
import pandas as pd
import numpy as np

data = {'col1': [1, 2, np.nan, 4],
        'col2': [np.nan, 2, 3, 4]}
df = pd.DataFrame(data)

# Identificar valores faltantes
missing_values = df.isna()
print(missing_values)

El resultado será:

    col1   col2
0  False   True
1  False  False
2   True  False
3  False  False
  • isnull(): Funcionalmente equivalente a isna(), isnull() también devuelve un DataFrame con valores booleanos indicando la presencia de valores faltantes.
missing_values = df.isnull()
print(missing_values)

El resultado será idéntico al del método isna().

  • notna(): Este método es el inverso de isna() y devuelve True donde no hay valores faltantes y False donde sí los hay.
not_missing_values = df.notna()
print(not_missing_values)

El resultado será:

    col1   col2
0   True  False
1   True   True
2  False   True
3   True   True
  • notnull(): Similar a notna(), notnull() también devuelve True donde no hay valores faltantes y False donde sí los hay.
not_missing_values = df.notnull()
print(not_missing_values)

El resultado será el mismo que el de notna().

  • info(): Este método proporciona un resumen conciso del DataFrame, incluyendo la cantidad de valores no nulos en cada columna, lo que permite identificar rápidamente columnas con valores faltantes.
df.info()

El resultado será algo similar a:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   col1    3 non-null      float64
 1   col2    3 non-null      float64
dtypes: float64(2)
memory usage: 192.0 bytes
  • sum() combinado con isna(): Para obtener un conteo de valores faltantes por columna.
missing_values_count = df.isna().sum()
print(missing_values_count)

El resultado será:

col1    1
col2    1
dtype: int64
  • any() combinado con isna(): Para verificar si hay algún valor faltante en el DataFrame o en columnas específicas.
any_missing = df.isna().any()
print(any_missing)

El resultado será:

col1    True
col2    True
dtype: bool

Para verificar si hay algún valor faltante en todo el DataFrame:

any_missing_overall = df.isna().any().any()
print(any_missing_overall)

El resultado será:

True

Estos métodos y funciones permiten identificar de manera eficiente y precisa los valores faltantes en un DataFrame de Pandas, facilitando el proceso de limpieza y preparación de datos para análisis posteriores y modelos de aprendizaje automático.

Interpretar la cantidad de valores faltantes

Para interpretar la cantidad de valores faltantes en un DataFrame de Pandas, es crucial no solo identificar su presencia, sino también cuantificar y analizar la distribución de estos valores a lo largo de las diferentes columnas y filas. Esto proporciona una visión clara de la magnitud del problema y ayuda a decidir la estrategia adecuada para tratar los valores faltantes. 

A continuación, se describen varias técnicas y métodos para interpretar la cantidad de valores faltantes.

  • Conteo de valores faltantes por columna: Utilizando el método isna() junto con sum(), podemos obtener un conteo de los valores faltantes en cada columna. Esto es útil para identificar columnas con un alto número de valores faltantes que podrían requerir atención especial.
import pandas as pd
import numpy as np

data = {
    'col1': [1, 2, np.nan, 4, 5, np.nan, 7, 8, 9, np.nan],
    'col2': [np.nan, 2, 3, np.nan, 5, 6, np.nan, 8, 9, 10],
    'col3': [1, np.nan, np.nan, 4, 5, 6, np.nan, np.nan, 9, 10],
    'col4': [np.nan, np.nan, 3, 4, 5, np.nan, 7, np.nan, 9, 10],
    'col5': [1, 2, 3, 4, 5, 6, 7, 8, 9, np.nan]
}
df = pd.DataFrame(data)

missing_values_count = df.isna().sum()
print(missing_values_count)

El resultado será:

col1    3
col2    3
col3    4
col4    4
col5    1
dtype: int64
  • Porcentaje de valores faltantes por columna: Para una mejor comprensión, se puede calcular el porcentaje de valores faltantes en relación al número total de entradas en cada columna. Esto es particularmente útil cuando se trabaja con grandes conjuntos de datos.
total_cells = df.size
total_missing = df.isna().sum().sum()

percent_missing = (total_missing / total_cells) * 100
print(percent_missing)

El resultado será el porcentaje de valores faltantes en el DataFrame completo.

  • Visualización de valores faltantes: Las visualizaciones pueden proporcionar una forma intuitiva de interpretar la cantidad de valores faltantes. Utilizando bibliotecas como matplotlib y seaborn, se pueden crear gráficos de calor (heatmaps) para visualizar la distribución de los valores faltantes.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = {
    'col1': [1, 2, np.nan, 4, 5, np.nan, 7, 8, 9, np.nan],
    'col2': [np.nan, 2, 3, np.nan, 5, 6, np.nan, 8, 9, 10],
    'col3': [1, np.nan, np.nan, 4, 5, 6, np.nan, np.nan, 9, 10],
    'col4': [np.nan, np.nan, 3, 4, 5, np.nan, 7, np.nan, 9, 10],
    'col5': [1, 2, 3, 4, 5, 6, 7, 8, 9, np.nan]
}
df = pd.DataFrame(data)

# Mapa de calor de los valores faltantes
sns.heatmap(df.isna(), cbar=False, cmap='viridis')
plt.show()

Este código produce un mapa de calor donde las celdas con valores faltantes se muestran en un color diferente, permitiendo una rápida identificación visual de patrones.

  • Distribución de valores faltantes en filas: Además de las columnas, también es importante analizar la distribución de valores faltantes a lo largo de las filas. Esto se puede lograr sumando los valores faltantes por fila.
missing_values_per_row = df.isna().sum(axis=1)
print(missing_values_per_row)

El resultado será:

0    2
1    2
2    2
3    1
4    0
5    2
6    2
7    2
8    0
9    2
dtype: int64
  • Histograma de valores faltantes: Para una visualización más detallada, se puede crear un histograma que muestre la distribución de la cantidad de valores faltantes por fila.
missing_values_per_row.plot(kind='hist', bins=range(0, df.shape[1] + 1))
plt.xlabel('Número de valores faltantes por fila')
plt.ylabel('Frecuencia')
plt.show()

Este histograma ayuda a identificar si hay muchas filas con un alto número de valores faltantes, lo que podría influir en la decisión de eliminar o imputar dichas filas.

  • Análisis de valores faltantes en grupos de datos: En algunos casos, puede ser útil analizar los valores faltantes en diferentes subconjuntos de los datos. Por ejemplo, si los datos están categorizados por una variable específica, se puede calcular el porcentaje de valores faltantes en cada categoría.
grouped_missing = df.groupby('col1').apply(lambda x: x.isna().sum())
print(grouped_missing)

Este enfoque permite identificar si los valores faltantes están concentrados en ciertos grupos, lo que puede ser relevante para el análisis posterior.

Interpretar la cantidad de valores faltantes de manera correcta es esencial para tomar decisiones informadas sobre cómo manejarlos. Estas técnicas y métodos proporcionan una comprensión profunda de la distribución y magnitud de los valores faltantes en los datos, facilitando así el proceso de limpieza y preparación de los mismos.

Certifícate en Pandas con CertiDevs PLUS

Ejercicios de esta lección Identificación de valores faltantes

Evalúa tus conocimientos de esta lección Identificación de valores faltantes con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Pandas

Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Pandas

Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender qué son los valores faltantes y su representación en Pandas.
  • Aprender a identificar valores faltantes usando métodos como isna(), isnull(), notna(), notnull().
  • Conocer la importancia de identificar valores faltantes en el análisis y preparación de datos.
  • Aplicar técnicas para interpretar y cuantificar valores faltantes.
  • Visualizar la distribución de valores faltantes en filas y columnas.
  • Implementar estrategias de tratamiento como eliminación e imputación de valores faltantes.