读取CSV文件时出现的混合类型。原因、修复方法和后果。

7 浏览
0 Comments

读取CSV文件时出现的混合类型。原因、修复方法和后果。

当Pandas发出这个警告时,究竟会发生什么?我应该担心吗?

我认为这意味着Pandas无法从这些列的值中推断出类型。但是如果是这样,Pandas最终会使用什么类型来表示这些列的数据?

此外,在发出警告后,是否总是可以恢复类型?是否有可能存在无法正确恢复原始信息的情况,从而需要预先指定类型?

最后,low_memory=False是如何解决这个问题的?

0
0 Comments

在读取csv文件时出现混合类型的问题,可能的原因是在解析过程中使用了low_memory=True参数。解决这个问题的方法是将low_memory参数设置为False或者使用dtype参数指定类型。设置low_memory=False可以防止出现混合类型,但会增加内存使用。另外,重新导出为csv文件并使用low_memory=False重新读取也可以解决这个问题。

在上面的例子中,首先读取的部分数据被识别为整数类型,因此被转换为整数;而第二部分数据中包含字符串,所以所有的条目都被保持为字符串类型。

当出现类型警告时,是否总能恢复类型?可以通过重新导出为csv文件并使用low_memory=False重新读取来解决这个问题。

low_memory=False是如何解决这个问题的?它会在决定类型之前读取整个文件,因此需要更多的内存。

此外,还可能出现Error: C stack usage 528430048 is too close to the limit Error: C stack usage 528429312 is too close to the limit的错误。解决这个问题的方法是更改R版本或者参考相关链接的解决方法。

0
0 Comments

"low_memory"参数似乎已经被废弃,所以我们不必去关注它。

这个警告意味着某一列中的一些值具有一种数据类型(例如str),而另一些值具有不同的数据类型(例如float)。我相信pandas使用最低公共超类型,例如我使用的示例中的类型是object

你应该检查你的数据,或者在这里发布一些数据。特别是要查找缺失值或格式不一致的int / float值。如果你确定你的数据是正确的,那么可以使用dtypes参数来帮助pandas处理。

"low_memory"参数并没有被废弃,如Pollak所回答的。

0