小呆学数据分析——用duplicated/drop_duplicates方法进行重复项处理

重复项处理应用场景

重复项处理是数据清洗的一个步骤,主要为了处理重复录入的数据或者不同来源重复调查得到的同样(更新)的数据。数据清洗详见: 小瓜讲数据分析——数据清洗

例子

小呆被交代一项任务,将公司从某渠道拿到的资料(电话)整理一下发给营销同事供推销使用。小呆打开phonebook.csv看到如下内容
phonebook.csv

姓名,手机号,固话
张晓散,18020001591,05746211
李孝思,18819455908,05746222
王笑武,18020111591,05746245
陈肖柳,18025812138,05746564
孙萧齐,18121312138,05743453
张晓散,18020001591,05746211
李孝思,13812138908,05746222

里面有重复的张晓散,号码都一样的,怎么还有两个李孝思啊,固话是一样的手机号不一样,应该是换手机了吧。
那么要做的应该是1)删掉姓名手机固话完全相同的某些行,保留其中的一行就可以了;2)选择一个李孝思,删除一个李孝思。
小呆听说电话本里面最后面的是最新的登记,所以李孝思应该保留最后的一个。于是小呆写下代码

import pandas as pd
phonebook = pd.read_csv('phonebook.csv')

print(phonebook.duplicated())
pb2 = phonebook.drop_duplicates()
print(pb2)

运行结果如下:

    姓名          手机号       固话
0  张晓散  18020001591  5746211
1  李孝思  18819455908  5746222
2  王笑武  18020111591  5746245
3  陈肖柳  18025812138  5746564
4  孙萧齐  18121312138  5743453
6  李孝思  13812138908  5746222

李孝思没有删掉嘛,小呆一查帮助,原来drop_duplicates方法里面默认是对比所有列的内容,那肯定没法剔除旧的内容保存更新后的内容,毕竟更新的和老的不完全一样,而且设置一下保存,选择保存最后的值,于是小呆写下代码

pb3 = pb2.drop_duplicates(['姓名', '固话'], keep = 'last')
print(pb3)

结果如下:

   姓名          手机号       固话
0  张晓散  18020001591  5746211
2  王笑武  18020111591  5746245
3  陈肖柳  18025812138  5746564
4  孙萧齐  18121312138  5743453
6  李孝思  13812138908  5746222

于是小呆就把结果给营销的同事了。

文章导引列表:
机器学习

  1. 小瓜讲机器学习——分类算法(一)logistic regression(逻辑回归)算法原理详解
  2. 小瓜讲机器学习——分类算法(二)支持向量机(SVM)算法原理详解
  3. 未完待续

数据分析

  1. 小呆学数据分析——使用pandas中的merge函数进行数据集合并
  2. 小呆学数据分析——使用pandas中的concat函数进行数据集堆叠
  3. 小呆学数据分析——使用pandas的pivot进行数据重塑
  4. 小呆学数据分析——用duplicated/drop_duplicates方法进行重复项处理
  5. 小呆学数据分析——缺失值处理(一)
  6. 小呆学数据分析——异常值判定与处理(一)
  7. 小瓜讲数据分析——数据清洗

数据可视化

  1. 小瓜讲数据分析——数据可视化工程(matplotlib库使用基础篇)
  2. 小瓜讲matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)

你可能感兴趣的:(python,pandas,duplicated,drop_duplicates,重复项)