Pandalar: r'ye eşdeğer bir mutate() işlevi nasıl kullanılır?


R programlama dilinde, mevcut sütunlardan hesaplanan bir veri çerçevesine hızlı bir şekilde yeni sütunlar eklemek için dplyr paketindeki mutate() fonksiyonunu kullanabiliriz.

Örneğin, aşağıdaki kod, R’deki belirli bir sütunun ortalama değerinin nasıl hesaplanacağını ve bu değerin veri çerçevesinde yeni bir sütun olarak nasıl ekleneceğini gösterir:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(30, 22, 19, 14, 14, 11, 20, 28))

#add new column that shows mean points by team
df <- df %>%
      group_by(team) %>%
      mutate(mean_points = mean(points))

#view updated data frame
df

  team points mean_points           
1 to 30 21.2
2 A 22 21.2
3 A 19 21.2
4 A 14 21.2
5 B 14 18.2
6 B 11 18.2
7 B 20 18.2
8 B 28 18.2

Pandalardaki mutate() fonksiyonunun eşdeğeri transform() fonksiyonudur.

Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.

Örnek: R’de mutate() işlevini kopyalamak için pandalarda transform() işlevinin kullanılması

Farklı takımlardaki basketbol oyuncularının attığı sayıları gösteren aşağıdaki panda DataFrame’e sahip olduğumuzu varsayalım:

 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

Her takımın aldığı ortalama puanları gösteren Mean_points adlı yeni bir sütun eklemek için transform() işlevini kullanabiliriz:

 #add new column to DataFrame that shows mean points by team
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ı.

Bunun, giriş örneğindeki mutate() işlevi kullanılarak elde edilen sonuçlarla eşleştiğini unutmayın.

Transform() işlevinde özel hesaplamalar gerçekleştirmek için lambda’yı da kullanabileceğinizi belirtmekte fayda var.

Örneğin, aşağıdaki kod , her oyuncunun kendi takımında attığı toplam puanların yüzdesini hesaplamak için lambda’nın 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