11.13学习日志——nan数据删除和填充

昨天学校发通知又要线上教学了,虽然我已经没有课了,但内心还是雀跃的,因为原本定在今天的泵与泵站期末考试推迟了,前几天课设掏空了我的身体和精神,所以复习的一般般,延迟考试正好给我一个小小的缓冲(虽然明天又开始下一门课设)。

今天回顾的是如何删除和填充dataframe里的NAN项

删除DataFrame的NAN项

首先来创建一个随机的列表

import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(4,5),index = [1,2,3,4],columns = [1,2,3,4,5])
print(df1)

得到:

          1         2         3         4         5
1 -1.546927 -0.547232  0.555072 -1.098828  0.905964
2 -0.450134 -0.092281 -0.649352 -0.502235  2.334838
3  0.563237 -0.707042 -0.765892 -1.220365  0.564507
4  0.245335 -0.421005 -0.538063 -1.385316 -1.114412

然后创建NAN项

df1.iloc[:2,:2]= None
print(df1)

得到:

          1         2         3         4         5
1       NaN       NaN  0.555072 -1.098828  0.905964
2       NaN       NaN -0.649352 -0.502235  2.334838
3  0.563237 -0.707042 -0.765892 -1.220365  0.564507
4  0.245335 -0.421005 -0.538063 -1.385316 -1.114412

删除带有NAN的行

print(df1.dropna())

得到 :

          1         2         3         4         5
3  0.563237 -0.707042 -0.765892 -1.220365  0.564507
4  0.245335 -0.421005 -0.538063 -1.385316 -1.114412

填充DataFrame的NAN项 

还是利用df1,利用fillna()函数奖所有的NAN项填充为0

print(df1.fillna(0))

得到: 

          1         2         3         4         5
1  0.000000  0.000000 -2.455083  0.560872  0.370304
2  0.000000  0.000000  1.249256 -0.554457  0.171125
3 -2.813881  0.241119 -0.009247  0.405355  0.002170
4 -0.285539  1.417155 -0.414919 -0.384334 -0.033280 

也可以利用fillna()分别填充各列

print(df1.fillna({1:"haha",2:"hihi"}))

得到: 

          1         2         3         4         5
1      haha      hihi -0.812435 -0.531604 -0.838016
2      haha      hihi -1.738053  0.693169 -1.034070
3 -1.527261  0.796225 -0.814537  1.097067  0.848974
4 -0.170888 -0.196427 -2.186483  0.337456 -0.535711 

也可以根据数据要求进行平均值填充,即填充值为本列其他数据的平均值,代码如下:

print(df1.fillna({1:df1[1].mean(),2:df1[3].mean()}))

得到: 

          1         2         3         4         5
1 -0.193138 -0.155482 -0.507152  0.426580  0.423255
2 -0.193138 -0.155482 -0.079421 -1.195980 -1.325161
3  0.592448 -0.050052 -1.189977  0.064700 -1.378064
4 -0.978724 -1.141304  1.154622 -0.784549  0.564463

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值