Python使用Pandas处理大量数据

本文记录了使用Python的pandas库处理大量CSV数据(总计100G,单文件最大1G)并导入到Mysql的过程。在i5+8G内存的设备上遇到内存溢出问题,通过分片读取和设置`low_memory=False`来解决。最后成功将数据导入,但注意需提前建立好数据库表结构以避免后期修改耗时。
摘要由CSDN通过智能技术生成

最近接到一个需求是把近100G的CSV数据(多个目录的多个文件,单文件最大1G,每个目录下是同一类目的数据,类目数据需要做排重处理)导入Mysql

环境:桌面笔记本电脑,i5+8G(约2G可用内存)+128GSSD+1T+Win10

实现过程记个流水账

最开始是想用PHP或python,一行一行读取,然后再写入,计算了一下需要时间太长了,最终选择了python+pandas方案

其中遇到的坑:

1、dtype

直接用pandas.read_csv的时候遇到大文件内存溢出程序终止,改成分片读取解决

import pandas as pd

df = pd.read_csv('path/to/file')

得到

C:/path/to/python.exe E:/data/pd.py
sys:1: DtypeWarning: Columns (3) have mixed types. Specify dtype option on import or set low_memory=False.

解决:

1、加载前设置dtype或2、设置low_memory=False

df = pd.read_csv('path/to/file',dtype={"cat_id":int, "cat_name":object})

但cat_id列必须全部是int类型的

所以选用了第2种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值