Pandalar: birden çok sütunda nasıl gruplandırılır ve toplanır
Çoğu zaman bir pandas DataFrame’in birden çok sütununu gruplamak ve toplamak isteyebilirsiniz.
Neyse ki pandaların .groupby() ve .agg() işlevlerini kullanarak bunu yapmak kolaydır.
Bu eğitimde bu işlevlerin pratik kullanımına ilişkin çeşitli örnekler açıklanmaktadır.
Örnek 1: İki sütuna göre gruplandırın ve ortalamayı bulun
Aşağıdaki pandalara sahip olduğumuzu varsayalım DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
Aşağıdaki kod “takım” ve “konum” sütunlarına göre nasıl gruplandırılacağını ve ortalama pasların nasıl bulunacağını gösterir:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Çıktı bize şunları söylüyor:
- A takımının G pozisyonundaki oyuncuların ortalama asistleri 5,0’dır .
- B takımında F pozisyonundaki oyuncuların ortalama asisti 6,0’dır .
- B takımının G pozisyonundaki oyuncuların ortalama asistleri 7,5’tir .
Ve benzeri.
Ortaya çıkan DataFrame’in sütunlarını yeniden adlandırmak için aşağıdaki kodu da kullanabiliriz:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Örnek 2: İki sütuna göre gruplandırın ve birden çok istatistik bulun
Önceki örnekle aynı panda DataFrame’i kullandığımızı varsayalım:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
Aşağıdaki kod, “takım” ve “pozisyon” sütunlarında gruplandırılmış ortalama ve maksimum ribaund sayısının nasıl bulunacağını gösterir:
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
Çıktı bize şunları söylüyor:
- A Takımındaki G pozisyonundaki oyuncuların ortalama ribaund değeri 11’dir .
- A takımının G pozisyonundaki oyuncuların maksimum ribaund sayısı 11’dir .
- B takımının F pozisyonundaki oyuncuların ortalama ribauntları 8’dir .
- B takımının F pozisyonundaki oyuncuların maksimum ribaund sayısı 10’dur .
Ve benzeri.
Ek kaynaklar
Pandas DataFrame’i birden çok koşulda filtreleme
Pandas DataFrame’de eksik değerler nasıl sayılır?
Birden fazla Pandas DataFrame’i nasıl istifleyebilirim?