pandas删除数据&重复值处理

举报
Python新视野 发表于 2022/04/28 18:36:56 2022/04/28
【摘要】 删除数据 根据列名删除列使用 drop 来删除某列,指定要删除的轴,与对应 列/行 的 名称/索引。df.drop('name', axis = 1) # 删除单列df.drop(['name', 'age'], axis = 1) # 删除多列 根据索引删除行与上面删除列的方式相似,不过这里指定的是索引。df.drop(0, axis=0) # 删除单行df.drop([0, 1]...

删除数据

根据列名删除列

使用 drop 来删除某列,指定要删除的轴,与对应 列/行名称/索引

df.drop('name', axis = 1)  # 删除单列
df.drop(['name', 'age'], axis = 1)  # 删除多列

根据索引删除行

与上面删除列的方式相似,不过这里指定的是索引。

df.drop(0, axis=0)  # 删除单行
df.drop([0, 1], axis=0)  # 删除多行

使用 loc 定位数据并删除

先使用 loc 定位某条件的数据,再获取索引 index ,然后使用 drop 删除。

df.drop(df.loc[df['name'] == '娜美'].index, axis=0)  # 删除定位到的行

使用 del 删除列

del在原数据上进行修改,使用是要注意。

del df['age']

同时删除行、列

drop 也可以同时指定行列进行删除,这里删除第一、二行并删除 age 列。

df.drop(columns=['age'], index=[0, 1])

删除重复值

  • 指定 subset ,则根据指定的列作为参考进行去重,即如果某两行 a 值相同,则会删除第二次的出现的那一行,只保留第一次
  • 不指定 subset ,则根据所有列作为参考进行去重,只有两行数据 完全相同 才会进行去重。
df.drop_duplicates(subset=['a'], keep='first')
df.drop_duplicates(keep='first')



筛查重复值

示例数据

df = pd.DataFrame({'name':['Python',
                        'Python',
                        'Java',
                        'Java',
                        'C'],
                   'count': [2, 2, 6, 8, 10]})

在这里插入图片描述

判断某列是否有重复值

使用 values_counts() 对列中各值出现次数进行统计。结果默认按照降序进行排列,只需要判断第一行值的出现次数是否为1即可判断是否存在重复值。

df['a'].value_counts()

在这里插入图片描述

使用 drop_duplicates() 对重复值进行删除,只保留第一次出现的值,判断处理后的值是否与原 df 相等,如果 False 就表示有重复值。

df.equals(df.drop_duplicates(subset=['a'], keep='first'))

False

判断 DataFrame 是否有重复行

同样是使用 drop_duplicates() 对重复值进行删除,只保留第一次出现的值,此时不使用 subset 参数设置列,默认为全部列,判断处理后的值是否与原 df 相等,如果 False 就表示有重复值。

df.equals(df.drop_duplicates(keep='first'))

False

统计重复行的数量

注意这里的统计是参照所有列来的,只有两行完全相同才会判断为重复行,所以统计的结果是 1 。

len(df) - len(df.drop_duplicates(keep="first"))

1

显示重复的数据行

先删除重复的行,只保留第一次出现的,得到一个 行唯一 的数据集,再使用 drop_duplicates() 删除掉 df 中存在重复的所有数据,这次不保留第一次出现的重复值,将上述两个结果集进行合并,使用 drop_duplicates() 对新生成的数据集进行去重,即可得到重复行的数据。

df.drop_duplicates(keep="first")\
  .append(df.drop_duplicates(keep=False))\
  .drop_duplicates(keep=False)

在这里插入图片描述


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。