Pandalarda groupby() ve transform() işlevleri nasıl kullanılır?
Bir pandanın DataFrame’inde groupby() ve transform() işlevlerini birlikte kullanmak için aşağıdaki yöntemleri kullanabilirsiniz:
Yöntem 1: Yerleşik işlevle groupby() ve transform()’u kullanın
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform (' mean ')
Yöntem 2: groupby() ve transform()’u özel bir işlevle kullanma
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform ( lambda x: some function)
Aşağıdaki örnekler, her yöntemin 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', 'A', 'B', 'B', 'B', 'B'], ' points ': [30, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team points 0 to 30 1 to 22 2 to 19 3 to 14 4 B 14 5 B 11 6 B 20 7 B 28
Örnek 1: Groupby() ve transform()’u yerleşik işlevle kullanma
Aşağıdaki kod, DataFrame’e ortalama_noktalar adı verilen yeni bir sütun eklemek için groupby( ) ve transform() işlevlerinin nasıl kullanılacağını gösterir:
#create new column called mean_points
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')
#view updated DataFrame
print (df)
team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25
A Takımındaki oyuncuların ortalama puan değeri 21,25 ve B Takımındaki oyuncuların ortalama puan değeri 18,25 oldu, dolayısıyla bu değerler yeni bir sütunda her oyuncuya göre atandı.
Her takımın aldığı puanların toplamını gösteren yeni bir sütun oluşturmak için sum() gibi başka bir yerleşik işlevi de kullanabileceğimizi unutmayın:
#create new column called sum_points
df[' sum_points '] = df. groupby (' team ')[' points ']. transform (' sum ')
#view updated DataFrame
print (df)
team points sum_points
0 to 30 85
1 to 22 85
2 A 19 85
3 to 14 85
4 B 14 73
5 B 11 73
6 B 20 73
7 B 28 73
A takımı oyuncularının puanlarının toplamı 85 , B takımı oyuncularının puanlarının toplamı 73 oldu, dolayısıyla bu değerler yeni bir sütunda her oyuncuya uygun şekilde atandı.
Örnek 2: Groupby() ve transform()’u özel bir işlevle kullanma
Aşağıdaki kod, her oyuncunun kendi takımlarında attığı toplam puanların yüzdesini hesaplayan özel bir işlev oluşturmak için groupby( ) ve transform() işlevlerinin nasıl kullanılacağını gösterir:
#create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())
#view updated DataFrame
print (df)
team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- A Takımının ilk oyuncusu, A Takımı oyuncuları arasında toplam 85 üzerinden 30 puan aldı. Böylece toplam puan yüzdesi 30/85 = 0,352941 oldu.
- A Takımının ikinci oyuncusu, A Takımı oyuncuları arasında toplam 85 üzerinden 22 puan aldı. Böylece toplam puan yüzdesi 22/85 = 0,258824 oldu.
Ve benzeri.
İstediğimiz herhangi bir özel hesaplamayı gerçekleştirmek için transform() işlevindeki lambda argümanını kullanabileceğimizi 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:
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?