03 -2 numpy与pandas中isnull()、notnull()、dropna()、fillna()处理丢失数据的理解与实例

本文介绍了如何在numpy和pandas中处理缺失值,包括None和np.nan的区别,以及如何使用isnull、notnull、dropna和fillna进行数据清理。在pandas中,None和np.nan被视为相同并转换为np.nan。文章通过实例展示了如何过滤、填充缺失值,并讨论了不同参数如axis、method和limit的用法。
摘要由CSDN通过智能技术生成

引入三剑客

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

处理丢失数据

1.有两种丢失数据:

  • None: Python自带的数据类型 不能参与到任何计算中
  • np.nan(NaN): float类型 能参与计算,但结果总是NaN
np.nan + 9            结果为:nan 

2. np.nan(NaN)

数组直接运算会得到nan,但可以使用np.nan*()函数来计算nan,此时视nan为0。

ndarr1 = np.array([1,2,3,np.nan])
ndarr1
np.sum(ndarr1)
结果为:
nan
np.nansum(ndarr1) # nan*()遇到nan会把nan当作0来处理
结果为:
6.0

Series和DataForm可以直接处理nan

s1 = Series([1,2,3,np.nan])
s1.sum() #Series 直接可以处理nan的情况
结果为:6.0
df1 = DataFrame([1,2,3,np.nan])
df1.sum() #DataFrame 直接可以处理nan的情况
结果为:
0    6.0
dtype: float64

3. pandas中的None与NaN

1) pandas中None与np.nan都视作np.nan

用randint创建一个5*5的DataFrame作为例子

Series 和 DataForm 如果遇到None 就会把 None 转换成 numpy.nan

df1 = DataFrame(data=np.random.randint(0,20,size=(5,5)),columns=list("abcde"))
df1
a b c d e
0 18 18 4 10 6
1 6 12 8 8 4
2 5 15 18 2 2
3 2 18 10 16 14
4 14 13 2 10 14

使用DataFrame行索引与列索引修改一下DataFrame数据(弄出来一些None和NaN)

df1["b"][1] = None
df1["c"].iloc[2] = None
df1.iloc[2].loc["d"] = np.nan # 自己显式地去设置nan不太好 大家平时不要这么做
df1
a b c d e
0 18 18.0 4.0 10 6
1 6 NaN 8.0 8 4
2 5 15.0 NaN 2 2
3 2 18.0 10.0 16 14
4 14 13.0 2.0 10 14

2) pandas中None与np.nan的操作

  • isnull()
  • notnull()
  • dropna(): 过滤丢失数据
  • fillna(): 填充丢失数据

(1)判断函数

  • isnull()
  • notnull()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值