Pandas数据处理3、DataFrame去重函数drop_duplicates()详解

简介: Pandas数据处理3、DataFrame去重函数drop_duplicates()详解



前言

       这个女娃娃是否有一种初恋的感觉呢,但是她很明显不是一个真正意义存在的图片,我们需要很复杂的推算以及各种炼丹模型生成的AI图片,我自己认为难度系数很高,我仅仅用了64个文字形容词就生成了她,很有初恋的感觉,符合审美观,对于计算机来说她是一组数字,可是这个数字是怎么推断出来的就是很复杂了,我们在模型训练中可以看到基本上到处都存在着Pandas处理,在最基础的OpenCV中也会有很多的Pandas处理,所以我OpenCV写到一般就开始写这个专栏了,因为我发现没有Pandas处理基本上想好好的操作图片数组真的是相当的麻烦,可以在很多AI大佬的文章中发现都有这个Pandas文章,每个人的写法都不同,但是都是适合自己理解的方案,我是用于教学的,故而我相信我的文章更适合新晋的程序员们学习,期望能节约大家的事件从而更好的将精力放到真正去实现某种功能上去。本专栏会更很多,只要我测试出新的用法就会添加,持续更新迭代,可以当做【Pandas字典】来使用,期待您的三连支持与帮助。


环境

系统环境:win11

Python版本:python3.9

编译工具:PyCharm Community Edition 2022.3.1

Numpy版本:1.19.5

Pandas版本:1.4.4

基础函数的使用

Pandas数据处理——渐进式学习1、Pandas入门基础

Pandas数据处理——渐进式学习、DataFrame(函数检索-请使用Ctrl+F搜索)


drop_duplicates函数

函数语法:

data.drop_duplicates(subset=['a','b','b'],keep='first',inplace=True)

函数参数:

subset:表示要进去重的列名,默认为 None。

keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。

inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。

subset参数测试

根据参数说明我们知道,是根据列名去重。

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['age'])
print(df)

数据中能看到我们的age列的赵飞燕行业是NaN,故而直接删除了没有显示。

Keep参数测试

全都删掉【keep=False】

这里是只要有重复的就全部删除。

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['sex'], keep=False)
print(df)

留第一次出现的【keep='first'】

保留第一次出现的,后面的都删除。

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['sex'], keep='first')
print(df)

留最后一次出现的【keep='last'】

保留最后一次出现的,其它的都删除。

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['sex'], keep='last')
print(df)

ignore_index参数测试

ignore_index=True重新排序

我们测试的时候能看到我们用的是保存后面的行值。true就是重新排序,我们会看到行是0,1,2的排序。

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['sex'], keep='last', ignore_index=True)
print(df)

重新排序:

ignore_index=False不重新排序

这里是False,代表我们不会对结果进行排序,能看到结果行显示:[2,3,4]

import pandas as pd
import numpy as np
df = pd.DataFrame(
    {'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],
     'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],
     'age': [22, np.nan, 16, np.nan, 27]
     }
)
print(df)
print("----drop_duplicates----")
# drop_duplicates使用
df = df.drop_duplicates(subset=['sex'], keep='last', ignore_index=False)
print(df)

总结

去重还是用的非常多的,我们技术的时候就可以先将内容去重,在根据出现的次数累加就可以了,很方便的用法,当然也有直接能处理的计数函数Counter()。有兴趣可以去试试,我会在后面经常使用这个函数的。

相关文章
|
8月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
591 0
|
存储 数据挖掘 数据处理
掌握Pandas核心数据结构:Series与DataFrame的四种创建方式
本文介绍了 Pandas 库中核心数据结构 Series 和 DataFrame 的四种创建方法,包括从列表、字典、标量和 NumPy 数组创建 Series,以及从字典、列表的列表、NumPy 数组和 Series 字典创建 DataFrame,通过示例详细说明了每种创建方式的具体应用。
1297 67
|
存储 数据挖掘 索引
Pandas数据结构:Series与DataFrame
本文介绍了 Python 的 Pandas 库中两种主要数据结构 `Series` 和 ``DataFrame`,从基础概念入手,详细讲解了它们的创建、常见问题及解决方案,包括数据缺失处理、数据类型转换、重复数据删除、数据筛选、排序、聚合和合并等操作。同时,还提供了常见报错及解决方法,帮助读者更好地理解和使用 Pandas 进行数据分析。
1111 11
|
存储 数据挖掘 索引
Pandas Series 和 DataFrame 常用属性详解及实例
Pandas 是 Python 数据分析的重要工具,其核心数据结构 Series 和 DataFrame 广泛应用。本文详细介绍了这两种结构的常用属性,如 `index`、`values`、`dtype` 等,并通过具体示例帮助读者更好地理解和使用这些属性,提升数据分析效率。
980 4
|
BI Python
Pandas 常用函数-数据统计和描述
Pandas 常用函数-数据统计和描述
274 0
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
705 0
|
10月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
756 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
446 1
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
443 0
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
404 2

热门文章

最新文章