16、pandas的duplicated和drop_duplic
2017-12-27 本文已影响0人
让数据告诉你
在获取数据的时候经常会有一些重复的数据,而重复的数据会对统计结果产生影响,也会误导决策人员的决策。
数据源还是使用前面把一份文件分成多份文件的数据。
![](https://img.haomeiwen.com/i8612260/44633c3e7f0e919b.png)
要查询是否存在重复值可以使用duplicated()函数:
![](https://img.haomeiwen.com/i8612260/ffdeeed203080364.png)
返回的是一组bool值,这些bool值能够用于筛选非重复值或者重复值。
需要注意的是duplicated()如果不指定面积这个变量的话,那么其将会对所以列进行对比,只有每一列的值都一样时才会标记为重复值。
我们可以尝试着筛选出存在重复值的行:
![](https://img.haomeiwen.com/i8612260/af2d7e9db9cf298b.png)
![](https://img.haomeiwen.com/i8612260/3296f94fe8b70dd9.png)
筛选出非重复值的行:
![](https://img.haomeiwen.com/i8612260/2ce9e364dad9fd55.png)
当然了,我们有时候也许会想要选择两个列当中都是重复的值的数据,这个时候就需要选择两列同时作为依据进行筛选了。
![](https://img.haomeiwen.com/i8612260/bbca2f8f297c6f50.png)
还有一个常用的场景就是当我们选择出重复值之后,想要保留的是第一个还是最后一个呢?
![](https://img.haomeiwen.com/i8612260/40acf6a4d07351cc.png)
![](https://img.haomeiwen.com/i8612260/e82e352daa0a4094.png)
由上图可知,keep='last'参数就是让系统从后向前开始筛选,这样索引小的重复行就会返回True。
以上所说的是duplicated函数,只是筛选出了重复值而已,并没有对重复值进行处理。
要对重复值进行处理就要使用drop_duplicates了,drop_duplicates的使用效率会高得多:
![](https://img.haomeiwen.com/i8612260/734e506cfd3829bd.png)
这样就把重复值都去掉了。