Tengo un conjunto de datos en el que hay una columna conocida como 'País nativo' que contiene alrededor de 30000 registros. Faltan algunos representados por NaN , así que pensé en llenarlo con el valor mode() . Escribí algo como esto:
data['Native Country'].fillna(data['Native Country'].mode(), inplace=True)Sin embargo, cuando hago un recuento de los valores que faltan:
for col_name in data.columns: print ("column:",col_name,".Missing:",sum(data[col_name].isnull())) Todavía se obtiene la misma cantidad de valores de NaN para la columna País nativo.
Simplemente llame al primer elemento de la serie:
data['Native Country'].fillna(data['Native Country'].mode()[0], inplace=True)o puede hacer lo mismo con la asignación:
data['Native Country'] = data['Native Country'].fillna(data['Native Country'].mode()[0])Tenga cuidado, NaN puede ser el modo de su marco de datos: en este caso, está reemplazando NaN con otro NaN.
import numpy as np import pandas as pd print(pd.__version__)1.2.0
df = pd.DataFrame({'Country': [np.nan, 'France', np.nan, 'Spain', 'France'], 'Purchased': [np.nan,'Yes', 'Yes', 'No', np.nan]})| País | comprado | |
|---|---|---|
| 0 | Yaya | Yaya |
| 1 | Francia | Sí |
| 2 | Yaya | Sí |
| 3 | España | No |
| 4 | Francia | Yaya |
df.fillna(df.mode()) ## only applied on first row because df.mode() returns a dataframe with one row| País | comprado | |
|---|---|---|
| 0 | Francia | Sí |
| 1 | Francia | Sí |
| 2 | Yaya | Sí |
| 3 | España | No |
| 4 | Francia | Yaya |
df = pd.DataFrame({'Country': [np.nan, 'France', np.nan, 'Spain', 'France'], 'Purchased': [np.nan,'Yes', 'Yes', 'No', np.nan]}) df.fillna(df.mode().iloc[0]) ## convert df to a series| País | comprado | |
|---|---|---|
| 0 | Francia | Sí |
| 1 | Francia | Sí |
| 2 | Francia | Sí |
| 3 | España | No |
| 4 | Francia | Sí |