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?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir