如何从pandas数据框返回相关值



我正在研究一种计算数据集中两列数据之间相关性的方法。数据集由4列A1、A2、A3和Class组成。我的目标是去除A3,如果A1 &A3大于0.6或如果A1 &A3小于0.6

数据集的示例如下:

A1,A2,A3,Class
2,0.4631338,1.5,3
8,0.7460648,3.0,3
6,0.264391038,2.5,2
5,0.4406713,2.3,1
2,0.410438159,1.5,3
2,0.302901816,1.5,2
6,0.275869396,2.5,3
8,0.084782428,3.0,3

我在这个项目中使用的python程序是这样写的

from numpy.core.defchararray import count
import pandas as pd
import numpy as np
import numpy as np
def main():
s = pd.read_csv('A1-dm.csv')
print(calculate_correlation(s))
def calculate_correlation(s):
# if correlation > 0.6 or correlation < 0.6 remove A3
s = s[['A1','A3']]
return s.corr()[1,0]
main()
当我运行我的代码时,我得到以下错误:
File "C:UsersphyseAppDataRoamingPythonPython36site-packagespandascoreindexesbase.py", line 2897, in get_loc
raise KeyError(key) from err
KeyError: (1, 0)

我已经查看了这里的文档。我所面临的问题是从。corr()返回的协方差矩阵中选择1,0元素。

下面是我的例子:

cor = df.corr()
if cor['A3'] > 0.6:
train.drop(columns = 'A3', inplace = True)
else:
pass

尝试:

corr = df.corr()
if corr['A3'].loc['A1']!=0.6:
df.drop(columns=['A3'], inplace=True)

使用。iloc从协方差矩阵中获取1,0元素

:

def calculate_correlation(s):
# if correlation > 0.6 or correlation < 0.6 remove A3
s = s[['A1','A3']]
return (s.corr().iloc[1,0])

最新更新