Ich habe ein Tool entwickelt, das automatisch Daten im pandas.DataFrame-Format vorverarbeitet. Während dieses Vorverarbeitungsschritts möchte ich kontinuierliche und kategoriale Daten unterschiedlich behandeln. Insbesondere möchte ich in der Lage sein, z. B. einen OneHotEncoder auf nur die kategorischen Daten anzuwenden.Was ist eine gute Heuristik, um festzustellen, ob eine Spalte in einem pandas.DataFrame kategorisch ist?
Nehmen wir nun an, dass ein pandas.DataFrame bereitgestellt wird und keine weiteren Informationen über die Daten im DataFrame verfügbar sind. Was ist eine gute Heuristik, um zu bestimmen, ob eine Spalte im pandas.DataFrame kategorisch ist?
Meine ersten Gedanken sind:
1) Wenn Zeichenfolgen in der Spalte sind (zum Beispiel die Spaltendatentyp ist object
), dann sehr die Spalte enthält wahrscheinlich kategorische Daten
2) Wenn ein gewisser Prozentsatz der Werte in der Spalte ist einzigartig (zB> = 20%), dann enthält die Spalte sehr wahrscheinlich kontinuierliche Daten
Ich habe 1)
gefunden, um gut zu funktionieren, aber 2)
hat nicht sehr gut aus. Ich brauche bessere Heuristiken. Wie würdest du dieses Problem lösen?
Bearbeiten: Jemand gebeten, dass ich erkläre, warum 2)
nicht gut funktioniert. Es gab einige Testfälle, in denen wir noch kontinuierliche Werte in einer Spalte hatten, aber es gab nicht viele eindeutige Werte in der Spalte. Die Heuristik in 2)
ist in diesem Fall offensichtlich gescheitert. Es gab auch Probleme, bei denen wir eine kategorische Spalte hatten, die viele, viele eindeutige Werte hatte, z. B. Passagiernamen in der Titanic-Datei. Gleiches Fehlertyp-Problem bei Spalten.
Ich glaube, diese Frage ist fast völlig undefiniert. Was ist die Verteilung über alle Datensätze in der Welt? Ihre Regel 1 schlägt zum Beispiel für den Postdienst oder das Telefonbuch kläglich fehl. –
Versuchen Sie [Benfords Gesetz] (https://en.wikipedia.org/wiki/Benford%27s_law), numerische Daten von kategorischen zu unterscheiden. –
@ Barmaley.exe Können Sie bitte auf diese Idee näher eingehen? –