pandas重复值的处理
在数据分析前,首先要进行数据采集。通常,采集到的原始数据大多数是不完整和不一致的“脏”数据,无法直接进行数据挖掘。为了提高数据挖掘的质量,产生了数据预处理技术。数据预处理包括数据清理、数据集成、数据变换、数据归约等。
数据清洗是发现并纠正数据文件中可识别的错误,如移除重复数据,处理缺失值和空格值,检测和过滤异常值,并检查数据一致性等。通过数据清洗不仅要使通过清洗后的数据变得可用,而且还要使数据变得更加适合进行后续的数据分析工作。本节教程就来介绍数据重复值的处理。
原始数据集中往往会存在着许多重复数据。所谓重复数据是指在数据结构中所有列的内容都相同,即行重复。而处理重复数据是数据分析中经常要面对的问题之一。pandas 提供了 duplicated() 和 drop_duplicates() 函数用于标记和删除重复数据。
【例 1】有一个手机评论数据 Mobile.csv 文件,该文件的数据列包括手机品牌、价格和评分。现在要求完成去除该文件中的重复值。
其示例代码 test1.py 如下。
数据清洗是发现并纠正数据文件中可识别的错误,如移除重复数据,处理缺失值和空格值,检测和过滤异常值,并检查数据一致性等。通过数据清洗不仅要使通过清洗后的数据变得可用,而且还要使数据变得更加适合进行后续的数据分析工作。本节教程就来介绍数据重复值的处理。
原始数据集中往往会存在着许多重复数据。所谓重复数据是指在数据结构中所有列的内容都相同,即行重复。而处理重复数据是数据分析中经常要面对的问题之一。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)