Eliminar valores infinitos de un Pandas DataFrame dado

Analicemos cómo eliminar los valores infinitos del marco de datos de Pandas . Primero hagamos un marco de datos:

Ejemplo:

Python3

# Import Required Libraries
import pandas as pd
import numpy as np
  
# Create a dictionary for the dataframe
dict = {'Name': ['Sumit Tyagi', 'Sukritin', 'Akriti Goel',
                 'Sanskriti', 'Abhishek Jain'],
        'Age': [22, 20, np.inf, -np.inf, 22], 
        'Marks': [90, 84, 33, 87, 82]}
  
# Converting Dictionary to Pandas Dataframe
df = pd.DataFrame(dict)
  
# Print Dataframe
df

Producción: 
 

Método 1: Reemplazar infinito con Nan y luego soltar filas con Nan

Primero reemplazaremos los valores infinitos con los valores NaN y luego usaremos el método dropna() para eliminar las filas con valores infinitos. El método df.replace() toma 2 argumentos posicionales. Primero está la lista de valores que desea reemplazar y segundo con qué valor desea reemplazar los valores. 
 

Python3

# Replacing infinite with nan
df.replace([np.inf, -np.inf], np.nan, inplace=True)
  
# Dropping all the rows with nan values
df.dropna(inplace=True)
  
# Printing df
df

Producción: 
 

Método 2: Cambiar la opción de Pandas para considerar infinito como Nan

Los pandas brindan la opción de usar infinito como Nan. Hace que todo el módulo pandas considere los valores infinitos como nan. Podemos hacer esto usando pd.set_option(). Establece la opción globalmente en todo el Jupyter Notebook. 
Sintaxis:

pd.set_option('mode.use_inf_as_na', True)

Establece las opciones para usar infinito como un valor de Nan durante la sesión o hasta que las opciones no vuelvan a establecerse en Falso.  

Python3

# Changing option to use infinite as nan
pd.set_option('mode.use_inf_as_na', True)
  
# Dropping all the rows with nan values
df.dropna(inplace=True)
  
# Printing df
df

Producción: 
 

Método 3: Considere infinito como Nan pero usando option_context

En lugar de usar pd.set_options(), que establece la opción globalmente, podemos usar pd.option_context(), que cambia la opción solo dentro de un alcance determinado.
 

Python3

# Changing option to use infinite as nan
with pd.option_context('mode.use_inf_as_na', True):
    
    # Dropping the rows with nan 
    # (or inf) values
    df.dropna(inplace=True)
  
# Printing df
df

Producción: 
 

Método 4: Usar el filtro

Primero crearemos un filtro que devuelva un marco de datos booleano y usaremos este filtro para enmascarar los valores infinitos.  

Python3

# Creating filter
df_filter = df.isin([np.nan, np.inf, -np.inf])
  
# Masking df with the filter
df = df[~df_filter]
  
# Dropping rows with nan values
df.dropna(inplace=True)
  
# Printing df
df

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por sumit_tyagi 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 *