重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码
目錄
所有列是否完全重復(fù)
指定某一列是否重復(fù)
根據(jù)多列判斷是否重復(fù),防止誤刪數(shù)據(jù)
其他數(shù)據(jù)預(yù)處理方法
通過八爪魚或者火車頭等采集器從全網(wǎng)抓取的數(shù)據(jù)中,總會存在各種各樣的重復(fù)數(shù)據(jù),為保證數(shù)據(jù)在使用過程中的準(zhǔn)確性,總要先進(jìn)行一番清洗。
所有列是否完全重復(fù)
在Pandas中,.duplicated()表示找出重復(fù)的行,默認(rèn)是判斷全部列,返回布爾類型的結(jié)果。對于完全沒有重復(fù)的行,返回 False,對于有重復(fù)的行,第一次出現(xiàn)的那一行返回 False,其余的返回 True。
與.duplicated()對應(yīng)的,.drop_duplicates()表示去重,即刪除布爾類型為 True的所有行,默認(rèn)是判斷全部列。
import pandas as pd import numpy as np from pandas import DataFrame,Series#讀取文件 datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置,u為防止路徑中有中文名稱,此處沒有,可以省略 data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件則用read_csv examDf = DataFrame(data) examDf#輸出源數(shù)據(jù),直觀的查看哪些行是重復(fù)的運(yùn)行結(jié)果:?
| Jay | 175 | 1979 | 摩羯座 | O |
| Jay | 175 | 1979 | 摩羯座 | O |
| Jolin | 156 | 1980 | 處女座 | A |
| Jolin | 156 | 1980 | NaN | A |
| Hannah | 165 | 1993 | 獅子座 | B |
| JJ | 173 | 1981 | 白羊座 | O |
| Eason | 173 | 1974 | 獅子座 | O |
很明顯,第 0 行和第 1 行是完全重復(fù)的,開始去重,接著上面的代碼,
#去重 print(examDf.duplicated())#判斷是否有重復(fù)行,重復(fù)的顯示為TRUE, examDf.drop_duplicates()#去掉重復(fù)行指定某一列是否重復(fù)
上述的數(shù)據(jù)中我們可以發(fā)現(xiàn),第 2 行和第 3 行其實(shí)都是?Jolin 的信息,那么也是需要去重的。.duplicated()默認(rèn)是判斷全部列,那么加一點(diǎn)東西,就可以判斷指定某一列了。
print(examDf.duplicated('name'))#判斷name列是否有重復(fù)行,重復(fù)的顯示為TRUE, examDf.drop_duplicates('name')#去掉重復(fù)行運(yùn)行結(jié)果:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
在實(shí)際應(yīng)用中,需要指定的這一列往往是合同號,項(xiàng)目編號這一類的
根據(jù)多列判斷是否重復(fù),防止誤刪數(shù)據(jù)
僅僅根據(jù)name列判斷是否重復(fù),難免會把重名的另一個人的信息誤刪,比如娛樂圈的楊洋(小鮮肉男)和楊洋(快女),僅根據(jù)name判斷是否重復(fù)的話,肯定會將其中一人的信息判斷為重復(fù)數(shù)據(jù),那么就增加幾個判斷條件,比如根據(jù)姓名,性別,生日三個條件來判斷的話,誤刪的幾率就會大大的減少。
import pandas as pd import numpy as np from pandas import DataFrame,Series#讀取文件 datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置,u為防止路徑中有中文名稱,此處沒有,可以省略 data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件則用read_csv examDf = DataFrame(data) print(examDf.duplicated(['name','sex','birthday']))#判斷name,sex,birthday列是否有重復(fù)行,重復(fù)的顯示為TRUE, examDf.drop_duplicates(['name','sex','birthday'])#去掉重復(fù)行運(yùn)行結(jié)果:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
望指正!
其他數(shù)據(jù)預(yù)處理方法
拉格朗日插值法補(bǔ)充缺失值
連續(xù)數(shù)據(jù)離散化(等寬、等頻、聚類離散)
數(shù)據(jù)預(yù)處理 - 歸一化與標(biāo)準(zhǔn)化
總結(jié)
以上是生活随笔為你收集整理的重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么给域账号映射服务器,如何给每个域用户
- 下一篇: python list存储对象_《pyt