在數據處理和清洗過程中,一個經常出現的問題是如何移除重複的數據項。pandas提供了一種方便易用的方式來完成這項任務——drop_duplicates()函數。本文將從多個方面深入探討這個函數。
一、drop_duplicates()函數是什麼操作
drop_duplicates()函數是指在DataFrame或Series對象上,返回一個去重後的新對象。
它的完整語法為:
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
其中,各參數含義如下:
- subset:指定在哪些列上進行去重操作,默認為所有列。
- keep:指定保留哪個副本。取值可以為{‘first’, ‘last’, False}。默認為’first’,即保留第一個副本。
- inplace:是否在原對象上進行修改,而不是返回一個新的對象。默認為False。
- ignore_index:是否重新編號。默認為False,即保留原編號。
二、drop_duplicates()函數的作用
drop_duplicates()函數的主要作用是去除重複數據,可以用於數據清洗、數據分析等操作。在具體應用中,去除重複數據通常有以下幾個方面的需求:
1、檢查數據完整性
數據重複可以導致數據不完整,會導致分析結果錯誤,因此去重具有檢查數據完整性的作用。例如,下面是一份購物訂單數據:
訂單號 商品名稱 數量 001 手機 1 001 電視 1 002 電視 2 003 手機 1
訂單號001重複出現,說明該訂單中購買了多件商品,因此需要根據訂單號進行去重操作,得到去重後的訂單數據:
訂單號 商品名稱 數量 001 手機 1 001 電視 1 002 電視 2 003 手機 1
2、保證結果準確性
去重可以保證分析結果的準確性。例如,下面是一份人均GDP數據:
年份 國家 人均GDP(美元) 2020 中國 10323 2020 美國 51970 2019 中國 10024 2019 美國 51450 2018 中國 9584 2018 美國 49870
可以根據年份、國家來進行去重操作,得到每個國家各年份的人均GDP數據:
年份 國家 人均GDP(美元) 2020 中國 10323 2020 美國 51970 2019 中國 10024 2019 美國 51450 2018 中國 9584 2018 美國 49870
三、drop_duplicates()函數的常見應用場景
下面介紹drop_duplicates()函數的一些常見應用場景。
1、在DataFrame對象上使用
使用drop_duplicates()函數時,可以將DataFrame對象作為參數傳入,這樣函數將對整個數據表中的重複項進行去重操作。例如:
import pandas as pd data = {'name': ['Alice', 'Bob', 'Chris', 'Alice'], 'age': ['25', '26', '25', '24'], 'city': ['New York', 'Boston', 'Boston', 'New York']} df = pd.DataFrame(data) new_df = df.drop_duplicates() print(new_df)
這將輸出一個去重後的DataFrame對象:
name age city 0 Alice 25 New York 1 Bob 26 Boston 2 Chris 25 Boston
2、在Series對象上使用
除了在DataFrame對象上使用drop_duplicates()函數,還可以在Series對象上使用。例如:
import pandas as pd data = [1, 2, 2, 3, 4, 4, 5] s = pd.Series(data) new_s = s.drop_duplicates() print(new_s)
這將輸出一個去重後的Series對象:
0 1 1 2 3 3 4 4 6 5 dtype: int64
3、指定列進行去重操作
在進行去重操作時,還可以指定針對哪些列進行去重操作。例如:
import pandas as pd data = {'name': ['Alice', 'Bob', 'Chris', 'Alice', 'Chris'], 'age': ['25', '26', '25', '24', '25'], 'city': ['New York', 'Boston', 'Boston', 'New York', 'Boston']} df = pd.DataFrame(data) new_df = df.drop_duplicates(subset=['name','age']) print(new_df)
這將輸出一個按照’name’和’age’列進行去重後的DataFrame對象:
name age city 0 Alice 25 New York 1 Bob 26 Boston 2 Chris 25 Boston 3 Alice 24 New York
4、保留最後一個重複副本
在默認情況下,drop_duplicates()函數會保留第一個重複副本,可以通過keep參數來指定保留最後一個重複副本。例如:
import pandas as pd data = {'name': ['Alice', 'Bob', 'Chris', 'Alice', 'Chris', 'Bob'], 'age': ['25', '26', '25', '24', '25', '27'], 'city': ['New York', 'Boston', 'Boston', 'New York', 'Boston', 'Chicago']} df = pd.DataFrame(data) new_df = df.drop_duplicates(keep='last') print(new_df)
這將輸出一個保留最後一個重複副本的DataFrame對象:
name age city 3 Alice 24 New York 4 Chris 25 Boston 5 Bob 27 Chicago
5、在原對象上進行修改
默認情況下,drop_duplicates()函數會返回一個新的副本,不會修改原對象內容,可以通過inplace參數來指定在原對象上進行修改。例如:
import pandas as pd data = {'name': ['Alice', 'Bob', 'Chris', 'Alice', 'Chris', 'Bob'], 'age': ['25', '26', '25', '24', '25', '27'], 'city': ['New York', 'Boston', 'Boston', 'New York', 'Boston', 'Chicago']} df = pd.DataFrame(data) df.drop_duplicates(inplace=True) print(df)
這將在原DataFrame對象上進行去重操作,並且輸出去重後的結果。
四、小結
本文詳細介紹了pandas的drop_duplicates()函數,包括函數的語法、作用、常見應用場景以及注重實踐操作。掌握這個函數可以幫助我們輕鬆應對數據清洗和數據分析中的去重操作。
原創文章,作者:LWDCC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372535.html