En este artículo, discutiremos cómo corregir el error de valor: no se puede convertir NaN flotante en entero en Python.
En Python, NaN significa No es un número. Este error ocurrirá cuando estamos convirtiendo la columna del marco de datos del tipo flotante que contiene valores NaN a un número entero.
Veamos el error y exploremos los métodos para solucionarlo.
Conjunto de datos en uso:
Verifiquemos el error al convertir de tipo flotante (columna de marcas) a tipo entero. Podemos convertir usando la función astype()
Ejemplo: representación del error
Python3
# import pandas import pandas # import numpy import numpy # create a dataframe dataframe = pandas.DataFrame({'name': ['sireesha', 'gnanesh', 'sridevi', 'vijay', 'sreemukhi'], 'marks': [90.3, numpy.nan, 67.8, 89, numpy.nan]}) # convert to integer type dataframe['marks'].astype(int)
Producción:
ValueError: no se pueden convertir valores no finitos (NA o inf) a enteros
Debido a que los valores de NaN no son posibles de convertir el marco de datos. Entonces, para solucionar este problema, debemos eliminar los valores de NaN
Método 1: Soltar filas con valores NaN
Aquí vamos a eliminar los valores de NaN de la columna del marco de datos usando la función dropna() . Esta función eliminará las filas que contienen valores NaN.
Sintaxis :
dataframe.dropna()
Ejemplo: Tratar con el error
Python3
# import pandas import pandas # import numpy import numpy # create a dataframe dataframe = pandas.DataFrame({'name': ['sireesha', 'gnanesh', 'sridevi', 'vijay', 'sreemukhi'], 'marks': [90.3, numpy.nan, 67.8, 89, numpy.nan]}) # display data type print(dataframe['marks'] .dtype) # drop the NaN values dataframe = dataframe.dropna() # display print(dataframe) # convert to integer type for marks column dataframe['marks'] = dataframe['marks'].astype(int) # display data type dataframe['marks'] .dtype
Producción:
Método 2: reemplazar los valores de NaN con 0
Podemos reemplazar los valores de NaN con 0 para deshacernos de los valores de NaN. Esto se hace usando la función fillna() . Esta función verificará los valores de NaN en las columnas del marco de datos y completará el valor dado.
Sintaxis :
dataframe.fillna(0)
Ejemplo: Tratar con el error
Python3
# import pandas import pandas # import numpy import numpy # create a dataframe dataframe = pandas.DataFrame({'name': ['sireesha', 'gnanesh', 'sridevi', 'vijay', 'sreemukhi'], 'marks': [90.3, numpy.nan, 67.8, 89, numpy.nan]}) # display data type print(dataframe['marks'] .dtype) # replace NaN values with 0 dataframe = dataframe.fillna(0) # display print(dataframe) # convert to integer type for marks column dataframe['marks'] = dataframe['marks'].astype(int) # display data type dataframe['marks'] .dtype
Producción:
Método 3: Usar numpy.nan_to_num()
Aquí estamos usando NumPy para convertir valores NaN a 0 números.
Sintaxis :
numpy.nan_to_num(numpy.nal)
Ejemplo: Tratar con el error
Python3
# import modules import numpy # create an nan value data = numpy.nan # display print(data) # convert man to value final = numpy.nan_to_num(data) # display final
Producción:
nan 0.0
Método 4: usar anulable
Podemos crear un valor nan como NaN, esto no crea ningún error al convertir flotante a entero.
Sintaxis :
numpy.NaN
Ejemplo: Tratar con el error
Python3
# import pandas import pandas # import numpy import numpy # create a dataframe dataframe = pandas.DataFrame({'name': ['sireesha', 'gnanesh', 'sridevi', 'vijay', 'sreemukhi'], 'marks': [90.3, numpy.NaN, 67.8, 89, numpy.NaN]}) # display data type print(dataframe['marks'] .dtype) # replace NaN values with 0 dataframe = dataframe.fillna(0) # display print(dataframe) # convert to integer type for marks column dataframe['marks'] = dataframe['marks'].astype(int) # display data type dataframe['marks'] .dtype
Producción:
float64 name marks 0 sireesha 90.3 1 gnanesh 0.0 2 sridevi 67.8 3 vijay 89.0 4 sreemukhi 0.0 dtype('int64')
Publicación traducida automáticamente
Artículo escrito por sireeshakanneganti112 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA