Zählen Sie eindeutige Werte pro Gruppe(n) in Pandas

Ahmed Waheed 30 Januar 2023
  1. Methode df.groupby().nunique()
  2. Methode df.groupby().agg()
  3. df.groupby().unique() Methode
Zählen Sie eindeutige Werte pro Gruppe(n) in Pandas

Wenn wir mit großen Datensätzen arbeiten, müssen wir manchmal eine Funktion auf eine bestimmte Gruppe von Daten anwenden. Zum Beispiel haben wir einen Datensatz von Ländern und den privaten Code, den sie für private Angelegenheiten verwenden. Wir wollen die Anzahl der Codes zählen, die ein Land benutzt. Nachstehend sind die verschiedenen Möglichkeiten zur Zählung eindeutiger Werte aufgelistet.

  1. df.groupby().nunique() Methode
  2. df.groupby().agg() Methode
  3. df.groupby().unique() Methode

In den nächsten Abschnitten werden wir denselben DataFrame wie folgt verwenden,

import pandas as pd

data = [
    [999, "Switzerland"],
    [113, "Switzerland"],
    [112, "Japan"],
    [112, "Switzerland"],
    [113, "Canada"],
    [114, "Japan"],
    [100, "Germany"],
    [114, "Japan"],
    [115, "Germany"],
]
df = pd.DataFrame(data, columns=["code", "Countries"])
print(df)

Das Folgende wird die Ausgabe sein.

   code    Countries
0   999  Switzerland
1   113  Switzerland
2   112        Japan
3   112  Switzerland
4   113       Canada
5   114        Japan
6   100      Germany
7   114        Japan
8   115      Germany

Methode df.groupby().nunique()

Lassen Sie uns sehen, wie df.groupby().nunique() funktionieren wird, um unsere Länder zu groupby.

import pandas as pd

data = [
    [999, "Switzerland"],
    [113, "Switzerland"],
    [112, "Japan"],
    [112, "Switzerland"],
    [113, "Canada"],
    [114, "Japan"],
    [100, "Germany"],
    [114, "Japan"],
    [115, "Germany"],
]

df = pd.DataFrame(data, columns=["code", "Countries"])
result = df.groupby("Countries")["code"].nunique()
print(result)

Folgendes wird ausgegeben.

Countries
Canada         1
Germany        2
Japan          2
Switzerland    3
Name: code, dtype: int64

Dies zeigt, dass Kanada einen Code verwendet, Deutschland verwendet zwei Codes und so weiter.

Methode df.groupby().agg()

Diese Methode funktioniert genauso wie df.groupby().nunique(). Wir müssen die nunique() Funktion an die agg() Funktion übergeben.

import pandas as pd

data = [
    [999, "Switzerland"],
    [113, "Switzerland"],
    [112, "Japan"],
    [112, "Switzerland"],
    [113, "Canada"],
    [114, "Japan"],
    [100, "Germany"],
    [114, "Japan"],
    [115, "Germany"],
]
df = pd.DataFrame(data, columns=["code", "Countries"])
result = df.groupby(by="Countries", as_index=False).agg({"code": pd.Series.nunique})
print(result)

Ausgabe:

     Countries  code
0       Canada     1
1      Germany     2
2        Japan     2
3  Switzerland     3
.agg({'code': pd.Series.nunique})

Sie aggregiert mit der Funktion pd.Series.nunique über die Spalte code.

df.groupby().unique() Methode

Diese Methode ist nützlich, wenn Sie sehen möchten, welches Land welche Codes verwendet.

import pandas as pd

data = [
    [999, "Switzerland"],
    [113, "Switzerland"],
    [112, "Japan"],
    [112, "Switzerland"],
    [113, "Canada"],
    [114, "Japan"],
    [100, "Germany"],
    [114, "Japan"],
    [115, "Germany"],
]
result = df.groupby("Countries")["code"].unique()
print(result)

Es wird Folgendes ausgegeben.

Countries
Canada                   [113]
Germany             [100, 115]
Japan               [112, 114]
Switzerland    [999, 113, 112]
Name: code, dtype: object

Verwandter Artikel - Pandas DataFrame