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?