用 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
廣告