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

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

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
comments powered by Disqus