已弃用的低内存选项
low_memory选项没有被正确地弃用,但它应该被弃用,因为它实际上没有做任何不同的事情[source]
出现此low_memory警告的原因是,猜测每个列的数据类型需要大量内存。Pandas试图通过分析每列中的数据来确定要设置的数据类型。
数据类型猜测(非常糟糕)
Pandas只能在读取整个文件后确定列的数据类型。这意味着在读取整个文件之前无法真正解析任何内容,除非您在读取最后一个值时有可能更改该列的数据类型。
以一个文件为例,该文件有一个名为user_id的列。
它包含1000万行,其中用户id始终是数字。
由于pandas不知道它只是数字,所以它可能会将它作为原始字符串保存,直到它读取了整个文件。
指定数据类型(应始终完成)
添加dtype={'user_id': int}
调用^{}将使pandas知道何时开始读取文件,这只是整数。
另外值得注意的是,如果文件的最后一行将"foobar"写入user_id列,则如果指定了上述数据类型,则加载将崩溃。
定义数据类型时中断的断开数据示例import pandas as pd
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
csvdata = """user_id,username
1,Alice
3,Bob
foobar,Caesar"""
sio = StringIO(csv