วิธีการคำนวณความสัมพันธ์ตามกลุ่มใน pandas


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อคำนวณความสัมพันธ์ระหว่างตัวแปรสองตัวตามกลุ่มในแพนด้า:

 df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]

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

ตัวอย่าง: คำนวณความสัมพันธ์ตามกลุ่มใน Pandas

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [2, 7, 9, 3, 12, 10, 14, 21]})

#view DataFrame
print (df)

เราสามารถใช้รหัสต่อไปนี้เพื่อคำนวณความสัมพันธ์ระหว่าง คะแนน และ การช่วยเหลือ โดยจัดกลุ่มตาม ทีม :

 #calculate correlation between points and assists, grouped by team
df. groupby (' team ')[[' points ',' assists ']]. corr (). unstack (). iloc [:, 1 ]

team
At 0.603053
B 0.981798
Name: (points, assists), dtype: float64

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างคะแนนและแอสซิสต์สำหรับทีม A คือ 0.603053
  • ค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างคะแนนและแอสซิสต์สำหรับทีม B คือ 0.981798

เนื่องจากสัมประสิทธิ์สหสัมพันธ์ทั้งสองเป็นบวก สิ่งนี้บอกเราว่าความสัมพันธ์ระหว่างคะแนนและแอสซิสต์สำหรับทั้งสองทีมนั้นเป็นเชิงบวก

นั่นคือผู้เล่นที่มีแนวโน้มจะทำคะแนนได้มากกว่าก็มักจะบันทึกการช่วยเหลือมากกว่าด้วย

ที่เกี่ยวข้อง: อะไรคือความสัมพันธ์ที่ “แข็งแกร่ง”?

โปรดทราบว่าเราสามารถย่อไวยากรณ์ให้สั้นลงได้โดยไม่ใช้ฟังก์ชัน unstack และ iloc แต่ผลลัพธ์ที่ได้จะน่าเกลียดกว่า:

 df. groupby (' team ')[[' points ',' assists ']]. corr ()

		assist points
team			
A points 1.000000 0.603053
        assists 0.603053 1.000000
B points 1.000000 0.981798
        assists 0.981798 1.000000

ไวยากรณ์นี้สร้างเมทริกซ์สหสัมพันธ์สำหรับทั้งสองทีม ซึ่งให้ข้อมูลที่มากเกินไปแก่เรา

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

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

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

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

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