Pandas DataFrame DataFrame.groupby() Funktion
-
Syntax von
pandas.DataFrame.groupby()
: -
Beispiel-Codes: Gruppieren Sie zwei DataFrames mit
pandas.DataFrame.groupby()
basierend auf den Werten einer einzelnen Spalte -
Beispiel-Codes: Gruppieren Sie zwei DataFrame mit
pandas.DataFrame.groupby()
basierend auf mehreren Bedingungen -
Beispiel-Codes: Setzen Sie
as_index=False
inpandas.DataFrame.groupby()
pandas.DataFrame.groupby()
teilt den DataFrame auf der Grundlage der angegebenen Kriterien in Gruppen auf. Mit der groupby()
-Methode können wir große Datensätze leicht manipulieren.
Syntax von 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)
Parameter
by |
Abbildung, Funktion, Zeichenkette, Label oder iterierbar auf Gruppenelemente |
axis |
gruppieren durch zusammen mit der row (axis=0) oder der column (axis=1) |
level |
Ganzzahliger Wert zur Gruppierung nach einer bestimmten Ebene oder bestimmten Ebenen |
as_index |
Boolesch. Es gibt ein Objekt mit Gruppenbeschriftungen als Index zurück. |
sort |
Boolesch. Es sortiert die Gruppenschlüssel |
group_keys |
Boolesch. Es fügt Gruppenschlüssel zum Index hinzu, um Stücke zu identifizieren. |
squeeze |
Boolesch. Es verringert die Dimension der Rückgabe, wenn möglich. |
observed |
Boolesch. Nur zutreffend, wenn einer der Zackenbarsche kategorial ist, und zeigen nur beobachtete Werte für kategoriale Zackenbarsche an, wenn sie auf True gesetzt sind. |
Zurück
Es gibt ein DataFrameGroupBy
-Objekt zurück, das die zusammengefassten Informationen enthält.
Beispiel-Codes: Gruppieren Sie zwei DataFrames mit pandas.DataFrame.groupby()
basierend auf den Werten einer einzelnen Spalte
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))
Ausgabe:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f73cc992d30>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
Es gruppiert den DataFrame
in Gruppen basierend auf den Werten in der Spalte In_Stock
und gibt ein DataFrameGroupBy
Objekt zurück.
Um Details über das von groupby()
zurückgegebene DataFrameGroupBy
-Objekt zu erhalten, können wir die first()
-Methode des DataFrameGroupBy
-Objekts verwenden, um das erste Element jeder Gruppe zu erhalten.
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())
Ausgabe:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Es druckt den DataFrame, der durch die ersten Elemente beider Gruppen gebildet wird, die von df
abgespalten wurden.
Wir können auch die gesamte Gruppe mit der Methode get_group()
ausdrucken.
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'))
Ausgabe:
Name Price In_Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
Es werden alle Elemente in df
gedruckt, deren Wert in der Spalte In_Stock
den Wert Yes
hat. Zuerst gruppieren wir Elemente mit unterschiedlichen Werten in der Spalte In_Stock
in separate Gruppen, indem wir die Methode groubpy()
verwenden, und greifen dann auf eine bestimmte Gruppe mit der Methode get_group()
zu.
Beispiel-Codes: Gruppieren Sie zwei DataFrame mit pandas.DataFrame.groupby()
basierend auf mehreren Bedingungen
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())
Ausgabe:
Name Price
In_Stock Supplier
No ABC Mango 24
XYZ Pineapple 64
Yes ABC Orange 34
XYZ Apple 44
Es gruppiert die df
in Gruppen basierend auf ihren Werten in den Spalten In_Stock
und Supplier
und gibt ein DataFrameGroupBy
Objekt zurück.
Wir verwenden die first()
Methode, um das erste Element jeder Gruppe zu erhalten. Sie gibt einen DataFrame zurück, der aus der Kombination der ersten Elemente der folgenden vier Gruppen besteht:
- Gruppe mit den Werten der
In_Stock
-SpalteNo
und derSupplier
-SpalteABC
. - Gruppe mit Werten aus der
In_Stock
-SpalteNo
und derSupplier
-SpalteXYZ
. - Gruppe mit Werten aus der
In_Stock
-SpalteYes
und derSupplier
-SpalteABC
. - Gruppe Werten aus der
In_Stock
-SpalteYes
und derSupplier
-SpalteXYZ
.
Der von den Methoden des GroupBy
-Objekts zurückgegebene DataFrame
hat einen MultiIndex
, wenn wir der groupby()
-Funktion mehrere Labels übergeben.
print(grouped_df.first().index)
Ausgabe:
MultiIndex(levels=[['No', 'Yes'], ['ABC', 'XYZ']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['In_Stock', 'Supplier'])
Beispiel-Codes: Setzen Sie as_index=False
in pandas.DataFrame.groupby()
Der Parameter as_index
in der Methode DataFrame.groupby()
ist standardmäßig True
. Die Gruppenbezeichnung ist der Index des zurückgegebenen DataFrame
, wenn GroupBy
Methoden wie first()
angewendet werden.
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)
Ausgabe:
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')
Wie Sie sehen konnten, ist der Index des generierten DataFrame
standardmäßig der Gruppen-Label aufgrund von as_index=True
.
Der Index wird automatisch als Zahlenindex generiert, wenn wir as_index=False
setzen.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn