前言
使用Pandas进行数据预处理时需要了解Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的三篇博客详细介绍这两种数据结构的处理方法:
一文速学-数据分析之Pandas数据结构和基本 *** 作代码
DataFrame行列表查询 *** 作详解+代码实战
DataFrame多表合并拼接函数concat、merge参数详解+代码 *** 作展示
以上三篇很容易学会,没有比较难的实战。
本文承接上一篇:一文速学-Pandas处理缺失值 *** 作各类方法详解
此篇博客基于Jupyter之上进行演示,本篇博客的愿景是希望我或者读者通过阅读这篇博客能够学会方法并能实际运用,而且能够记录到你的思想之中。当然个人不是数学专业对一些专业性的知识可能不是很了解,希望读者看完能够提出错误或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。
提示:以下是本篇文章正文内容,下面案例可供参考
此博客用到的数据集为:
Series:
se = pd.Series({'a':1,'c':1,'d':3,'e':3})
DataFrame:
data = {'name': ['user1', 'user2', 'user2', 'user3', 'user4'],
'old': [21, 18, 21, 19, 26],
'weight': [124, 124, 102,103,121],
'sex':['女','男','男','男','男'] }
columns1=['name', 'old', 'weight','sex']
index1=['id1', 'id2', 'id3','id4','id5']
df2= pd.DataFrame(data,columns=columns1,index=index1)
对于Pandas的数据集重复值的 *** 作,有两个非常方便的函数:
- duplicated() :检测是否有重复值
- drop_duplicates() :删除重复值
对Series数据结构:
pandas.Series.duplicated(keep='first')
对DataFrame数据结构:
pandas.DataFrame.duplicated(subset=None,keep='first')
参数说明:
- subset:列标签或标签序列
- keep:对于选定重复值指定 *** 作类型,有三种可选范围
- first:将重复项标记True为第一次出现的除外
- last:将重复项标记True为最后一次除外
- False:将所有重复项标记为True
该函数和isnull的功能一样,也是替换原来的数据集把第一次出现的数据标记为False,不熟第一次的为True:
se.duplicated()
对于DataFrame最好指定子列
df2.duplicated(subset=['old'])
将重复项标记True为最后一次除外:
df2.duplicated(subset=['old'],keep='last')
将所有重复项标记为True,这里不需要引号:
df2.duplicated(subset=['old'],keep=False)
二、drop_duplicates()
使用该函数可以删去数据集中的重复值。
语法:
drop_duplicated(subset=None,keep=“first”,inplace=False)
官方释义:
参数说明:
- subset:用于指定一列或者多列进行删除重复值 *** 作。
- keep:删除重复值后保留的数据,默认保留第一条数据。
- inplace:该函数在其他函数表示意思都一样,是否将删除后的数据替换原数据集。
- ingoore_index:和merge函数一样的意思,生成数据的索引是元数据的,还是从0,1,2…到n-1的自然数排列
se.drop_duplicates()
这里稍微改一下df2的格式为df1:
df1.drop_duplicates()
subset指定列来判断:
df1.drop_duplicates(subset=['old'])
通过设定keep来保留最后一个last:
df1.drop_duplicates(subset=['old'],keep='last')
若修改ignore_index则会把原index替换从0开始的序列:
这样id就被替换了
参阅图解Pandas重复值处理
pandas的重复值的处理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)