首页 > pandas 阅读数:30

pandas重复值的处理

在数据分析前,首先要进行数据采集。通常,采集到的原始数据大多数是不完整和不一致的“脏”数据,无法直接进行数据挖掘。为了提高数据挖掘的质量,产生了数据预处理技术。数据预处理包括数据清理、数据集成、数据变换、数据归约等。

数据清洗是发现并纠正数据文件中可识别的错误,如移除重复数据,处理缺失值和空格值,检测和过滤异常值,并检查数据一致性等。通过数据清洗不仅要使通过清洗后的数据变得可用,而且还要使数据变得更加适合进行后续的数据分析工作。本节教程就来介绍数据重复值的处理。

原始数据集中往往会存在着许多重复数据。所谓重复数据是指在数据结构中所有列的内容都相同,即行重复。而处理重复数据是数据分析中经常要面对的问题之一。pandas 提供了 duplicated() 和 drop_duplicates() 函数用于标记和删除重复数据。

duplicated() 函数

duplicated() 函数用于标记 Series 中的值、DataFrame 中的记录行是否重复,重复为 True,不重复为 False。该函数语法格式如下:

pandas.DataFrame.duplicated(subset=None,keep='first')

pandas.Series.duplicated(keep='first')

函数中的参数说明如下:
  • subset:接收 string 或 sequence,用于识别重复的列标签或列标签序列,默认为列标签,默认值为 None;
  • keep:接收特定 string, first 表示除了第一次出现外,其余相同的重复项标记为 True; last 表示除了最后一次出现外,其余相同的重复项标记为 True; False 表示将所有重复项标记为True,默认为 first。

drop_duplicates() 函数

drop_duplicates() 函数用于删除 Series、DataFrame 中重复记录,并返回删除重复后的结果。该函数语法格式如下。

pandas.DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)

pandas.Series.drop_duplicates(keep='first', inplace=False)

函数中的参数说明如下:
  • subset:接收 string 或 sequence,仅考虑用于标识重复项的某些列,默认情况下使用所有列,默认值为 None;
  • keep:接收特定 string,first 表示删除重复项并保留第一次出现的项;last 表示除了最后一项外,删除重复项;False 表示删除所有重复项;默认为 first;
  • inplace:接收 boolean,True 表示直接修改原对象,False 表示创建一个副本,修改副本,原对象不变,默认为 False。

【例 1】有一个手机评论数据 Mobile.csv 文件,该文件的数据列包括手机品牌、价格和评分。现在要求完成去除该文件中的重复值。

其示例代码 test1.py 如下。
# -*- coding: utf-8 -*-
import pandas as pd
df =  pd.read_csv('Mobile.csv',encoding='GBK')
#取df中0-4列数据
df1 = df.iloc[:,0:4]
print(df1)
#标识重复项
data = df1.duplicated(keep='first')
print(data)
#删除重复项
data1 = df1.drop_duplicates(keep='first')
print(data1)