Soy nuevo en pandas, estoy tratando de cargar el csv en Dataframe. Mis datos tienen valores faltantes representados como? , y estoy tratando de reemplazarlo con valores perdidos estándar – NaN
Por favor ayúdame con esto. He intentado leer los documentos de Pandas, pero no puedo seguirlos.
def readData(filename): DataLabels =["age", "workclass", "fnlwgt", "education", "education-num", "marital-status", "occupation", "relationship", "race", "sex", "capital-gain", "capital-loss", "hours-per-week", "native-country", "class"] # ==== trying to replace ? with Nan using na_values rawfile = pd.read_csv(filename, header=None, names=DataLabels, na_values=["?"]) age = rawfile["age"] print age print rawfile[25:40] #========trying to replace ? rawfile.replace("?", "NaN") print rawfile[25:40]
Puede reemplazar esto solo para esa columna usando replace
:
df['workclass'].replace('?', np.NaN)
o para toda la df:
df.replace('?', np.NaN)
ACTUALIZAR
OK, resolví el problema, de manera predeterminada, si no pasa un carácter separador, entonces read_csv
usará comas ','
como separador.
Sus datos y en particular un ejemplo donde tiene una línea problemática:
54, ?, 180211, Some-college, 10, Married-civ-spouse, ?, Husband, Asian-Pac-Islander, Male, 0, 0, 60, South, >50K
de hecho, tiene una coma y un espacio como separador, de modo que cuando na_value=['?']
el valor de na_value=['?']
esto no coincidió porque todos tus valores tienen un carácter de espacio delante de todos ellos que no puedes observar.
Si cambias tu línea a esto:
rawfile = pd.read_csv(filename, header=None, names=DataLabels, sep=',\s', na_values=["?"])
entonces deberías encontrar que todo funciona:
27 54 NaN 180211 Some-college 10
Usar numpy.nan
Numpy – Reemplazar un número con NaN
import numpy as np df.applymap(lambda x: np.nan if x == '?' else x)
bien lo tengo por:
#========trying to replace ? newraw= rawfile.replace('[?]', np.nan, regex=True) print newraw[25:40]