文档详情

Python数据分析基础与应用电子活页5-7使用drop_duplicates()函数.docx

发布:2025-05-27约2.07千字共4页下载文档
文本预览下载声明

Python数据分析基础与应用

模块

PAGE4

PAGE3

电子活页5-7使用drop_duplicates()函数删除数据集中的重复值

【技能训练5-9】使用drop_duplicates()函数删除数据集中的重复值

【训练要求】

在JupyterNotebook开发环境中创建j5-09.ipynb,然后编写代码使用drop_duplicates()函数删除数据集中的重复值。

【实施过程】

(1)创建一个包含重复值的DataFrame对象

代码如下:

importpandasaspd

data1={name:[安静,路远,温暖,安静,阳光,安静],

sex:[女,男,男,女,男,女],

age:[21,20,19,21,23,21],

height:[171,180,189,171,175,171]}

df1=pd.DataFrame(data1)

df1

输出结果:

(2)默认保留第一次出现的重复值

代码如下:

df2=df1.drop_duplicates()

df2

输出结果:

代码df1.drop_duplicates()的输出结果与代码df1.drop_duplicates(keep=first)的相同,因为该函数默认只保存第一次出现的重复值。

(3)保留最后一次出现的重复值

代码如下:

df2=df1.drop_duplicates(keep=last)

df2

输出结果:

(4)设置参数keep=False删除所有重复值

代码如下:

df1.drop_duplicates(keep=False)

输出结果:

(5)根据指定列索引去重

代码如下:

importpandasaspd

data3={

date:[2022/1/1,2022/1/2,2022/1/3,2022/1/4,2022/1/5,

2022/1/6,2022/1/7,2022/1/8],

highT:[12,15,12,12,7,6,7,6],

lowT:[1,4,8,6,5,5,6,3],

AQI:[167,145,123,212,104,61,54,70]

}

df3=pd.DataFrame(data=data3)

df3

输出结果:

代码如下:

#删除所有重复值,对于highT列来说3个12、2个6、2个7都是重复值

df4=df3.drop_duplicates(subset=[highT],keep=False)

df4

输出结果:

可以省略subset关键字,将上述代码简写为以下形式:

df4=df3.drop_duplicates([highT],keep=False)

(6)去重时重置索引

从上述代码可以看出,删除重复值后,行索引使用的数字与原来的相同,并没有从0重新开始,那么应该怎么在去重时重置索引呢?使用pandas提供的reset_index()函数直接重置索引即可。

去重的代码如下:

df5=df3.drop_duplicates(subset=[lowT],keep=False)

df5

输出结果:

重置索引的代码如下:

#重置索引,从0重新开始

df6=df5.reset_index(drop=True)

df6

输出结果:

(7)指定多列去重

创建DataFrame对象的代码如下:

importpandasaspd

data7={

date:[2022/1/1,2022/1/2,2022/1/3,2022/1/4,2022/1/5,

2022/1/6,2022/1/7,2022/1/8],

highT:[12,15,12,12,6,6,7,6],

lowT:[1,4,8,6,5,5,6,3],

AQI:[167,145,123,212,104,61,54,70]

}

df7=pd.DataFrame(data=data7)

df7

输出结果:

指定多列去重的代码如下:

#使用keep=last只保留最后一个重复值

df8=df7.drop_duplicates([highT,lowT],keep=last)

df8

输出结果:

上述数据集中,索引为4、5的两条记录的highT列、lowT列的数据完全相同,使用参数值last保留最后一个重复值,也就是索引为5的记录被保留,索引为4的记录被删除。

显示全部
相似文档