如何从pandas dataframe返回相关值

42fyovps  于 2023-06-04  发布在  其他
关注(0)|答案(3)|浏览(299)

我正在研究一种计算数据集中两列数据之间相关性的方法。数据集由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:\Users\physe\AppData\Roaming\Python\Python36\site-packages\pandas\core\indexes\base.py", line 2897, in get_loc
    raise KeyError(key) from err
KeyError: (1, 0)

我看了here的文档。我面临的问题是从.corr()返回的协方差矩阵中选择1,0元素。

ve7v8dk2

ve7v8dk21#

下面是我的例子:

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

7bsow1i62#

尝试:

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

ibrsph3r3#

使用.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])

相关问题