栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

熊猫read_csv low_memory和dtype选项

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

熊猫read_csv low_memory和dtype选项

不推荐使用的low_memory选项

low_memory
选项未正确弃用,但应该正确使用,因为它实际上没有做任何不同的事情[来源]

收到此

low_memory
警告的原因是因为猜测每列的dtypes非常需要内存。熊猫尝试通过分析每一列中的数据来确定要设置的dtype。

Dtype猜测(非常糟糕)

一旦读取了整个文件,熊猫便只能确定列应具有的dtype。这意味着在读取整个文件之前,无法进行任何真正的解析,除非您冒着在读取最后一个值时不得不更改该列的dtype的风险。

考虑一个文件的示例,该文件具有名为user_id的列。它包含1000万行,其中user_id始终是数字。由于熊猫不能只知道数字,因此它可能会一直保留为原始字符串,直到它读取了整个文件。

指定dtypes(应该总是这样做)

dtype={'user_id': int}

pd.read_csv()
呼叫将使大熊猫知道它开始读取文件时,认为这是唯一的整数。

还值得注意的是,如果文件的最后一行将被

"foobar"
写入
user_id
列中,那么如果指定了上述dtype,则加载将崩溃。

定义dtypes时会中断的中断数据示例

import pandas as pdtry:    from StringIO import StringIOexcept importError:    from io import StringIOcsvdata = """user_id,username1,Alice3,Bobfoobar,Caesar"""sio = StringIO(csvdata)pd.read_csv(sio, dtype={"user_id": int, "username": "string"})ValueError: invalid literal for long() with base 10: 'foobar'

dtypes通常是一个numpy的东西,请在这里阅读有关它们的更多信息:http
://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html

存在哪些dtype?

我们可以访问numpy dtypes:float,int,bool,timedelta64 [ns]和datetime64
[ns]。请注意,numpy日期/时间dtypes 识别时区。

熊猫通过自己的方式扩展了这套dtypes:

‘datetime64 [ns,]’这是一个时区感知的时间戳。

‘category’本质上是一个枚举(以整数键表示的字符串以保存

‘period []’不要与timedelta混淆,这些对象实际上是固定在特定时间段的

“ Sparse”,“ Sparse [int]”,“ Sparse
[float]”用于稀疏数据或“其中有很多孔的数据”,而不是在数据框中保存NaN或None,它忽略了对象,从而节省了空间。

“间隔”本身是一个主题,但其主要用途是用于索引。在这里查看更多

与numpy变体不同,“ Int8”,“ Int16”,“ Int32”,“ Int64”,“ UInt8”,“ UInt16”,“ UInt32”,“
UInt64”都是可为空的熊猫特定整数。

‘string’是用于处理字符串数据的特定dtype,可访问

.str
系列中的属性。

‘boolean’类似于numpy’bool’,但它也支持丢失数据。

在此处阅读完整的参考:

熊猫DType参考

陷阱,注意事项,笔记

设置

dtype=object
将使上面的警告静音,但不会使它的内存使用效率更高,仅在处理任何事情时才有效。

设置

dtype=unipre
不会做任何事情,因为对于numpy,a
unipre
表示为
object

转换器的用法

@sparrow正确指出了转换器的用法,以避免在遇到

'foobar'
指定为的列时遇到大熊猫
int
。我想补充一点,转换器在熊猫中使用时确实很笨重且效率低下,应该作为最后的手段使用。这是因为read_csv进程是单个进程。

CSV文件可以逐行处理,因此可以通过简单地将文件切成段并运行多个进程来由多个转换器并行更有效地进行处理,而这是pandas所不支持的。但这是一个不同的故事。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号