Conte valores únicos por grupo(s) em Pandas
Quando estamos trabalhando com grandes conjuntos de dados, às vezes temos que aplicar alguma função a um grupo específico de dados. Por exemplo, temos um array de dados de países
e o código privado
que eles utilizam para assuntos privados. Queremos contar o número de códigos que um país utiliza. Abaixo estão listadas as diferentes formas de contar valores únicos.
Utilizaremos o mesmo DataFrame
nas próximas seções como a seguir,
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)
O resultado será o seguinte.
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
df.groupby().nunique()
Método
Vamos ver como df.groupby().nunique()
funcionará groupby
nossos países.
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)
O seguinte será produzido.
Countries
Canada 1
Germany 2
Japan 2
Switzerland 3
Name: code, dtype: int64
Isto mostra que o Canadá está utilizando um código, a Alemanha está utilizando dois códigos, e assim por diante.
df.groupby().agg()
Método
Este método funciona como df.groupby().nunique()
. Precisamos passar a função nunique()
para a função 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)
Resultado:
Countries code
0 Canada 1
1 Germany 2
2 Japan 2
3 Switzerland 3
.agg({'code': pd.Series.nunique})
Ele é gerado utilizando a função pd.Series.nunique
sobre a coluna code
.
df.groupby().unique()
Método
Este método é útil quando você quer ver qual país está usando quais códigos.
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)
O seguinte será produzido.
Countries
Canada [113]
Germany [100, 115]
Japan [112, 114]
Switzerland [999, 113, 112]
Name: code, dtype: object
Artigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum