用Pandas 处理大数据的3种超级方法

用Pandas 处理大数据的3种超级方法原文链接:3simplewaystohandlelargedatawithPandas作者|GeorgeSeif译者|jojoa易上手,文档丰富的Pandas已经成为时下最火的数据处理库。此外,Pandas数据处理能力也一流。其实无论你使用什么库,大量的数据处理起来往往回遇到新的挑战。数据处理时,往往会遇到没有足够内存(RAM)这个硬件问题。企业往往…

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述

原文链接: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 例子:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142237.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10系统用激活码激活,用dos命令来激活,只能激活半年时间,暂时没找到永久的。

    win10系统用激活码激活,用dos命令来激活,只能激活半年时间,暂时没找到永久的。自己之前用激活工具激活的,激活时间好像是180天,即将到期了,于是在网上百度各种永久激活方法,参照别人的方法,发现把自己的激活状态由激活即将到期变为通知模式,瞬间一脸懵逼,于是找啊找,终于找到了这种方式,亲测可行。(1)首先查看自己系统的激活状态;快捷键win+r输入命令:slmgr.vbs-xpr; 随后弹出窗口显示2018/9/8过期。 (2)然后以管理员模式打开命令提示符窗…

    2022年5月30日
    112
  • kali如何更换源(怎样换一个kali源)

    KaliLinux的换源和更新1.修改源文件(需要用root权限)[plain]viewplaincopyvim /etc/apt/sources.list  2.这里修改两个我认为还好的源,因为每个地方不同,选择源的时候建议使用一些常用的吧。比如:阿里云源,中科大源之类的官方源更新的速度太慢了,所以我注释掉了,只使用两

    2022年4月12日
    159
  • MyBatis工作原理步骤

    MyBatis的工作原理第一步:读取MyBatis配置文件,即mybatis-config.xml第二步:加载映射文件,如ManMapper1.xml,…Mapper2.xml等。第三步:构造会话工厂,即SqlSessionFactory。第一种方法:SqlSessionFactoryfactory=sqlSessionFactoryBuilder.build(reader,p…

    2022年4月9日
    54
  • jmeter常见面试题_hr面试问题大全及答案

    jmeter常见面试题_hr面试问题大全及答案问题列表在项目中如何用jmeter进行http接口测试?Jmeter常用元件有哪些?jmeter如何管理cookie和session信息?jmeter中如何实现关联?jmeter中断言方式?jmeter参数化的方式有哪几种可以实现?Jmeter怎么录制,怎么过滤?JMeter结果树响应数据中文乱码如何解决?用户定义的变量和用户参数的区别?Jmeter怎么实现持续集成测试?在项目中如何用jmeter进行http接口测试?(重点)在Jmeter安装目录bin中,找到jmet

    2022年9月30日
    0
  • 自学python 一个简单的股票工具,源代码分享[通俗易懂]

    自学python 一个简单的股票工具,源代码分享[通俗易懂]项目名称:股票工具想要的功能:1获取数据实时某支股票的‘买一量’‘卖一量’#获取数据2数据分析对’买一量’‘卖一量’的判断进入时候提醒2.1买一量,大于、小于多少时,提示买入卖出2.2卖一量,大于、小于多少时,提示买入卖出2.3涨幅计算行动效果图:后面是源代码:#设置fromurllibimportrequestimportr…

    2022年6月16日
    38
  • golang 激活码【中文破解版】

    (golang 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40Z9P7H9NN-eyJsaWNlbnNlSWQi…

    2022年3月28日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号