使用pandas模塊幫助朋友處理mysql中的重複數據

接到朋友求助,說本身一個數據庫裏的某個表有大量重複數據,使用mysql語句處理的速度太慢,每次只能處理1W條數據,總共800W條數據須要處理,耗時耗力。分開處理也會有大量的遺漏數據須要二次三次處理,最後獲得的數據仍是會不許確,很顯然用mysql語句處理不怎麼好。python

我想到了python中有一個模塊pandas是專門用來處理海量數據的,立刻網上查下該模塊是否有相關的方法,果真,pandas裏的drop_duplicates方法就是用來去除重複數據的,而且該方法還提供了多個參數。mysql

朋友的需求爲數據庫表裏的某個字段的記錄不能重複,若是重複則保留最新的數據。需求已經明白,立刻開始動工。sql

使用Navicat 先將數據庫裏的須要處理的表同步到本地,而後在本地操做。數據庫

直接上代碼服務器

import pymysql
import pandas as pda
conn=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表爲清洗完數據保存數據的表。app

運行該腳本,十來分鐘左右,800W條數據已經所有清洗完畢,還剩餘200W條不重複數據,而且還和朋友正確的數據一條不差。
使用pandas模塊幫助朋友處理mysql中的重複數據ide

隨後將數據表上傳至朋友的線上服務器,朋友驗證數據都沒問題。code

相關文章
相關標籤/搜索