我在尝试生成一个简单DF的共线性分析时遇到了问题(见下文)。我的问题是,每次尝试运行该函数时,都会检索到以下错误消息:
KeyError: "None of [Int64Index([0, 1, 2, 3], dtype='int64')] are in the [columns]"
下面是我正在使用的代码
read_training_set = pd.read_csv('C:\\Users\\rapha\\Desktop\\New test\\Classeur1.csv', sep=";")
training_set = pd.DataFrame(read_training_set)
print(training_set)
def calculate_vif_(X):
thresh = 5.0
variables = range(X.shape[1])
for i in np.arange(0, len(variables)):
vif = [variance_inflation_factor(X[variables].values, ix) for ix in range(X[variables].shape[1])]
print(vif)
maxloc = vif.index(max(vif))
if max(vif) > thresh:
print('dropping \'' + X[variables].columns[maxloc] + '\' at index: ' + str(maxloc))
del variables[maxloc]
print('Remaining variables:')
print(X.columns[variables])
return X
X = training_set
X2 = calculate_vif_(X)
我试图在其上运行函数的DF如下所示
Year Age Weight Size
0 2020 10 100 170
1 2021 11 101 171
2 2022 12 102 172
3 2023 13 103 173
4 2024 14 104 174
5 2025 15 105 175
6 2026 16 106 176
7 2027 17 107 177
8 2028 18 108 178
我有两个猜测;但不知道如何解决这个问题:
-猜测1:np.arrange与标题&;阻止函数的其余部分遍历每列的列
-猜测2:问题来自空格分隔符,它阻止函数正确地从一列跳到另一列。问题是,我的CSV文件已经有“;”分隔符(我不知道确切的原因,因为我手动创建了该文件并将其保存为带有“;”分隔符的常规CSV)
现在还不知道如何解决这个问题,这里有人有见解吗
最好的
明白了,我修改了整件事,看起来很有效。请参见下面的外观
非常感谢你的帮助
此错误是由此代码段
X[variables].values
引起的。将variables
转换为list
,它是一个range
顺便说一句,代码非常混乱。当
variables
已经是range
时,为什么要调用np.arange
?为什么要使用一定数量的列来索引行从上面的注释可以看出,您认为是按列编号索引列,但实际上是索引行。如果您使用
loc`` or
iloc```来明确说明您试图索引的内容,那么其中一些混淆将被消除相关问题 更多 >
编程相关推荐