"重复数据 "的字面意思是去除重复的数据。在一个数据集中,重复数据的整个过程就是寻找和删除重复的数据,最后只保存一个现有的数据项。
1.为什么我们在数据分析中需要重复数据删除
- 删除重复的数据是数据分析中常见的问题。
- 重复数据删除不仅可以节省内存空间,提高写入性能,还可以提高数据集的准确性,防止数据集受到重复数据的影响。
2.Pandas drop_duplicates()函数
-
Pandas DataFrame对象提供了**drop_duplicates()**函数,用于删除重复的数据。
-
下面是**drop_duplicates()**函数的语法:
df.drop_duplicates(subset=['Python','Java','Javascript'],keep='first',inplace=True) -
subset:表示要被删除的列名。默认值为无。
-
keep:有三个可选参数:第一、最后和False。默认值是first,表示只保留第一个重复的内容,其他重复的内容被删除,last表示只保留最后一个重复的内容。False意味着所有的重复都被删除。
-
inplace: 布尔型参数。默认值是False,这意味着删除重复的内容后会返回一个副本。如果它是True,意味着直接在原始数据上删除重复的内容。
-
下面是这个例子,你可以看到注释中的详细解释。
def drop_duplicates_example(): # creat the original data source. source_data = { 'OS':['Windows', 'Linux', 'MacOS', 'Linux', 'Windows', 'Windows'], 'Coding Language':['Python', 'Java', 'Python', 'Java', 'Python', 'C++'], 'Database':['MySQL', 'MongoDB', 'Oracle', 'MySQL', 'MySQL', 'SQLite'] } df = pd.DataFrame(data = source_data) print('*************** original dataframe object ******************\r') print(df) print('\n *************** The first occurrence of duplicates is retained by default ******************\r') df1 = df.drop_duplicates() print('df.drop_duplicates()\r', df1) print('\n *************** reset dataframe object index ******************\r') print('df1.reset_index(drop=True)\r', df1.reset_index(drop=True)) print('\n *************** set keep=False to remove all duplicate data ******************\r') df2 = df.drop_duplicates(keep=False) print('df.drop_duplicates(keep=False)\r', df2) print('\n *************** drop duplicates according to the specified column label, drop all the duplicate data in OS column ******************\r') df3 = df.drop_duplicates(subset=['OS'],keep='first') print('df.drop_duplicates(subset=[\'OS\'],keep=\'first\')\r', df3) print('\n *************** drop duplicates according to the multiple specified column labels, drop all the duplicate data in OS & Database column ******************\r') df4 = df.drop_duplicates(subset=['OS', 'Database'], keep=False) print('df.drop_duplicates(subset=[\'OS\', \'Database\'],keep=\'last\')\r', df4) if __name__ == '__main__': drop_duplicates_example() -
下面是上述例子的源代码执行结果
*************** original dataframe object ****************** OS Coding Language Database 0 Windows Python MySQL 1 Linux Java MongoDB 2 MacOS Python Oracle 3 Linux Java MySQL 4 Windows Python MySQL 5 Windows C++ SQLite *************** The first occurrence of duplicates is retained by default ****************** df.drop_duplicates() OS Coding Language Database 0 Windows Python MySQL 1 Linux Java MongoDB 2 MacOS Python Oracle 3 Linux Java MySQL 5 Windows C++ SQLite *************** reset dataframe object index ****************** df1.reset_index(drop=True) OS Coding Language Database 0 Windows Python MySQL 1 Linux Java MongoDB 2 MacOS Python Oracle 3 Linux Java MySQL 4 Windows C++ SQLite *************** set keep=False to remove all duplicate data ****************** df.drop_duplicates(keep=False) OS Coding Language Database 1 Linux Java MongoDB 2 MacOS Python Oracle 3 Linux Java MySQL 5 Windows C++ SQLite *************** drop duplicate according to the specified column label, drop all the duplicate data in OS column ****************** df.drop_duplicates(subset=['OS'],keep='first') OS Coding Language Database 0 Windows Python MySQL 1 Linux Java MongoDB 2 MacOS Python Oracle *************** drop duplicate according to the multiple specified column labels, drop all the duplicate data in OS and Database column ****************** df.drop_duplicates(subset=['OS', 'Database'],keep='last') OS Coding Language Database 1 Linux Java MongoDB 2 MacOS Python Oracle 3 Linux Java MySQL 5 Windows C++ SQLite