重复项处理应用场景
重复项处理是数据清洗的一个步骤,主要为了处理重复录入的数据或者不同来源重复调查得到的同样(更新)的数据。数据清洗详见: 小瓜讲数据分析——数据清洗
例子
小呆被交代一项任务,将公司从某渠道拿到的资料(电话)整理一下发给营销同事供推销使用。小呆打开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
于是小呆就把结果给营销的同事了。
文章导引列表:
机器学习
数据分析
- 小呆学数据分析——使用pandas中的merge函数进行数据集合并
- 小呆学数据分析——使用pandas中的concat函数进行数据集堆叠
- 小呆学数据分析——使用pandas的pivot进行数据重塑
- 小呆学数据分析——用duplicated/drop_duplicates方法进行重复项处理
- 小呆学数据分析——缺失值处理(一)
- 小呆学数据分析——异常值判定与处理(一)
- 小瓜讲数据分析——数据清洗
数据可视化