Contare i valori unici per gruppo in Pandas
Quando lavoriamo con set di dati di grandi dimensioni, a volte dobbiamo applicare alcune funzioni a un gruppo specifico di dati. Ad esempio, abbiamo un set di dati di paesi
e il codice
privato che usano per questioni private. Vogliamo contare il numero di codici utilizzati da un paese. Di seguito sono elencati i diversi metodi da groupby()
per contare i valori univoci.
Useremo lo stesso DataFrame
nelle prossime sezioni come segue,
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)
Il seguente sarà l’output.
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
Metodo df.groupby().nunique()
Vediamo come la funzione df.groupby().nunique()
raggrupperà i nostri paesi.
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)
Verrà emesso quanto segue.
Countries
Canada 1
Germany 2
Japan 2
Switzerland 3
Name: code, dtype: int64
Ciò mostra che il Canada utilizza un codice, la Germania utilizza due codici e così via.
Metodo df.groupby().agg()
Questo metodo funziona come df.groupby().nunique()
. Dobbiamo passare la funzione nunique()
alla funzione agg()
.
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)
Produzione:
Countries code
0 Canada 1
1 Germany 2
2 Japan 2
3 Switzerland 3
.agg({'code': pd.Series.nunique})
Si gggrega usando la funzione pd.Series.nunique
sopra la colonna code
.
Metodo df.groupby().unique()
Questo metodo è utile quando vuoi vedere quale paese sta usando quali codici.
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)
Verrà emesso quanto segue.
Countries
Canada [113]
Germany [100, 115]
Japan [112, 114]
Switzerland [999, 113, 112]
Name: code, dtype: object
Articolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum