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

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

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

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

使用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表爲清洗完數據保存數據的表。

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章