使用Pandas处理大型数据—节省90%内存的建议
来源:互联网 发布:中国网络墙 编辑:程序博客网 时间:2024/05/23 00:01
看到一篇关于如何有效利用Pandas节省内存的文章,很有收获,原文地址:Using pandas with large data—Tips for reducing memory usage by up to 90%。
简要总结一下这篇文章的中心思想:合理设计读取的数据类型。下图是从原文中截取出来的,可以看到Pandas中不同数据类型所占用的内存。
作者建议,在不影响数据准确的情况下,将float64转换为float32,将int64转换为int32,对于没有负数的整数列转换为uint类型。
然而,能够比较显著减少内存占用的是将object转换为category。一般来说,Pandas将字符串存储为object类型,字符串的占用内存较大。如果将字符串转换为对应的整数,那么就会极大的减少内存占用。例如,假设有一列数据是week_day,内容为中文字符“星期一,星期二……星期日”,转换为category之后week_day变为1-7的整数,其中星期一—1,星期二—2,……星期日—7。这样字符串就转换为整数,Pandas也会将对应关系存储起来。作者也同时建议,object转换为category适用于类别比较少的情况,如果一列数据的每一行字符串都是唯一的,或者大部分是唯一的,那么就不适合转换,转换之后的内存占用甚至可能大于转换之前。因为Pandas不仅存储数据,还存储对应关系,如果一列数据中字符串都是唯一的,那么实际上并没有节省任何内存。
最后,所有类型的转换都有现成的方法可以使用,不必自己实现。关于更加细节的内容,以及相关代码,请各位阅读原文,在文章的开头有原文链接。
从作者的整体思路可以看出,Pandas节省内存和数据库节省硬盘差不多,都始于合理的数据类型设计。其实无论是数据挖掘还是机器学习,所有的字符串类型都会转换为int或者float,这一步处理几乎是必然的。如果仅仅做数据分析或者数据探索,那么这种转换并不是一定要做的,但好处是会大大加速程序运行的速度,所以如果你的数据量很大或者计算机性能不是很强的话,做一些转换还是很有必要的。
- 使用Pandas处理大型数据—节省90%内存的建议
- 用pandas处理大数据——节省90%内存消耗的小贴士
- python使用pandas处理大数据节省内存技巧
- 使用pandas优化Spark内存消耗(节省90%)
- java节省内存的几条建议
- java节省内存的几条建议
- 用pandas处理大数据———减少90%内存消耗的小贴士
- 多因子模型之因子(信号)测试平台----python中Pandas做处理时内存节省的技巧
- pandas垃圾数据的处理
- 使用String的intern方法节省内存
- 使用String的intern方法节省内存
- 使用Pandas对数据进行处理
- 节省你的内存
- android Bitmap处理以 节省内存的方法
- pandas的基本用法(四)——处理缺失数据
- python的pandas处理数据第一次
- Pandas对数据做简单的处理
- 使用虚函数节省内存
- 数组的常用方法
- WIN10下安装使用反编译工具APKTOOL
- usb枚举过程简介
- 关于《programming collective intelligence》(集体智慧编程)的del.icio.us API无法访问
- Codeforces Round #428 (Div. 2) Journey(数学期望+dfs)
- 使用Pandas处理大型数据—节省90%内存的建议
- mybatis 使用自增主键, 插入记录并返回自增主键 MySQL
- 做项目时文件管理的相关总结
- 正则表达式常用Rule
- SQL——表操作
- Android学习网址
- js对象
- 面向对象三大基本特性,五大基本原则
- 打印购物小票和计算积分