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?

Yorum ekle

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