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