Kas ir pandas groupby() un kā to lietot
Izmantojot Python pandas DataFrame.groupby() funkciju, varat grupēt datus pēc konkrētiem kritērijiem un veikt dažādas datu apkopojumus un pārveidojumus.
Kāda ir pandas DataFrame.groupby() sintakse?
Pandas groupby() pieņem līdz četriem parametriem. Pamata sintakse ir šāda:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonSvarīgi parametri groupby
| Parametrs | Apraksts | Noklusējuma vērtība |
|---|---|---|
by
|
Atslēga vai Python atslēgu saraksts, pēc kura grupēt; nedrīkst kombinēt ar level
|
None
|
level
|
Izmanto MultiIndex, lai norādītu vienu vai vairākus grupēšanas līmeņus. | None
|
as_index
|
Ja True, grupas atslēgas tiek iestatītas kā rezultātā iegūtā DataFrame indekss
|
True
|
group_keys
|
Ja True, grupu atslēgas tiek iekļautas grupu indeksā.
|
True
|
dropna
|
Norāda, vai izslēgt grupas ar NaN vērtībām | True
|
Kā lietot pandas DataFrame.groupby()
Funkcija pandas groupby() ir īpaši noderīga lielu datu kopu analīzei un apkopošanai, palīdzot identificēt modeļus vai anomālijas.
Grupēšana un apkopojums
Zemāk ir piemērs pārdošanas datu kopai, kas satur informāciju par pārdošanas datumu, pārdotajiem produktiem un pārdotajiem daudzumiem:
import pandas as pd
# Sample sales dataset
data = {
'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Product': ['A', 'B', 'A', 'B', 'A'],
'Quantity': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)pythonRezultātā iegūtais DataFrame izskatās šādi:
Date Product Quantity
0 2021-01-01 A 10
1 2021-01-01 B 20
2 2021-01-02 A 15
3 2021-01-02 B 25
4 2021-01-03 A 10Tālāk mēs grupēsim datu kopu pēc produkta, izmantojot pandas groupby(). Tad aprēķināsim katra produkta kopējo pārdotā daudzumu, izmantojot funkciju sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Rezultāts parāda kopējo pārdotā skaitu katram produktam:
Product
A 35
B 45
Name: Quantity, dtype: int64Vairāki apkopojumi
Šajā piemērā izmantosim paplašinātu datu kopu, kas ietver arī ieņēmumus:
data = {
'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Product': ['A', 'B', 'A', 'B', 'A'],
'Quantity': [10, 20, 15, 25, 10],
'Revenue': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)pythonDataFrame izskatās šādi:
Date Product Quantity Revenue
0 2021-01-01 A 10 100
1 2021-01-01 B 20 200
2 2021-01-02 A 15 150
3 2021-01-02 B 25 250
4 2021-01-03 A 10 100Izmantojot pandas DataFrame.groupby(), mēs grupēsim datus pēc produkta un pēc tam izmantosim agg() funkciju, lai aprēķinātu kopējo daudzumu un ieņēmumus, kā arī vidējos ieņēmumus par produktu.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Šeit ir rezultāts:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000