当前位置: 首页 > 知识库问答 >
问题:

读取CSV

柴琨
2023-03-14

我在尝试生成一个简单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:问题来自blankseperator,它阻止函数正确地从一列跳转到另一列。问题是,我的CSV文件已经有分隔符(我不知道为什么要诚实,因为我手动创建的文件,并将其保存为常规CSV与分隔符)。

现在还不知道如何解决这个问题,这里有人有见解吗?

最好的

共有2个答案

洪捷
2023-03-14

明白了,我修改了整件事,看起来很有效。请参见下面的外观。

非常感谢你的帮助

    variables = list(range(X.shape[1]))

    for i in variables:
        vif = [variance_inflation_factor(X.iloc[:, variables].values, ix)
               for ix in range(X.iloc[:, variables].shape[1])]

        maxloc = vif.index(max(vif))
        if max(vif) > thresh:
            print('dropping \'' + X.iloc[:, variables].columns[maxloc] +
                  '\' at index: ' + str(maxloc))
            del variables[maxloc]

    print('Remaining variables:')
    print(X.columns[variables])
    return X.iloc[:, variables]


X = training_set
X2 = calculate_vif_(X)```
诸葛亮
2023-03-14

此错误是由此代码段X[variables]引起的。值。将变量,即范围,转换为列表

顺便说一句,代码非常混乱。你为什么打电话给np。当变量已经是一个范围时,是否设置范围?为什么要使用一定数量的列来索引行?

从上面的注释可以看出,您认为是按列编号索引列,但实际上是索引行。如果您使用loc``或iloc``来明确说明您试图索引的内容,那么其中一些混淆将被消除。

 类似资料:
  • 我遇到了一个挑战,我必须读取CSV文件并将其读取,直到定义的可变大小限制(BATCH_SIZE)。读取 CSV 中的行数后,将其发送到不同的 AWS API。由于我的CSV文件大小可以是1Gb到2Gb的任何地方,因此我避免使用JSR223 CSV文件读取。我想知道如何使用JMeter和CSV数据集配置来实现它。

  • 问题内容: 我是Java的新手,所以如果这是一个很小的错误,请原谅我,这是 我的代码: 当我在编译后运行它时,第18行(n = System.in.read())被跳过。 我得到的输出是这样的: 对(1-5)投票: 1输入0退出,再次输入1投票: 对(1-5)投票: 2输入0退出,再次输入1投票: 对(1)投票-5): ^ C 的值not 会使程序成为无限循环。 谢谢您的帮助。 问题答案: 我认为

  • 我是一名铁锈新手,尝试阅读两个数字并计算它们的商: 但是当我试图编译它时,我得到了以下错误重复了几次: src/safe_div.rs:12: 12:12:21错误:不匹配类型:预期

  • 我试图读取3温度设备使用WinForm和Modbus 485协议。基本上,我必须定期向每个设备写入命令,等待响应,当我得到响应时,处理它。每个设备都有一个唯一的通信地址。为了定期发送命令,我使用了计时器。这就是我发送命令的方式和处理响应的地方: 对于每个设备,等等。这是我的serialport数据接收事件: 所以我的沟通应该是: 然后再次发送命令device1。问题是,我有时得到通信超时错误,我知

  • TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 目录 数据读取 供给数据(Feeding) 从文件读取数据

  • 可以通过document.cookie直接读取cookie的内容: var strCookie = document.cookie;  此时,strCookie是一个由该域名下的所有cookie的名/值对所组成的字符串,名/值对间以“分号加空格”分隔。为了方便查看,可以使用split()方法将cookie中的名/值对解析出来,得到一个cookie的列表。然后,再使用相应的解码方式,把cookie