Pandalar: "varlıklara göre gruplandırma" için basit bir formül


Pandalarda “GROUP BY HAVING” SQL ifadesinin eşdeğerini yürütmek için aşağıdaki temel sözdizimini kullanabilirsiniz:

 df. groupby (' some_column '). filter ( lambda x: some condition)

Aşağıdaki örnekler, bu sözdiziminin pratikte aşağıdaki pandalar DataFrame ile nasıl kullanılacağını gösterir:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   ' position ': ['G', 'F', 'F', 'G', 'F', 'F', 'G', 'G'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team position points
0 AG 30
1 AF 22
2 FY 19
3 BG 14
4 BF 14
5 BF 11
6 GC 20
7 GC 28

Örnek 1: Count’lu panda grubu

Aşağıdaki kod, Takım sütunundaki değere göre satırların nasıl gruplanacağını ve ardından yalnızca sayısı 2’den büyük olan takımların nasıl filtreleneceğini gösterir:

 #group by team and filter for teams with count > 2
df. groupby (' team '). filter ( lambda x: len (x) > 2 )


        team position points
0 A G 30
1 A F 22
2 A F 19
3 B G 14
4 B F 14
5 B F 11

Her iki takımın da sayısı 2’den büyük olduğundan yalnızca takım değeri “A” veya “B” olan satırların döndürüldüğünü unutmayın.

Örnek 2: Ortalama değere sahip panda grubu

Aşağıdaki kod, Takım sütunundaki değere göre satırların nasıl gruplanacağını ve ardından yalnızca ortalama puan değeri 20’den büyük olan takımların nasıl filtreleneceğini gösterir:

 #group by team and filter for teams with mean points > 20
df. groupby (' team '). filter ( lambda x: x[' points ']. mean () > 20 )

        team position points
0 A G 30
1 A F 22
2 A F 19
6 C G 20
7 C G 28

Ortalama puan değeri 20’den büyük olan iki takım olduğundan yalnızca takım değeri “A” veya “C” olan satırların döndürüldüğünü unutmayın.

Örnek 3: Toplamı olan panda grubu

Aşağıdaki kod, Takım sütunundaki satırların değere göre nasıl gruplandırılacağını ve ardından yalnızca puan toplamı tam olarak 48 olan takımların nasıl filtreleneceğini gösterir:

 #group by team and filter for teams with sum of points equal to 48
df. groupby (' team '). filter ( lambda x: x[' points ']. sum () == 48 )

        team position points
6 C G 20
7 C G 28

Puan toplamı 48’e eşit olan tek takım olduğundan yalnızca takım değeri “C” olan satırların döndürüldüğünü unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde pandalarda diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:

Pandalar: sütunu değerle eşleşen satırların dizinini alın
Pandalar: belirli bir dize içeren sütunların nasıl seçileceği
Pandalar: sütunun bir dize içerip içermediği nasıl kontrol edilir

Yorum ekle

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