Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโปรแกรม Python คำนวณ Covariance ของข้อมูลกลุ่ม และ Covariance ระหว่างสองคอลัมน์ในกลุ่ม

สมมติว่าคุณมี DataFrame และต้องการคำนวณ covariance matrix ของข้อมูลที่จัดกลุ่มแล้ว (grouped) และ covariance ระหว่างสองคอลัมน์เฉพาะในแต่ละกลุ่ม

วิธีแก้ปัญหา

  1. สร้าง DataFrame ที่มีคอลัมน์ subjects, mark1, mark2
  2. ใช้ df.groupby('subjects').cov() คำนวณ covariance matrix ต่อกลุ่ม
  3. ใช้ df.groupby('subjects').apply(lambda x: x['mark1'].cov(x['mark2'])) คำนวณ covariance ระหว่าง mark1 และ mark2 ต่อกลุ่ม

ตัวอย่างโค้ด

import pandas as pd

df = pd.DataFrame({'subjects': ['maths', 'maths', 'maths', 'science', 'science', 'science'],
                   'mark1': [80, 90, 85, 95, 93, 85],
                   'mark2': [85, 90, 70, 75, 95, 65]})

print("DataFrame ต้นฉบับ:\n", df)

# Covariance matrix ต่อกลุ่ม
group_cov = df.groupby('subjects').cov()
print("\nCovariance matrix ต่อกลุ่ม:")
print(group_cov)

# Covariance ระหว่าง mark1 และ mark2 ต่อกลุ่ม
pair_cov = df.groupby('subjects').apply(lambda x: x['mark1'].cov(x['mark2']))
print("\nCovariance ระหว่าง mark1 และ mark2 ต่อกลุ่ม:")
print(pair_cov)

ผลลัพธ์

DataFrame ต้นฉบับ:
  subjects  mark1  mark2
0   maths     80     85
1   maths     90     90
2   maths     85     70
3  science    95     75
4  science    93     95
5  science    85     65

Covariance matrix ต่อกลุ่ม:
                mark1     mark2
subjects
maths  mark1  25.000000  12.500000
       mark2  12.500000 108.333333
science mark1  28.000000  50.000000
       mark2  50.000000 233.333333

Covariance ระหว่าง mark1 และ mark2 ต่อกลุ่ม:
subjects
maths     12.5
science   50.0
dtype: float64

คำอธิบาย:

  • groupby().cov() คืนค่า covariance matrix ขนาด 2x2 ต่อกลุ่ม (mark1-mark1, mark1-mark2, mark2-mark1, mark2-mark2)
  • apply(lambda x: x['mark1'].cov(x['mark2'])) คำนวณ covariance ระหว่างสองคอลัมน์เฉพาะ ต่อกลุ่ม
  • Covariance บวก = แนวโน้มเคลื่อนที่ไปในทิศทางเดียวกัน, ลบ = ทิศทางตรงข้าม