Pandas DataFrame DataFrame.groupby() Fonction
-
Syntaxe de
pandas.DataFrame.groupby()
: -
Exemples de codes: regrouper deux DataFrames avec
pandas.DataFrame.groupby()
en fonction des valeurs d’une seule colonne -
Exemples de codes: regrouper deux DataFrames avec
pandas.DataFrame.groupby()
en fonction de plusieurs conditions -
Exemples de codes: définissez
as_index=False
danspandas.DataFrame.groupby()
pandas.DataFrame.groupby()
prend un DataFrame comme entrée divise le DataFrame en groupes sur la base de critères donnés. Nous pouvons facilement manipuler de grands ensembles de données en utilisant la méthode groupby()
.
Syntaxe 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)
Paramètres
by |
mappage, fonction, chaîne, label ou itérable pour grouper des éléments |
axis |
regrouper avec la ligne (axis = 0 ) ou la colonne (axis = 1 ) |
level |
Entier. valeur à regrouper par niveau ou niveaux particuliers |
as_index |
Booléen. Il retourne un objet avec des étiquettes de groupe comme index |
sort |
Booléen. Il trie les clés de groupe |
group_keys |
Booléen. Il ajoute des clés de groupe à indexer pour identifier les pièces |
squeeze |
Booléen. Il diminue la dimension du retour lorsque cela est possible |
observed |
Booléen. S’applique uniquement si l’un des groupeurs est catégorique et n’affiche les valeurs observées pour les groupeurs catégoriques que s’il est défini sur True . |
Revenir
Il retourne un objet DataFrameGroupBy
contenant les informations regroupées.
Exemples de codes: regrouper deux DataFrames avec pandas.DataFrame.groupby()
en fonction des valeurs d’une seule colonne
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))
Production:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f73cc992d30>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
Il regroupe le DataFrame
en groupes en fonction des valeurs de la colonne In_Stock
et retourne un objet DataFrameGroupBy
.
Pour obtenir des détails sur l’objet DataFrameGroupBy
renvoyé par groupby()
, nous pouvons utiliser la méthode first()
de l’objet DataFrameGroupBy
pour obtenir le premier élément de chaque groupe.
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())
Production:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Il imprime le DataFrame formé par les premiers éléments des deux groupes séparés de df
.
Nous pouvons également imprimer le groupe entier en utilisant la méthode 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'))
Production:
Name Price In_Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
Il imprime tous les éléments dans df
dont la valeur dans la colonne In_Stock
est Yes
. Nous groupons d’abord les éléments avec différentes valeurs de la colonne In_Stock
dans des groupes séparés en utilisant la méthode groubpy()
puis accédons à un groupe particulier en utilisant la méthode get_group()
.
Exemples de codes: regrouper deux DataFrames avec pandas.DataFrame.groupby()
en fonction de plusieurs 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())
Production:
Name Price
In_Stock Supplier
No ABC Mango 24
XYZ Pineapple 64
Yes ABC Orange 34
XYZ Apple 44
Il regroupe le df
en groupes en fonction de leurs valeurs dans les colonnes In_Stock
et Supplier
et retourne un objet DataFrameGroupBy
.
Nous utilisons la méthode first()
pour obtenir le premier élément de chaque groupe. Il retourne un DataFrame formé par la combinaison des premiers éléments des quatre groupes suivants:
- Groupe avec les valeurs de la colonne
In_Stock
No
et de la colonneSupplier
ABC
. - Groupe avec des valeurs de la colonne
In_Stock
Non
et de la colonneSupplier
XYZ
. - Groupe avec les valeurs de la colonne
In_Stock
Oui
et de la colonneSupplier
ABC
. - Groupe avec des valeurs de la colonne
In_Stock
Oui
et de la colonneFournisseur
XYZ
.
Le DataFrame
retourné par les méthodes de l’objet GroupBy
a un MultiIndex
, lorsque nous passons plusieurs étiquettes à la fonction groupby()
.
print(grouped_df.first().index)
Production:
MultiIndex(levels=[['No', 'Yes'], ['ABC', 'XYZ']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['In_Stock', 'Supplier'])
Exemples de codes: définissez as_index=False
dans pandas.DataFrame.groupby()
Le paramètre as_index
dans la méthode DataFrame.groupby()
est True
par défaut. L’étiquette de groupe est l’index du DataFrame
retourné lors de l’application des méthodes GroupBy
comme 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)
Production:
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')
Comme vous pouvez le voir, l’index du DataFrame
généré est les étiquettes de groupe par défaut, qui est as_index = True
.
L’index devient automatiquement un index généré en nombre lorsque nous définissons as_index = False
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn