您的位置:

深入解析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()函数,包括函数的语法、作用、常见应用场景以及注重实践操作。掌握这个函数可以帮助我们轻松应对数据清洗和数据分析中的去重操作。