原文链接:3 simple ways to handle large data with
Pandas
作者 | George Seif
译者 | jojoa

易上手, 文档丰富的Pandas 已经成为时下最火的数据处理库。此外,Pandas数据处理能力也一流。

其实无论你使用什么库,大量的数据处理起来往往回遇到新的挑战。
数据处理时,往往会遇到没有足够内存(RAM)这个硬件问题。 企业往往需要能够存够数百, 乃至数千 的GB 数据。
即便你的计算机恰好有足够的内存来存储这些数据, 但是读取数据到硬盘依旧非常耗时。
别担心! Pandas 数据库会帮我们摆脱这种困境。 这篇文章包含3种方法来减少数据大小,并且加快数据读取速度。 我用这些方法,把超过100GB 的数据, 压缩到了64GB 甚至32GB 的内存大小。

快来看看这三个妙招吧。

数据分块

csv 格式是一种易储存, 易更改并且用户易读取的格式。 pandas 有read_csv ()方法来上传数据,存储为CSV 格式。当遇到CSV 文件过大,导致内存不足的问题该怎么办呢?试试强大的pandas 工具吧!我们先把整个文件拆分成小块。这里,我们把拆分的小块称为chunk。

一个chunk 就是我们数据的一个小组。 Chunk 的大小主要依据我们内存的大小,自行决定。

过程如下:

1.读取一块数据。
2.分析数据。
3.保存该块数据的分析结果。
4.重复1-3步骤,直到所有chunk 分析完毕。
5.把所有的chunk 合并在一起。

我们可以通过read_csv()方法Chunksize来完成上述步骤。 Chunksize是指pandas 一次能读取到多少行csv文件。这个当然也是建立在RAM 内存容量的基础上。
假如我们认为数据呈现高斯分布时, 我们可以在一个chunk 上, 进行数据处理和视觉化, 这样会提高准确率。

当数据稍微复杂时, 例如呈现泊松分布时, 我们最好能一块块筛选,然后把每一小块整合在一起。 然后再进行分析。很多时候, 我们往往删除太多的不相关列,或者删除有值行。 我们可以在每个chunk 上,删除不相关数据, 然后再把数据整合在一起,最后再进行数据分析。

代码如下:


删除数据

有时候, 我们一眼就能看到需要分析的列。事实上, 通常名字,账号等列,我们是不做分析的。

读取数据前, 先跳过这些无用的列,可以帮我们节省很多内存。 Pandas 可以允许我们选择想要读取的列。


把包含无用信息的列删除掉, 往往给我们节省了大量内存。

此外,我们还可以把有缺失值的行,或者是包含“NA” 的行删除掉。 通过dropna()方法可以实现:


有几个非常有用的参数,可以传给dropna():

  • how: 可选项:“any”(该行的任意一列如果出现”NA”, 删除该行)
  • “all” (只有某行所有数数据全部是”NA” 时才删除)
  • thresh: 设定某行最多包含多少个NA 时,才进行删除
  • subset: 选定某个子集,进行NA 查找

可以通过这些参数, 尤其是thresh 和 subset 两个参数可以决定某行是否被删除掉。

Pandas 在读取信息的时候,无法删除列。但是我们可以在每个chunk 上,进行上述操作。

为列设定不同的数据类型

数据科学家新手往往不会对数据类型考虑太多。 当处理数据越来越多时, 就非常有必要考虑数据类型了。

行业常用的解决方法是从数据文件中,读取数据, 然后一列列设置数据类型。 但当数据量非常大时, 我们往往担心内存空间不够用。

在CSV 文件中,例如某列是浮点数, 它往往会占据更多的存储空间。 例如, 当我们下载数据来预测股票信息时, 价格往往以32位浮点数形式存储。

但是,我们真的需要32位浮点数码? 大多数情况下, 股票价格以小数点后保留两位数据进行交易。 即便我们想看到更精确的数据, 16位浮点数已经足够了。

我们往往会在读取数据的时候, 设置数据类型,而不是保留数据原类型。 那样的话,会浪费掉部分内存。

通过read_csv() 中设置dtype参数来完成数据类型设置。还可以设置字典类型,设置该列是键, 设置某列是字典的值。

请看下面的pandas 例子:


文章到这里结束了! 希望上述三个方法可以帮你节省时间和内存。

用Pandas 处理大数据的3种超级方法相关推荐

  1. pandas提取特征数据的几种必备方法——数据分析必备技能(1)

    pandas可以说是python数据分析工作中的必备工具,在于pandas拥有强大的数据清洗能力,废话不多话,直接跟着小编往下看: 前言 1.比较运算:==. <. >. >=. & ...

  2. Pandas处理大数据的性能优化技巧

    Pandas是Python中最著名的数据分析工具.在处理数据集时,每个人都会使用到它.但是随着数据大小的增加,执行某些操作的某些方法会比其他方法花费更长的时间.所以了解和使用更快的方法非常重要,特别是 ...

  3. 大数据变现四种途径,如何把海量数据变成现金?

    大数据变现四种途径,如何把海量数据变成现金? 胡敏 • 2015-06-12 09:42 摘要: 西班牙电信.沃达丰电信.DHL等握有巨量数据的企业都在尝试不同的方式把数据变成现金. 大数据变现是大数 ...

  4. 传统制造业面临大数据的7种改变方式

    文章讲的是传统制造业面临大数据的7种改变方式,中国是个制造业大国,在工业企业信息化.数据化.数据创新领域可以做的事情很多.应用数据的思维古已有之,如同所谓的互联网思维,其实几十年前的营销学原理就有涉猎 ...

  5. 大数据时代:9种从大数据中获取商业价值的方法

    很多大数据都是来自一些新的来源,这代表客户或合作伙伴互动的新渠道.和任何新的数据来源一样,大数据值得探索.通过数据探索,你可以了解一些之前所不知道的商业模式和事实真相. 关于管理大数据的调查显示,89 ...

  6. java导出文件大数据量一种处理思路:多文件压缩导出

    java导出文件大数据量一种处理思路:多文件压缩导出:1,查询的时候分页查询确定总的文件个数:totalExcel; 总条数:count; 单个excel设定的行数:SINGLE_EXCEL_NUM; ...

  7. 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计

    杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...

  8. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法

    halo,大家好,我是特仑苏,今天呢给大家分享一些Python从网站抓取数据的一些方法,希望可以给大家带来一些帮助! 原作者:Octoparse团队 原出处:作品文(从网站抓取数据的3种最佳方法)/网 ...

  9. 大数据集可以用自助法吗_基于大数据的自助点餐方法和点餐匹配系统与流程

    本发明属于大数据数据挖掘技术领域,特别是涉及基于大数据的自助点餐方法和点餐匹配系统. 背景技术: 随着人们生活水平的不断提高,去饭店餐馆吃饭已经是一种普遍的消费行为,目前顾客的消费用餐,通常在客人在点 ...

最新文章

  1. oracle audit for 11g
  2. mysql show status
  3. TwoSum,从O(n^2)到O(nlogn)再到O(n)
  4. docker搭建mysql主从
  5. JAVA面试要点004_JAVA编程过程中为了性能优化_应该注意到的地方
  6. hdu 4932 BestCoder Round #4 1002
  7. magento 2 引用 css,Magento2在Phtml文件中调用显示静态块
  8. ASP.NET配置FCKeditor文本编辑器
  9. c语言交换字符串,C语言中怎样交换两个字符串?C语言中怎样交 – 手机爱问
  10. keeplive的使用
  11. pascal-5i 数据集
  12. 【游戏辅助】利用C语言编写《植物大战僵尸》修改阳光值代码
  13. 2018年阿里巴巴前端开源项目汇总
  14. ROS launch文档解析
  15. 岩板铺地好吗_卧室铺地板还是瓷砖好 这里给你答案
  16. 架构必备:Rate limiting 的作用和常见方式
  17. AtCoder Beginner Contest 168题解
  18. PS避免图片多次放大或缩小造成的模糊问题?
  19. 【读书笔记】抓取深圳或上海股市,或香港美国等有关股市某时间段内全部股票行情数据,进行主成分分析构造你个人的股市指数
  20. mockjs详细介绍

热门文章

  1. 数学建模视频资源分享
  2. 计算机科学与技术能自考吗,自考有计算机科学与技术这个专业吗?
  3. 罗德与施瓦茨CBT蓝牙测试仪
  4. 江苏上海php培训,2019年第一期班组长素质提升培训班在江苏南京成功举办
  5. 3GPP机密性和完整性算法规范128-EEA3和128-EIA3(二)----祖冲之算法的C语言实现
  6. linux 内核 触摸屏,Linux 5.1内核将支持更多的触摸屏
  7. 化工行业BOM(peifang)保密管理
  8. 自动输入脚本软件工具 --解决输入框禁止粘贴问题
  9. 7135制作自动量程电压切换_基于STM32和ICL7135的数字电压表设计
  10. MCS-51高精度A/D接口电路—ICL7135