Computer >> Máy Tính >  >> Lập trình >> Python

Viết chương trình bằng Python để tính hiệp phương sai dữ liệu được nhóm và tính hiệp phương sai dữ liệu được nhóm giữa hai cột trong khung dữ liệu nhất định

Giả sử, bạn có khung dữ liệu và kết quả để tính hiệp phương sai từ dữ liệu được nhóm và cột tương ứng là,

Grouped data covariance is:
                  mark1       mark2
subjects
maths    mark1    25.0    12.500000
         mark2    12.5    108.333333
science  mark1    28.0    50.000000
         mark2    50.0    233.333333

Grouped data covariance between two columns:
subjects
maths    12.5
science  50.0
dtype: float64

Giải pháp

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước được đưa ra bên dưới -

  • Xác định khung dữ liệu

  • Áp dụng hàm theo nhóm bên trong cột chủ thể khung dữ liệu

df.groupby('subjects')
  • Áp dụng hàm hiệp phương sai cho dữ liệu được nhóm và lưu trữ dữ liệu group_data bên trong,

group_data = df.groupby('subjects').cov()
  • Áp dụng hàm lambda cho các cột mark1 và mark2 với các bản ghi theo nhóm từ cột chủ đề. Nó được định nghĩa bên dưới,

df.groupby('subjects').apply(lambda x: x['mark1'].cov(x['mark2']

Ví dụ

Hãy xem đoạn mã dưới đây để hiểu rõ hơn -

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 is:\n",df)
group_data = df.groupby('subjects').cov()
print("Grouped data covariance is:\n", group_data)
result = df.groupby('subjects').apply(lambda x: x['mark1'].cov(x['mark2']))
print("Grouped data covariance between two columns:\n",result)

Đầu ra

DataFrame is:
   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
Grouped data covariance is:
               mark1    mark2
subjects
maths    mark1 25.0    12.500000
         mark2 12.5    108.333333
science  mark1 28.0    50.000000
         mark2 50.0    233.333333

Grouped data covariance between two columns:
subjects
maths    12.5
science  50.0
dtype: float64