python dataframe数据集中重复数据的检查的、修改、删除方法
1.创建一个测试样例
import pandas as pd
se1=pd.Series(['a','b','b','d','d','d','e','f','f'])
se2=pd.Series(['1','2','2','4','4','4','5','7','8'])
df = pd.DataFrame({'name':se1, 'number':se2})
df
看一下df的样子:
2.查看name列中包含的数据有哪些?
print(df['name'].unique())
结果为:['a' 'b' 'd' 'e' 'f']
可以看到结果为name列中包含的不同的数据值。这个函数筛选的并非列中值出现一次的值,而是输出列中存在的值。
3.输出列中每个数值,及每个值出现的次数
df['name'].value_counts()
输出结果如下:
4.查看数据集中行的重复情况
df.duplicated()
结果如下:
可以看到duplicated会对行的重复情况做检查,并且将重复行中的第一行置为False,其余行置为True。也就是说认为重复行中的第一行为不重复,剩余行为重复行。
深入一下:
duplicate的参数为:duplicated(subset=None,keep=“first”)。
其中keep参数可以设置如下:
- first:从前向后查找,除了第一次出现外,其余相同的被标记为重复。默认为此选项。(上面的实验已经看到这一点)
- last:从后向前查找,除了最后一次出现外,其余相同的被标记为重复。
- False:所有相同的都标记为重复。
subset:用于识别重复的列标签或列标签序列,默认识别所有的列标签。
使用方法:df.duplicated(subset=['name','number'])。
5.删除数据集中重复的行
df.drop_duplicates()
将返回数据集中,不同的数据行
深入一下:
drop_duplicates(subset=None,keep=“first”,inplace=False)
inplace:表示是否在原数据上操作,如果设为True,则表示直接修改原数据;如果设为False,则表示修改原数据的副本,返回新数据。True可以理解为永久修改,False为临时修改。
keep:同duplicated一样,这里就不再详细说了。
看一下subset的实验:
df.drop_duplicates(subset='name')
结果如下:
可以看到,删除重复行的时候,只考虑了subset集中列的重复情况,未考虑其他列的重复情况。
欢迎点赞、评论、转发~