Pandas: วิธีใช้ฟังก์ชัน mutate() เทียบเท่ากับ r


ในภาษาการเขียนโปรแกรม R เราสามารถใช้ฟังก์ชัน mutate() จากแพ็คเกจ dplyr เพื่อเพิ่มคอลัมน์ใหม่ลงในเฟรมข้อมูลที่คำนวณจากคอลัมน์ที่มีอยู่อย่างรวดเร็ว

ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีการคำนวณค่าเฉลี่ยของคอลัมน์เฉพาะใน R และเพิ่มค่านั้นเป็นคอลัมน์ใหม่ในกรอบข้อมูล:

 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

ฟังก์ชัน mutate() ที่เทียบเท่ากับฟังก์ชันใน pandas ก็คือฟังก์ชัน Transform()

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: การใช้ Transformer() ใน Pandas เพื่อทำซ้ำ mutate() ใน R

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งแสดงคะแนนที่ผู้เล่นบาสเกตบอลจากทีมต่างๆ:

 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

เราสามารถใช้ฟังก์ชัน Transformer() เพื่อเพิ่มคอลัมน์ใหม่ชื่อ Mean_points ซึ่งแสดงคะแนนเฉลี่ยที่แต่ละทีมทำได้:

 #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 คือ 21.25 และค่าคะแนนเฉลี่ยสำหรับผู้เล่นในทีม B คือ 18.25 ดังนั้นค่าเหล่านี้จึงถูกกำหนดตามผู้เล่นแต่ละคนในคอลัมน์ใหม่

โปรดทราบว่าสิ่งนี้ตรงกับผลลัพธ์ที่ได้รับโดยใช้ฟังก์ชัน mutate() ในตัวอย่างเบื้องต้น

เป็นที่น่าสังเกตว่าคุณยังสามารถใช้ แลมบ์ดา เพื่อทำการคำนวณแบบกำหนดเองในฟังก์ชัน การแปลง () ได้

ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีใช้ lambda เพื่อคำนวณ เปอร์เซ็นต์ของคะแนนรวมที่ผู้เล่นแต่ละคนในทีมของตนทำได้:

 #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

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ผู้เล่นคนแรกของทีม A ทำคะแนนได้ 30 คะแนนจากทั้งหมด 85 คะแนนในบรรดาผู้เล่นของทีม A ดังนั้น เปอร์เซ็นต์ของคะแนนรวมของเขาที่ได้คือ 30/85 = 0.352941
  • ผู้เล่นคนที่สองของทีม A ทำคะแนนได้ 22 คะแนนจากทั้งหมด 85 คะแนนในบรรดาผู้เล่นของทีม A ดังนั้น เปอร์เซ็นต์ของคะแนนรวมของเขาที่ได้คือ 22/85 = 0.258824

และอื่นๆ

โปรดทราบว่าเราสามารถใช้อาร์กิวเมนต์ แลม บ์ดาในฟังก์ชัน Transform() เพื่อทำการคำนวณแบบกำหนดเองที่เราต้องการได้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

วิธีดำเนินการผลรวม GroupBy ใน Pandas
วิธีใช้ Groupby และ Plot ใน Pandas
วิธีนับค่าที่ไม่ซ้ำโดยใช้ GroupBy ใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *