博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pandas模块帮助朋友处理mysql中的重复数据
阅读量:6263 次
发布时间:2019-06-22

本文共 900 字,大约阅读时间需要 3 分钟。

接到朋友求助,说自己一个数据库里的某个表有大量重复数据,使用mysql语句处理的速度太慢,每次只能处理1W条数据,总共800W条数据需要处理,耗时耗力。分开处理也会有大量的遗漏数据需要二次三次处理,最后得到的数据还是会不准确,很显然用mysql语句处理不怎么好。

我想到了python中有一个模块pandas是专门用来处理海量数据的,马上网上查下该模块是否有相关的方法,果然,pandas里的drop_duplicates方法就是用来去除重复数据的,并且该方法还提供了多个参数。

朋友的需求为数据库表里的某个字段的记录不能重复,如果重复则保留最新的数据。需求已经明白,马上开始动工。

使用Navicat 先将数据库里的需要处理的表同步到本地,然后在本地操作。

直接上代码

import pymysqlimport pandas as pdaconn=pymysql.connect(host="127.0.0.1",user="root",passwd="pw",db="test001",charset="utf8")sql="select * from table001"data1 = pda.read_sql(sql,conn)print(data1.count())data2 = data1.drop_duplicates(subset="big",keep="last")data2.to_sql("table002",con=conn,flavor="mysql",if_exists="append",index=False)print(data2.count())

table001表为原始表,big为表里不能重复的字段,keep="last"代表留重复数据的最后一条,table002表为清洗完数据保存数据的表。

运行该脚本,十来分钟左右,800W条数据已经全部清洗完毕,还剩余200W条不重复数据,并且还和朋友正确的数据一条不差。

使用pandas模块帮助朋友处理mysql中的重复数据

随后将数据表上传至朋友的线上服务器,朋友验证数据都没问题。

转载于:https://blog.51cto.com/wuliu92/2407282

你可能感兴趣的文章
记录日常Linux常用软件
查看>>
Jmeter之Bean shell使用(一)
查看>>
[翻译]利用顶点位移的VR畸变校正
查看>>
wp socket tcp链接
查看>>
asp.net 批量下载实现(打包压缩下载)
查看>>
解决了!我滴神哪!MarketPlace为什么手动下载安装部署提示invalid详解
查看>>
主成分分析原理及推导
查看>>
python中获取指定目录下所有文件名列表的程序
查看>>
HTML5的本地存储 LocalStorage
查看>>
safari和ie的时间解析(显示为NAN)
查看>>
基于 HTML5 WebGL 的挖掘机 3D 可视化应用
查看>>
Java工具创建密钥库,用于Unity 3D打包、签名、发布
查看>>
Oracle用户解锁
查看>>
MongoDB的使用
查看>>
C#开启异步 线程的四种方式
查看>>
XML解析
查看>>
2784: 【提高】小 X 与煎饼达人(flip)
查看>>
Linux 常用的压缩命令有 gzip 和 zip
查看>>
内存分段与分页
查看>>
第一个WindowService服务
查看>>