Funzione Pandas DataFrame DataFrame.groupby()
-
Sintassi di
pandas.DataFrame.groupby()
: -
Codici di esempio: raggruppa due DataFrame con
pandas.DataFrame.groupby()
in base ai valori di una singola colonna -
Codici di esempio: gruppo di due DataFrame con
pandas.DataFrame.groupby()
in base a più condizioni -
Codici di esempio: imposta
as_index=False
inpandas.DataFrame.groupby()
pandas.DataFrame.groupby()
divide il DataFrame in gruppi in base ai criteri dati. Possiamo facilmente manipolare grandi set di dati usando il metodo groupby()
.
Sintassi di 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)
Parametri
by |
mappatura, funzione, stringa, label o iterabile per raggruppare elementi |
axis |
raggruppa per insieme alla riga (axis = 0) o alla colonna (axis = 1) |
level |
Numero intero. valore per raggruppare in base a uno o più livelli particolari |
as_index |
Booleano. Restituisce un oggetto con etichette di gruppo come indice |
sort |
Booleano. Ordina le chiavi di gruppo |
group_keys |
Booleano. Aggiunge chiavi di gruppo all’indice per identificare i pezzi |
squeeze |
Booleano. Diminuisce la dimensione del rendimento quando possibile |
observed |
Booleano. Applicare solo se uno qualsiasi dei raggruppatori è categoriale e mostra solo i valori osservati per i raggruppatori categoriali se impostato su True . |
Ritorno
Restituisce un oggetto DataFrameGroupBy
contenente le informazioni raggruppate.
Codici di esempio: raggruppa due DataFrame con pandas.DataFrame.groupby()
in base ai valori di una singola colonna
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))
Produzione:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f73cc992d30>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
Raggruppa il DataFrame
in gruppi basati sui valori nella colonna In_Stock
e restituisce un oggetto DataFrameGroupBy
.
Per ottenere dettagli sull’oggetto DataFrameGroupBy
restituito da groupby()
, possiamo usare il metodo first()
dell’oggetto DataFrameGroupBy
per ottenere il primo elemento di ogni gruppo.
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())
Produzione:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Stampa il DataFrame formato dai primi elementi di entrambi i gruppi divisi da df
.
Possiamo anche stampare l’intero gruppo usando il metodo 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'))
Produzione:
Name Price In_Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
Stampa tutti gli elementi in df
il cui valore nella colonna In_Stock
è Yes
. Per prima cosa raggruppiamo elementi con valori diversi della colonna In_Stock
in gruppi separati usando il metodo groubpy()
e poi accediamo a un gruppo particolare usando il metodo get_group()
.
Codici di esempio: gruppo di due DataFrame con pandas.DataFrame.groupby()
in base a più condizioni
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())
Produzione:
Name Price
In_Stock Supplier
No ABC Mango 24
XYZ Pineapple 64
Yes ABC Orange 34
XYZ Apple 44
Raggruppa il df
in gruppi in base ai loro valori nelle colonne In_Stock
e Supplier
e restituisce un oggetto DataFrameGroupBy
.
Usiamo il metodo first()
per ottenere il primo elemento di ogni gruppo. Restituisce un DataFrame formato dalla combinazione dei primi elementi dei seguenti quattro gruppi:
- Gruppo con i valori della colonna
In_Stock
No
e della colonnaSupplier
ABC
. - Gruppo con i valori della colonna
In_Stock
No
e della colonnaSupplier
XYZ
. - Gruppo con i valori della colonna
In_Stock
Yes
e della colonnaSupplier
ABC
. - Gruppo con i valori della colonna
In_Stock
Yes
e della colonnaSupplier
XYZ
.
Il DataFrame
restituito dai metodi dell’oggetto GroupBy
ha un MultiIndex
, quando passiamo più etichette alla funzione groupby()
.
print(grouped_df.first().index)
Produzione:
MultiIndex(levels=[['No', 'Yes'], ['ABC', 'XYZ']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['In_Stock', 'Supplier'])
Codici di esempio: imposta as_index=False
in pandas.DataFrame.groupby()
Il parametro as_index
nel metodo DataFrame.groupby()
è True
per impostazione predefinita. L’etichetta del gruppo è l’indice del DataFrame
restituito quando si applicano metodi GroupBy
come 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)
Produzione:
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')
Come puoi vedere, l’indice del DataFrame
generato è l’etichetta del gruppo a causa di as_index=True
per impostazione predefinita.
L’indice diventa un indice generato automaticamente in numeri quando impostiamo as_index=False
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn