Pandas DataFrame DataFrame.groupby() Função
-
Sintaxe de
pandas.DataFrame.groupby()
: -
Códigos de exemplo: Grupo dois DataFrames com
pandas.DataFrame.groupby()
com base em valores de coluna única -
Códigos de exemplo: Group Two DataFrames With
pandas.DataFrame.groupby()
Based on Multiple Conditions -
Códigos de exemplo: Definir
as_index=False
empandas.DataFrame.groupby()
A função pandas.DataFrame.groupby()
divide o DataFrame em grupos com base em alguns critérios. Podemos facilmente manipular grandes conjuntos de dados utilizando o método grupo-por()
.
Sintaxe de pandas.DataFrame.groupby()
:
DataFrame.groupby(
by=None,
axis=0,
level=None,
as_index=True,
sort=True,
group_keys=True,
squeeze: bool=False,
observed: bool=False)
Parâmetros
by |
mapeamento, função, string, label ou iterável para agrupar elementos |
axis |
agrupar junto com a linha (axis=0) ou coluna (axis=1) |
level |
Valor inteiro para agrupar por um determinado nível ou níveis |
as_index |
Booleano. Ele retorna um objeto com etiquetas de grupo como o índice |
sort |
Booleano. Classifica as chaves do grupo |
group_keys |
Booleano. Adiciona chaves de grupo para indexar para identificar as peças |
squeeze |
Booleano. Diminui a dimensão do retorno quando possível |
observed |
Booleano. Aplicar somente se qualquer uma das garoupas for categórica e só mostrar valores observados para as garoupas categóricas se estiver definida como True . |
Retornar
Ele retorna um objeto DataFrameGroupBy
que contém as informações agrupadas.
Códigos de exemplo: Grupo dois DataFrames com pandas.DataFrame.groupby()
com base em valores de coluna única
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df)
print(type(grouped_df))
Resultado:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f73cc992d30>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
Ela agrupa o DataFrame
em grupos baseados nos valores da coluna In_Stock
e retorna um objeto DataFrameGroupBy
.
Para obter detalhes sobre o objeto DataFrameGroupBy
retornado por groupby()
, podemos utilizar o método first()
do objeto DataFrameGroupBy
para obter o primeiro elemento de cada grupo.
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df.first())
Resultado:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Imprime o DataFrame formado pelos primeiros elementos de ambos os grupos divididos por df
.
Também podemos imprimir o grupo inteiro utilizando o método get_group()
.
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df.get_group('Yes'))
Resultado:
Name Price In_Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
Imprime todos os elementos no df
cujo valor na coluna In_Stock
é Yes
. Primeiro agrupamos elementos com valores diferentes da coluna In_Stock
em grupos separados utilizando o método groubpy()
e depois acessamos um grupo particular utilizando o método get_group()
.
Códigos de exemplo: Group Two DataFrames With pandas.DataFrame.groupby()
Based on Multiple Conditions
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
('Mango', 24, 'No','ABC' ) ,
('banana', 14, 'No','ABC' ) ,
('Apple', 44, 'Yes',"XYZ" ) ,
('Pineapple', 64, 'No',"XYZ") ,
('Kiwi', 84, 'Yes',"XYZ") ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock',"Supplier"])
grouped_df = df.groupby(['In_Stock', 'Supplier'])
print(grouped_df.first())
Resultado:
Name Price
In_Stock Supplier
No ABC Mango 24
XYZ Pineapple 64
Yes ABC Orange 34
XYZ Apple 44
Ela agrupa o df
em grupos baseados em seus valores nas colunas In_Stock
e Supplier
e retorna um objeto DataFrameGroupBy
.
Utilizamos o método first()
para obter o primeiro elemento de cada grupo. Ele retorna um DataFrameFrame formado pela combinação dos primeiros elementos dos quatro grupos seguintes:
- Grupo com valores da coluna
In_Stock
No
eSupplier
colunaABC
. - Grupo com valores da coluna
In_Stock
No
e da colunaSupplier
XYZ
. - Grupo com valores da coluna
In_Stock
Yes
e colunaSupplier
colunaABC
. - Grupo com valores da coluna
In_Stock
Yes
e colunaSupplier
XYZ
.
O DataFrame
retornado pelos métodos do objeto GroupBy
tem um MultiIndex
, quando passamos múltiplos rótulos para a função groupby()
.
print(grouped_df.first().index)
Resultado:
MultiIndex(levels=[['No', 'Yes'], ['ABC', 'XYZ']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['In_Stock', 'Supplier'])
Códigos de exemplo: Definir as_index=False
em pandas.DataFrame.groupby()
O parâmetro as_index
em DataFrame.groupby()
método é True
por padrão. A etiqueta do grupo é o índice do DataFrame
retornado ao aplicar métodos GroupBy
como first()
.
import pandas as pd
fruit_list = [
("Orange", 34, "Yes"),
("Mango", 24, "No"),
("banana", 14, "No"),
("Apple", 44, "Yes"),
("Pineapple", 64, "No"),
("Kiwi", 84, "Yes"),
]
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "In_Stock"])
grouped_df = df.groupby("In_Stock", as_index=True)
firtGroup = grouped_df.first()
print(firtGroup)
print(firtGroup.index)
print("---------")
grouped_df = df.groupby("In_Stock", as_index=False)
firtGroup = grouped_df.first()
print(firtGroup)
print(firtGroup.index)
Resultado:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Index(['No', 'Yes'], dtype='object', name='In_Stock')
---------
In_Stock Name Price
0 No Mango 24
1 Yes Orange 34
Int64Index([0, 1], dtype='int64')
Como você pode ver, o índice do DataFrame
gerado é a etiqueta do grupo por causa de as_index=True
por padrão.
O índice torna-se índice gerado automaticamente em números quando definimos as_index=False
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn