Lesson11——Pandas去重函數:drop_duplicates()


pandas目錄

  “去重”通過字面意思不難理解,就是刪除重復的數據。在一個數據集中,找出重復的數據刪並將其刪除,最終只保存一個唯一存在的數據項,這就是數據去重的整個過程。刪除重復數據是數據分析中經常會遇到的一個問題。通過數據去重,不僅可以節省內存空間,提高寫入性能,還可以提升數據集的精確度,使得數據集不受重復數據的影響。

  Panda DataFrame 對象提供了一個數據去重的函數 drop_duplicates(),本節對該函數的用法做詳細介紹。

函數格式

  drop_duplicates() 函數的語法格式如下:

  df.drop_duplicates(subset=['A','B','C'],keep='first',inplace=True)

  參數說明如下:

  • subset:表示要進去重的列名,默認為 None。

  • keep:有三個可選參數,分別是 first、last、False,默認為 first,表示只保留第一次出現的重復項,刪除其余重復項,last 表示只保留最后一次出現的重復項,False 則表示刪除所有重復項。

  • inplace:布爾值參數,默認為 False 表示刪除重復項后返回一個副本,若為 Ture 則表示直接在原數據上刪除重復項。

實際應用

  首先創建一個包含有重復值的 DataFrame 對象,如下所示:

Example:創建數據

data = { 'A':[1,0,1,1], 'B':[0,2,5,0], 'C':[4,0,4,4], 'D':[1,0,1,1] } df = pd.DataFrame(data=data) print(df) """ A B C D 0 1 0 4 1 1 0 2 0 0 2 1 5 4 1 3 1 0 4 1 """

Example:默認保留第一次出現的重復項

print(df.drop_duplicates()) #默認保留第一次出現的重復項
""" A B C D 0 1 0 4 1 1 0 2 0 0 2 1 5 4 1 """

Example: keep=False 刪除所有重復項

print(df.drop_duplicates(keep=False)) #keep=False刪除所有重復項
""" A B C D 1 0 2 0 0 2 1 5 4 1 """

Example:去除所有重復項,對於 B 列來說兩個 0 是重復項

print(df.drop_duplicates(subset=['B'],keep=False))#去除所有重復項,對於B列來說兩個0是重復項
""" A B C D 1 0 2 0 0 2 1 5 4 1 """

  從上述示例可以看出,刪除重復項后,行標簽使用的數字是原來的,並沒有從 0 重新開始,那么我們應該怎么從 0 重置索引呢?Pandas 提供的 reset_index() 函數會直接使用重置后的索引。如下所示:

Example:

data={ 'A':[1,3,3,3], 'B':[0,1,2,0], 'C':[4,5,4,4], 'D':[3,3,3,3] } df=pd.DataFrame(data=data) #去除所有重復項,對於B來說兩個0是重復項
df=df.drop_duplicates(subset=['B'],keep=False) print(df) print('-------------') #重置索引,從0重新開始
print(df.reset_index(drop=True)) """ A B C D 1 3 1 5 3 2 3 2 4 3 ------------- A B C D 0 3 1 5 3 1 3 2 4 3 """

Example:指定多列同時去重

  創建一個 DataFrame 對象,如下所示:

df = pd.DataFrame({'Country ID':[1,1,2,12,34,23,45,34,23,12,2,3,4,1], 'Age':[12,12,15,18, 19, 25, 21, 25, 25, 18, 25,12,32,18], 'Group ID':['a','z','c','a','b','s','d','a','b','s','a','d','a','f']}) print(df) """ Country ID Age Group ID 0 1 12 a 1 1 12 z 2 2 15 c 3 12 18 a 4 34 19 b 5 23 25 s 6 45 21 d 7 34 25 a 8 23 25 b 9 12 18 s 10 2 25 a 11 3 12 d 12 4 32 a 13 1 18 f """
#last只保留最后一個重復項
print(df.drop_duplicates(['Age','Country ID'],keep='last')) """ Country ID Age Group ID 1 1 12 z 2 2 15 c 4 34 19 b 6 45 21 d 7 34 25 a 8 23 25 b 9 12 18 s 10 2 25 a 11 3 12 d 12 4 32 a 13 1 18 f """

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM