pandas教程07 - pandas处理数据NaN缺失值

pandas教程07 - pandas处理数据NaN缺失值

pandas一站式学习->: pandas一站式学习,创建,索引使用,运算,pd可视化柱状图等,csv,hdf5,json格式数据读取存储,NaN值处理,数据离散化,数据合并,交叉表与透视表


python一站式学习->: python一站式学习,python基础,数据类型,numpy,pandas,机器学习,NLP自然语言处理,deepseek大预言模型,Tensorflow,CV视觉


准备数据

import pandas as pd
# 准备的数据有年龄缺失,实际工作中,数据量巨大,就需要后续得处理
p1 = pd.DataFrame([{"name":"张三","age":12,"sex":"男"},
					{"name":"李四","sex":"男"},
					{"name":"王五","age":17,"sex":"女"},
					{"name":"老刘","age":16}])

在这里插入图片描述

isnull()/ notnull() 判断是否有缺失值

方法一:使用numpy all()、any()判断

import numpy as np

# 缺失值位置数据为True,其他为False
new_p = p1.isnull() 
# p1.notnull() 结果相反而已,缺失值位置数据为False,其他为True

# 所有为true才为true
f1 = np.all(p1.isnull())
print(f1)  
# 结果 false

# 全都为false才返回false
f2 =np.any(p1.isnull())
print(f2)
# 结果 True

方法二:使用pandas的any,all判断,可以判断每一列NaN情况

# isnull() 缺失值位置数据为True,其他为False
# notnull() 结果相反而已,缺失值位置数据为False,其他为True
# any() # 有一个是True,就返回True
# all() 所有为True,才返回True
new_p = p1.isnull().any() # 有一个是True,就返回True

在这里插入图片描述

new_p = p1.isnull().any()

在这里插入图片描述

缺失值处理

  • 方法一: 删除缺失值的对象
new_p1 = p1.dropna(
    axis=0,          # 操作方向:0 或 'index' 删除行,1 或 'columns' 删除列
    how='any',       # 触发删除的条件:'any'(存在 NaN 就删除)或 'all'(全部为 NaN 才删除)
    inplace=False    # 默认False返回新对象,True直接修改原对象
)
new_p1

在这里插入图片描述

  • 方法二: fillna() 缺失值替换
    使用平均值,或者中位数等替换
# pd.fillna(num) 替换
# mean()求平均值
# inplace=False    # 默认False返回新对象,True直接修改原对象(后续版本可能会删除该操作,推荐使用赋值方式)
p1["age"] = p1["age"].fillna(p1["age"].mean())
p1

在这里插入图片描述

假如缺失值不是NaN,而是一个默认标记

  • 处理步骤,先把缺失值替换成NaN,然后再根据NaN,进行后续操作

准备数据

import pandas as pd

p2 = pd.DataFrame([{"name":"张三","age":12,"sex":"男"},
					{"name":"李四","age":"?","sex":"男"},
					{"name":"王五","age":17,"sex":"女"},
					{"name":"老刘","age":16,"sex":"?"}])

在这里插入图片描述

替换自定义缺失值成为NaN

替换完后,按照前面,处理NaN的方式处理缺失值

import pandas as pd
import numpy as np

# to_replace要替换的值,value=替换成为的值
p1.replace(to_replace="?",value=np.nan)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值