python 千万级数据处理_超级干货;Python优化之使用pandas读取和训练千万级数据

在Linux环境下,通过Python的pandas库处理千万级数据时,使用优化策略能有效提升处理效率。包括分块读取数据、利用`na_values`减少处理时间、用`chunksize`分块、利用`list`拼接而非`concat`以降低内存占用。此外,通过转换数据类型,如将默认的`str`转换为`float32`,能显著减少内存消耗。通过这些优化,数据处理能力从600W行提升至2000W行,训练时间减少,内存占用减小。
摘要由CSDN通过智能技术生成

环境: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中去:

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条时会直接无法读取。首先考虑优化读取方式:

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

df_tmp = []

df_train = pd.DataFrame(ind

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值