python如何读取数据集_pandas分批读取⼤数据集教程
如果你的电脑内存较⼩那么想在本地做⼀些事情是很有局限性的(哭丧脸),⽐如想拿⼀个上⾯的竞赛来练练⼿,你会发现多数训练数据集都是⼤⼏G或者⼏⼗G的,⾃⼰那⼩破电脑根本跑不起来。⾏,你有8000w条样本你⽜逼,我就取400w条出来跑跑总⾏了吧(狡滑脸)。
下图是2015年kaggle上⼀个CTR预估⽐赛的:
看到train了吧,原始数据集6个G,后得多⼤?那我就取400w出来train。为了节省时间和完整介绍分批读⼊数据的功能,这⾥以test数据集为例演⽰。其实就是使⽤pandas读取数据集时加⼊参数chunksize。
可以通过设置chunksize⼤⼩分批读⼊,也可以设置iterator=True后通过get_chunk选取任意⾏。
当然将分批读⼊的数据合并后就是整个数据集了。
ok了!
补充知识:⽤ 处理⼤数据的3种超级⽅法
易上⼿, ⽂档丰富的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 上,进⾏上述操作。
为列设定不同的数据类型
数据科学家新⼿往往不会对数据类型考虑太多。 当处理数据越来越多时, 就⾮常有必要考虑数据类型了。
⾏业常⽤的解决⽅法是从数据⽂件中,读取数据, 然后⼀列列设置数据类型。 但当数据量⾮常⼤时, 我们往往担⼼内存空间不够⽤。
python怎么读csv数据
在CSV ⽂件中,例如某列是浮点数, 它往往会占据更多的存储空间。 例如, 当我们下载数据来预测股票信息时, 价格往往以32位浮点数形式存储。
但是,我们真的需要32位浮点数码? ⼤多数情况下, 股票价格以⼩数点后保留两位数据进⾏交易。 即便我们想看到更精确的数据, 16位浮点数已经⾜够了。
我们往往会在读取数据的时候, 设置数据类型,⽽不是保留数据原类型。 那样的话,会浪费掉部分内存。
通过read_csv() 中设置dtype参数来完成数据类型设置。还可以设置字典类型,设置该列是键, 设置某列是字典的值。
请看下⾯的pandas 例⼦:
⽂章到这⾥结束了! 希望上述三个⽅法可以帮你节省时间和内存。
以上这篇pandas分批读取集教程就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持我们。
本⽂标题: pandas分批读取⼤数据集教程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。