Dieser Fehler tritt für mehrere Variablen auf, auch wenn fehlende Werte behandelt werden. __ Beispiel:
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'
Überprüfen der Variablen, die zu den Fehlerergebnissen führen, in:
df['CRM do Médico'].isnull().sum()
0
Was könnte diesen Fehler neben nan-Werten verursachen?
Dies ist darauf zurückzuführen, dass die Reihe df[cat]
Elemente enthält, die unterschiedliche Datentypen aufweisen (z. B. Strings und/oder Floats). Dies könnte darauf zurückzuführen sein, wie die Daten gelesen werden, d. H. Zahlen werden als Float und Text als Zeichenfolgen gelesen oder der Datentyp wurde Float und nach der fillna
-Operation geändert.
Mit anderen Worten
pandas-Datentyp 'Object' bezeichnet gemischte Typen anstelle von str-Typ
so mit der folgenden Zeile:
df[cat] = le.fit_transform(df[cat].astype(str))
sollte helfen
Da String-Datentypen eine variable Länge haben, werden diese standardmäßig als Objekttyp gespeichert. Dieses Problem hatte ich auch, nachdem ich fehlende Werte behandelt hatte. Das Konvertieren all dieser Spalten in den Typ 'category', bevor die Etikettencodierung in meinem Fall funktioniert hat.
df[cat]=df[cat].astype('category')
Überprüfen Sie dann df.dtypes und führen Sie die Label-Codierung durch.
Oder verwenden Sie einen Abguss mit geteiltem Typ für str
unique, counts = numpy.unique(str(a).split(), return_counts=True)