Introducción a Pandas.Dropna ()

La biblioteca de código abierto de Python, Pandas, es sin duda la biblioteca más utilizada para el análisis y la ciencia de datos. También es un paquete preferible para operaciones de manipulación de datos ad-hoc. El crédito se destina a su representación de datos extremadamente flexible utilizando DataFrames y el arsenal de funciones expuestas a la manipulación de datos presentes en estos marcos de datos. Cualquier problema de datos de la vida real causará el problema de la falta de datos y es imperativo que dichos puntos de datos sean atendidos de la manera correcta. El manejo de datos faltantes de cualquier manera adecuada es compatible con esta función, Pandas.Dropna () .

¿Qué son exactamente Pandas.Dropna ()?

La página de Pydata se puede consultar para la definición oficial de la función.

El encabezado de la función que se muestra es el siguiente (junto con los valores de los parámetros predeterminados):

DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

Los parámetros (excluyendo, self (el objeto del marco de datos en sí)) que se muestran en la definición de la función son los siguientes:

  • eje: se refiere a la orientación (fila o columna) en la que se eliminan los datos. Los valores posibles son 0 o 1 (también 'índice' o 'columnas' respectivamente). 0 / 'índice' representa filas que caen y 1 / 'columnas' representan columnas que caen.
  • cómo: especifica el escenario en el que la columna / fila que contiene un valor nulo debe descartarse. Los valores son 'any' o 'all'. 'todos' sueltan la fila / columna solo si todos los valores en la fila / columna son nulos. 'any' descarta la fila / columna cuando al menos un valor en la fila / columna es nulo.
  • thresh: especifica el número mínimo de valores que no son de NA en la fila / columna para que se considere en el resultado final. Cualquier fila / columna con el número de valores no NA <valor de umbral se elimina independientemente de otros parámetros pasados. Cuando thresh = none, este filtro se ignora.
  • subconjunto: eje especifica si las filas / columnas tienen que descartarse. El subconjunto toma una lista de columnas / filas respectivamente (opuestas al eje) en las que se deben buscar valores nulos / NA en lugar de una lista completa de columnas / filas respectivamente.
  • in situ: como buena práctica, el DataFrame original (o la representación de datos) no se modifica, pero se devuelve una copia separada con los cambios (es decir, filas / columnas descartadas). El atributo inplace le brinda la flexibilidad de modificar la estructura de datos original.

Ahora que tenemos una idea general de los parámetros expuestos por dropna (), veamos algunos escenarios posibles de datos faltantes y cómo los abordamos.

Ejemplos de casos de uso de Pandas.Dropna ()

A continuación se muestran los ejemplos de pandas.dropna ():

Importar pandas: para usar Dropna (), debe haber un DataFrame. Para crear un DataFrame, la biblioteca del panda debe importarse (no es sorprendente aquí). Lo importaremos con un pd de alias para hacer referencia a objetos en el módulo convenientemente. Para definir valores nulos, nos atendremos a numpy.nan. Por lo tanto, importaremos la biblioteca numpy con un alias np:

Código:

In (1): import pandas as pd
In (2): import numpy as np

1. Crear un objeto de marco de datos para manipulación

Al importar pandas, todos los métodos, funciones y constructores están disponibles en su espacio de trabajo. Entonces, creemos un DataFrame que pueda ayudarnos a demostrar los usos de dropna ().

Código:

In (3): df = pd.DataFrame(
('Company':('Google', 'Amazon', 'Infosys', 'Directi'),
'Age':('21', '23', '38', '22'),
'NetWorth ($ bn)':(300, np.nan, np.nan, 1.3),
'Founder':(np.nan, np.nan, np.nan, np.nan),
'Headquarter-Country':('United States', np.nan, 'India', 'India') ))
In (4): print(df)
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
1 Amazon 23 NaN NaN NaN
2 Infosys 38 NaN NaN India
3 Directi 22 1.3 NaN India

El DataFrame impreso se manipulará en nuestra demostración a continuación.

2. Colocando filas vs columnas

El parámetro del eje se usa para soltar filas o columnas como se muestra a continuación:

Código:

In (5): df.dropna(axis=1)

Salida:

Out(5):
Company Age
0 Google 21
1 Amazon 23
2 Infosys 38
3 Directi 22

Cualquier columna que contenga al menos 1 NaN como valor de celda se descarta. Veamos cómo funcionarán las filas (eje = 0).
Nota : Este es el comportamiento predeterminado cuando el eje no se especifica explícitamente.

Código:

In (6): df.dropna(axis=0)

Salida:

Out(6):
Empty DataFrame
Columns: (Company, Age, NetWorth ($ bn), Founder, Headquarter-Country) Index: ()

Hmm, ¡entonces ya no hay datos en el DataFrame devuelto! Obviamente, este no es el comportamiento previsto. Veamos cómo solucionar esto.

3. Usando el atributo de subconjunto

Las operaciones anteriores estaban cayendo en función de todas las columnas cuando axis = 0. Como hay una columna Fundador que solo tiene valores nulos, todas las filas se descartan. Especifiquemos una columna que se utilizará para filtrar:

Código:

In (7): df.dropna(axis=0, subset=('NetWorth ($ bn)'))

Salida:

Out(7):
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
3 Directi 22 1.3 NaN India

Ahora, como vemos, solo se eliminan los registros con Nanvalue en la columna Networth. El DataFrame devuelto puede modificarse nuevamente aplicando dropna () una vez más para filtrar las columnas pasando el eje = 1.

4. Usando cómo Parámetro

Por defecto, dropna () descarta la fila / columna completa incluso si solo falta 1 valor. Un reverso rápido expuesto es soltar solo cuando todos los valores en una fila / columna son nulos. Esto se logra estableciendo how = 'all' en lugar de how = 'any' (el comportamiento predeterminado).

Código:

In (8): df.dropna(axis=1, how='all')

Salida:

Out(8):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Ahora el DataFrame resultante se puede usar para soltar filas / columnas con una lógica más compleja si es necesario.

5. Obtener control a través de Thresh

El parámetro de umbral, es probablemente la herramienta más poderosa cuando se combina con el resto adecuadamente.

Código:

In (17): df.dropna(axis=1, thresh=2)

Salida:

Out(17):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Al establecer axis = 1 y thresh = 2, solo se retienen las columnas con al menos 2 valores no NaN.

Conclusión

Los ejemplos que se muestran arriba son de naturaleza simplista, pero son lo suficientemente potentes como para hacer frente a la mayoría de los problemas con los que puede tropezar en situaciones de la vida real. Sin embargo, uno debe practicar la combinación de diferentes parámetros para tener una comprensión clara de su uso y velocidad de construcción en su aplicación.

Artículos recomendados

Esta es una guía para Pandas.Dropna (). Aquí discutimos qué es Pandas.Dropna (), los parámetros y ejemplos. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. ¿Qué es pandas?
  2. PNL en Python
  3. Clase abstracta en Python
  4. Factorial en Python
  5. Programa Factorial en JavaScript