内存优化——使用pandas读取千万级数据

该文章已生成可运行项目,

超级干货:Python优化之使用pandas读取千万级数据

环境:Linux-cenos5

processor : 31

model : 62

model name : Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz

cpu MHz : 2000.066

cache size : 20480 KB

memory : 125G

在如上所述的单机环境中,使用一些优化可以使基于pandas数据格式的模型训练数据容量由600W增长为至少2000W,训练时间减少为1/5。具体方案如下:

 

数据读取优化

数据量4200W行,193列,每列存储为string类型的单精度浮点数,文件表由csv格式存储,总大小16GB+。通过如下语句读取到dataframe中去:

1

2

df_train = pd.read_csv(path,header=None,sep=',',nrows=40000000,error_bad_lines=False,delimiter="\t",lineterminator="\n",keep_default_na=True)

  经过测试,当nrows读取行数超过800W条时,df_train占内存超过80G,在后续的步骤中涉及到切片和数据集复制时会直接崩溃,超过1200W条时会直接无法读取。首先考虑优化读取方式:

1

2

3

4

5

6

7

8

9

10

na_vals = ["\\N"," ","","NULL"]

df_tmp = []

df_train = pd.DataFrame(index=

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值