English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas Kategoriedaten

Beispiel für Operationen mit kategorischen Daten von Pandas

Daten enthalten in der Regel in Echtzeit wiederholte Textspalten. Geschlecht, Land/Funktionen wie Region und Code sind stets wiederkehrend. Dies sind Beispiele für kategorische Daten.
Kategorische Variablen können nur begrenzte und in der Regel festgelegte mögliche Werte annehmen. Neben der festen Länge können kategorische Daten auch eine Ordnung haben, können aber keine numerischen Operationen durchführen. Kategorien sind ein Pandas-Datentyp.

Kategorische Datentypen sind in folgenden Fällen nützlich

Eine Zeichenfolgevariable, die nur wenige verschiedene Werte enthält. Die Konvertierung einer solchen Zeichenfolgevariable in eine kategorische Variable spart etwas Speicherplatz.

Die Wörterbuchreihenfolge der Variablen ist von der logischen Reihenfolge ("eins", "zwei", "drei") unterschiedlich. Durch Konvertierung in eine Kategorie und Angabe der Reihenfolge auf der Kategorie können Sortierung und Minimum/Die größte wird den logischen instead des alphabetischen Reihenfolgen verwenden.

Als Signal von anderen Python-Bibliotheken sollte diese Spalte als kategorische Variable betrachtet werden (z.B. mit geeigneten statistischen Methoden oder Darstellungstypen).

Objekt creation

Kategorische Objekte können auf verschiedene Weisen erstellt werden. Nachfolgend werden verschiedene Methoden beschrieben:

Kategorie

Durch Angabe von dtype="category" beim Erstellen des Pandas-Objekts.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(s)

Die Ergebnisse des Laufens sind wie folgt:

 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categories (3, object): [a, b, c]

Die Anzahl der Elemente, die an das Series-Objekt übergeben werden, beträgt4, aber die Kategorien sind nur3. Beim Betrachten der Ausgabe der Kategorien beachten Sie das gleiche.

pd.Categorical

Mit dem Standard-Pandas-Kategorisierungskonstruktor können wir ein Kategoriekonto erstellen.

pandas.Categorical(values, categories, ordered)

Lassen Sie uns ein Beispiel betrachten-

 import pandas as pd
 cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
 print(cat)

Die Ergebnisse des Laufens sind wie folgt:

 [a, b, c, a, b, c]
 Categories (3, object): [a, b, c]

Lassen Sie uns noch ein Beispiel betrachten

 import pandas as pd
 cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c', 'd'], ['c', 'b', 'a'])
 print(cat)

Die Ergebnisse des Laufens sind wie folgt:

 [a, b, c, a, b, c, NaN]
 Categories (3, object): [c, b, a]

Hierbei stellt der zweite Parameter die Kategorie dar. Daher wird jeder Wert, der in der Kategorie nicht vorhanden ist, als NaN betrachtet.
Nun schauen wir uns das folgende Beispiel an:

 import pandas as pd
 cat = cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c', 'd'], ['c', 'b', 'a'], ordered=True)
 print(cat)

Die Ergebnisse des Laufens sind wie folgt:

 [a, b, c, a, b, c, NaN]
 Categories (3, object): [c < b < a]

Logischerweise bedeutet diese Reihenfolge, dass a größer als b und b größer als c ist.

Beschreibung

Mit dem Befehl .describe() für kategorische Daten erhalten wir ähnliche Ausgaben in einer Reihe oder Datenbox in Form eines Strings über den Typ.

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 df = pd.DataFrame({"cat": cat, "s": ["a", "c", "c", np.nan]})
 print(df.describe())
 print(df["cat"].describe())

Die Ergebnisse des Laufens sind wie folgt:

    cat s
count    3 3
unique   2 2
top c c
freq     2 2
count     3
unique    2
top c
freq      2
Name: cat, dtype: object

Eigenschaften der Kategorien abrufen

Der Befehl obj.cat.categories wird verwendet, um die Kategorien des Objekts zu erhalten.

 import pandas as pd
 import numpy as np
 s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(s.categories)

Die Ergebnisse des Laufens sind wie folgt:

  Index([u'b', u'a', u'c'], dtype='object')

Der Befehl obj.ordered wird verwendet, um die Reihenfolge des Objekts zu erhalten.

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(cat.ordered)

Die Ergebnisse des Laufens sind wie folgt:

   False

Die Funktion gibt false zurück, da wir keine Reihenfolge angegeben haben.

Kategorien umbenennen

Die Umbenennung der Kategorien wird durch Zuweisung eines neuen Wertes an die Eigenschaft series.cat.categories series.cat.categories abgeschlossen.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s.cat.categories = ["Group %s" % g for g in s.cat.categories]
 print(s.cat.categories)

Die Ergebnisse des Laufens sind wie folgt:

Index([u'Group a', u'Group b', u'Group c'], dtype='object')

Die initialen Kategorien [a, b, c] werden durch das Attribut s.cat.categories des Objekts aktualisiert.

Neue Kategorien hinzufügen

Mit dem Methode Categorical.add_categories() können neue Kategorien hinzugefügt werden.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s = s.cat.add_categories([4])
 print(s.cat.categories)

Die Ergebnisse des Laufens sind wie folgt:

Index([u'a', u'b', u'c', 4], dtype='object')

Kategorien löschen

Mit dem Methode Categorical.remove_categories() können unerwünschte Kategorien entfernt werden.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(("Original object:"))
 print(s)
 print(("Nach der Entfernung:"))
 print(s.cat.remove_categories("a"))

Die Ergebnisse des Laufens sind wie folgt:

 Ursprüngliches Objekt:
 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categories (3, object): [a, b, c]
 Nach der Entfernung:
 0 NaN
 1 b
 2 c
 3 NaN
 dtype: category
 Categories (2, object): [b, c]

Kategorische Daten Vergleich

Kategorische Daten können in drei Fällen mit anderen Objekten verglichen werden:

Gleichheit (== und !=) mit Objekten verglichen, die Listen mit der gleichen Länge wie kategorische Daten haben (Liste, Sequenz, Array, ...).

Wenn Sortierung== True und Kategorien gleich sind, werden kategorische Daten mit allen Vergleichen einer anderen Kategorieserie verglichen (==, !=, >, >=,  < und <=).< div>    

Alle Vergleiche von kategorischen Daten mit Skalaren.

Sehen Sie unten das Beispiel:

 import pandas as pd
 cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
 cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
 print(cat>cat1)

Die Ergebnisse des Laufens sind wie folgt:

 0  False
 1  False
 2  True
 dtype: bool