Pandas 缺失号

  1. 三种缺失符号及其对比【pandas 1.0之前】

三种记号(pandas 1.0) np.nan None np.NaT【时间序列用】
类型 float64 Nonetype

pandas._libs.tslibs.nattype.NaTType

equal的时候是否会包括在内 不包括 包括 不包括
某列出现该值的类型 1.数值型,布尔型统一转换为float64
2.字符型统一转换为O(object类型) 1.None传入数值型自动变换为np.nan
None传入时间型变量自动变换为np.NaT
2.None传入布尔类型,不改变原布尔列表
3.None传入字符型为NoneType
时间型变量类型不改变

  1. 统一三种缺失符号[pandas 1.0之后]

统一之前必须要做的操作:
—>将数据转换为Nullable类型
(数值类型首字母大写,如int64——Int64)
(布尔型:bool——boolean)
(字符型,object——string)

转换方法1:全表转换用covert_dtypes 转换
转换方法2:单列类型直接用astype转换

2-1. 做了哪些统一?

统一缺失值类型:pandas._libs.missing.NAType
统一缺失记号【dataframe表格中的显示】:< NA >
给单元格赋值np.nan 或 None 或 np.NaT统一转换为pd.NA
赋值给Nullable类型不改变其类型
使用str方法之后string(Nullable类型)不会因为缺失值改变类型,而原来的object会因为缺失值改变类型

2-2. 新NA的特性

2-2-1. 布尔运算

不依靠pd.NA的布尔表达返回真假:
(False & pd.NA ) ( True | pd.NA)
依靠pd.NA的返回< NA >

2-2-2. 算术运算

特殊情况

    pd.NA ** 0=1
    1 ** pd.NA=1

其他情况与pd.NA运算都返回< NA >

2-3. 缺失列/表含有空值的运算方法

法则:加法当0,乘法当1,累积运算忽略

#tip# pandas 1.0 之前的空值表示之前会改变数值类型

2-4. 分组的依据列含有空值,直接忽略空值分组

  1. 判断是否缺失或者非缺失

    isna( ) ---->缺失:True 【列的是否缺失的布尔列表或者表的是否缺失的布尔表 】
    notna() ----->不缺失:True 【列的是否缺失的布尔列表或者表的是否缺失的布尔表 】

    1.挑选整行都不缺失:
    df[ df.notna( ).all(1) ]
    2.挑选整行有一列缺失:
    df[ df.isna( ).any(1) ]

  2. 填充方法

4-1. 自定义填充

fillna(value,method)
##
	value: 接受标量,字典,Series,DataFrame
	method:
		'ffill'--用最接近的前面的未缺失值填充
		'bfill'--用最接近的后面的未缺失值填充
 
##
fillna满足对齐特性,若传入的字典/Series/DataFrame不足以覆盖所有列/所有单元格,那对齐首列只进行覆盖部分填充

4-2. 删除填充项

dropna(axis,how='any',subset)
##
	axis: [此处axis不进行运算,可理解对每行/每列操作]
		axis=0表示删除含有缺失值的行
		axis=1表示删除含有缺失值的列
	
	how:
		'any'--包含一个缺失值,该行/列进行删除
		'all'--整行/列都包含缺失值才删除
	
	subset:
	axis=0 的时候用,表示删除的查看是否有缺失值列的范围
	
 
##
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值