深入解析pandas的drop_duplicates()函數

在數據處理和清洗過程中,一個經常出現的問題是如何移除重複的數據項。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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LWDCC的頭像LWDCC
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29

發表回復

登錄後才能評論