pandas去重和删除空值列或行_pd 去重,2024年最新阿里物联网嵌入式开发开发面试解答

64 阅读3分钟

删除过后的样子:  
 ![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b561d59f6c7a42a39ce8373ca03e3e41~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=UbCO8tXcmP%2FB04C%2BFRxjsuLr5C8%3D)


### 2、删除已用代表空值的’NA’替换过的数据


这个时候就需要写一个循环来删除数据所在行或者列(这里删的是列)  
 删除前先看一下数据  
 ![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5db5c55476e04bc8912ca51b1c41697a~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=HdmPp%2FYIe7198WqvXs%2FN7g2QJAE%3D)  
 开始写循环



for i in detail1.columns:

遍历数据行

for j in range(len(detail1)):

判断数据,如果在i行j列的数据为'NA'时

    if detail1.loc[j,i] == 'NA':

查看具体那一列被删除了

        print("正在删除%s列" % i)

调用drop函数删除空值所在列

        detail1.drop(labels = i ,axis=1,inplace=True)

当执行删除后需立即跳出该循环,否者会报错,出现找不到该列。

        break

最后看一下删除空值列后的表

detail1


输出结果:  
 ![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/431ba9e420234808b5636ee9db4a33ca~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=pVl7djzYkwwovkJbs5w74Knc4Ec%3D)  
 可以看到此时已经没有值为空的列了。


## 二、去重


调用去重函数pd.drop\_duplicates()  
 ![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/75943e8978ea41308e6e418082cd82eb~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=fHJBX6aoftoGJBZvMsEek%2FHiqx4%3D)  
 应用:  
 首先创建一个DataFrame  
 (通过传递可以转换为类似系列的对象的字典来创建DataFrame)



import pandas as pd import numpy as np dates = pd.date_range('20170101', periods=4) datas = pd.DataFrame({ 'A' : range(1,5), 'B' : dates, #以年月日的方式创建一列数据 'C' : pd.Series(range(6,10),index=list(range(4)),dtype='float32'), #以序列的形式创建一列数据 'D' : pd.Categorical(['test','train','test','train']), }) print(datas)


![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/037ca73e71c84ea8a8c6e8b83d94070c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=T7NYKvr5MKAaT0w%2BAGgt7ipuZ8I%3D)  
 可以看到在D列有重复的数据test和train  
 先试试对某一列去重(这里是D列)



对某一列去重

datas.drop_duplicates(['D'])


结果  
 ![在这里插入图片描述](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/a685a2ecae264d8faec311754dba03bd~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771856369&x-signature=wV5rPQzA7TkLQKiDqtVZ0dZwEYo%3D)  
 有时我们所得到的数据不只是一列重复还可能是多列,再试试对多列去重。



对多列一起去重

datas.drop_duplicates(['A','B','C','D']) # 我们可以看到没有变化因为没有完全一样的一行

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取