LabelEncoder: TypeError: '& gt;' non pris en charge entre les instances de 'float' et 'str'
Je suis confronté à cette erreur pour plusieurs variables de même de traiter les valeurs manquantes.
Par exemple:
le = preprocessing.LabelEncoder()
categorical = list(df.select_dtypes(include=['object']).columns.values)
for cat in categorical:
print(cat)
df[cat].fillna('UNK', inplace=True)
df[cat] = le.fit_transform(df[cat])
# print(le.classes_)
# print(le.transform(le.classes_))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-424a0952f9d0> in <module>()
4 print(cat)
5 df[cat].fillna('UNK', inplace=True)
----> 6 df[cat] = le.fit_transform(df[cat].fillna('UNK'))
7 # print(le.classes_)
8 # print(le.transform(le.classes_))
C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in fit_transform(self, y)
129 y = column_or_1d(y, warn=True)
130 _check_numpy_unicode_bug(y)
--> 131 self.classes_, y = np.unique(y, return_inverse=True)
132 return y
133
C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\lib\arraysetops.py in unique(ar, return_index, return_inverse, return_counts)
209
210 if optional_indices:
--> 211 perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
212 aux = ar[perm]
213 else:
TypeError: '>' not supported between instances of 'float' and 'str'
Vérification de la variable qui conduisent à l'erreur des résultats ins:
df['CRM do Médico'].isnull().sum()
0
En plus des valeurs nan, ce qui pourrait être la cause de cette erreur?
source d'informationauteur pceccon
Vous devez vous connecter pour publier un commentaire.
Cela est dû à la série
df[cat]
contenant des éléments a divers types de données par exemple(chaînes de caractères et/ou des flotteurs). Cela pourrait être dû à la façon dont les données sont lues, c'est à dire les nombres sont lus comme le flotteur et le texte comme des chaînes de caractères ou le type de données a été flotteur et changé après lafillna
opérationen d'autres termes
donc, en utilisant la ligne suivante:
devrait aider