前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让pandas处理大数据速度变快的三个技巧

让pandas处理大数据速度变快的三个技巧

作者头像
AiTechYun
发布2019-06-24 09:36:39
1.9K0
发布2019-06-24 09:36:39
举报
文章被收录于专栏:ATYUN订阅号

作者 | 大邓

来源 | 大邓和他的Python

上一篇文章 写的是处理GB级数据时datatable比pandas会更高效,但是datatable使用起来毕竟不如pandas来的顺手。所以今天准备介绍pandas的三个使用技巧来让我们的运行效率提高,以便处理较大体量的数据。

一、将数据分批次读取

csv格式是常见的数据存储方式,对于我们普通人而言易于读写。此外,在pandas中有pd.read_csv()函数可以将csv形式的数据进行读取。但当csv文件非常大的时候,直接读取会很吃内存,甚至会出现内存不够用的情况。

这时候我们可以 分批次(分块)读取,而不是一次性读取 这么大体量的数据。操作步骤:

  • 分批次读取
  • 处理每一批次
  • 保存每一批次的结果
  • 对所有的数据重复步骤1-3
  • 将所有的批次结果都结合起来

pd.read_csv(chunksize) 中的chunksize指的的是每一批次的行数

代码语言:javascript
复制
import pandas as pd




chunk_iterator = pd.read_csv("largest_data.csv", chunksize=10000)



chunk_result_list = []

#每一批次都是dataframe类型for chunk in chunk_iterator:    #根据你的分析问题,设计自己的chunk_manipulate函数    filter_result = chunk_manipulate(chunk)    chunk_result_list.append(filter_result)

#合并所有批次处理结果,形成新的dataframedf = pd.concat(chunk_result_list)

二、剔除Na数据

有时候我们使用的数据中含有是Na,这时候剔除含有Na的数据会减少很多数据量。这里用到 df.dropna(how,thresh,subset)

  • how: "all"或者"any"。all当记录中的所有特征均为na,才剔除该条记录;any当记录中只要有na,该条记录就剔除
  • thresh: 整数型,每条记录中允许拥有的最大na数,当记录中na数超过thresh数后,剔除该条记录
  • subset:列名列表,选取某些特征进行na检测和处理
代码语言:javascript
复制
import pandas as pd


use_cols = ["stock_price", "stock_volume", "stock_symbol", "dividend", "eps"]ignore_cols = ["stock_name", "data_of_ipo"]

#usecols使用的特征名df = pd.read_csv("large_data.csv", usecols=use_cols)

#剔除na数据df.dropna()

三、设置特征的数据类型

对于大多数数据科学家而言,并不需要设置特征的数据类型,但是当处理的数据极其庞大的时候,我们就不得不考虑设置特征的数据类型以降低内存开销。

例如在csv的特征列中,某一列特征是32bit浮点数类型,但32bit浮点太精确了,实际上我们仅仅使用16bit就够用了。pd.read_csv(dtype)可以设置列的数据类型

代码语言:javascript
复制
import pandas as pdimport numpy as np

#column_A 32bit#column_B 16bitdf = pd.read_csv("large_data.csv", dtype={'column_A': np.int32,                                           'column_B': np.float16})

End

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、将数据分批次读取
  • 二、剔除Na数据
  • 三、设置特征的数据类型
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档