用 Python 編寫程式,計算給定資料框中分組資料的協方差,並計算兩個列之間的分組資料協方差


假設你有資料框,並且計算出來的分組資料的協方差和相對應列如下:

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

解決方案

為了解決這個問題,我們將按照以下步驟進行:

  • 定義一個數據框

  • 在資料框 subject 列裡面應用 groupby 函式

df.groupby('subjects')
  • 將協方差函式應用到分組資料並存儲在 group_data 中

group_data = df.groupby('subjects').cov()
  • 使用 lambda 函式處理分組記錄中的 mark1 和 mark2 列,如下所示:

df.groupby('subjects').apply(lambda x: x['mark1'].cov(x['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 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)

輸出

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

更新時間:25-Feb-2021

295 次瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始
廣告