读取csv文件时的混合类型。原因,解决方案和后果

读取csv文件时的混合类型。原因,解决方案和后果,第1张

读取csv文件时的混合类型。原因,解决方案和后果

重温mbatchkarov的链接,

low_memory
是不会被弃用。这是目前记录在案:

low_memory布尔值,默认为True

在内部对文件进行分块处理,从而在解析时减少了内存使用,但可能是混合类型推断。要确保没有混合类型,请设置False或使用 dtype
参数指定类型。请注意,无论使用 chunksize 还是 iterator
参数以块形式返回数据,整个文件都将被读取到单个Dataframe中。(仅对C解析器有效)

我问什么 导致混合类型推断的 意思,而chris-b1回答:

它是确定性的-根据数据中的内容一致地推断类型。就是说,内部块大小不是固定的行数,而是字节数,因此无论您是否可以混合使用dtype警告,都会感觉有些随机。

那么, Pandas最终用于那些列的类型是什么?

下面的独立示例可以回答这一问题:

df=pd.read_csv(StringIO('n'.join([str(x) for x in range(1000000)] + ['a string'])))DtypeWarning: Columns (0) have mixed types. Specify dtype option on import or set low_memory=False.type(df.loc[524287,'0'])Out[50]: inttype(df.loc[524288,'0'])Out[51]: str

csv数据的第一部分仅被视为int,因此转换为int,第二部分也具有字符串,因此所有条目均保留为字符串。

事实发生后是否总是可以恢复类型? (收到警告后)?

我想重新导出到csv并重新阅读

low_memory=False
应该可以完成这项工作。

low_memory = False究竟如何解决该问题?

在确定类型之前,它会读取所有文件,因此需要更多的内存。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存