Pandas groupby'ye bir işlev nasıl uygulanır?


Bir pandas DataFrame’de groupby() ve application() işlevlerini birlikte kullanmak için aşağıdaki temel sözdizimini kullanabilirsiniz:

 df. groupby (' var1 '). apply ( lambda x: some function)

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', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

Örnek 1: Göreli frekansları bulmak için groupby() ve application() işlevlerini kullanın

Aşağıdaki kod, pandaların DataFrame’indeki her takım adının göreli frekanslarını bulmak için groupby( ) ve application() işlevlerinin nasıl kullanılacağını gösterir:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

Sonuçta A takımının tüm satırların %42,85’inde, B takımının ise %57,14’ünde göründüğünü görebiliriz.

Örnek 2: Maksimum değerleri bulmak için groupby() ve application() işlevlerini kullanın

Aşağıdaki kod, her takım için maksimum “points_for” değerlerini bulmak amacıyla groupby( ) ve application() işlevlerinin nasıl kullanılacağını gösterir:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

Sonuçtan A takımının alabileceği maksimum puanın 22, B takımının alabileceği maksimum puanın 28 olduğunu görüyoruz.

Örnek 3: Özel bir hesaplama gerçekleştirmek için groupby() ve application() işlevlerini kullanın

Aşağıdaki kod, her takım için “points_for” ve “points_against” arasındaki ortalama farkı bulmak için groupby( ) ve application() işlevlerinin nasıl kullanılacağını gösterir:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

Sonuçlardan, “karşı puan” ve “karşı puan” arasındaki ortalama farkın A takımı için 1,67 ve B takımı için 1,50 olduğunu görebiliriz.

Ek kaynaklar

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

Pandalarda GroupBy toplamı nasıl gerçekleştirilir?
Pandalarda Groupby ve Plot nasıl kullanılır?
Pandalar’da GroupBy kullanılarak benzersiz değerler nasıl sayılır?

Yorum ekle

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