数据分析入门——pandas之DataFrame数据丢失
一、数据丢失分类
1)nd中分为两种:None和np.nan(NaN)
其中,None是python中的对象,是一个object;而nan是一个float类型
两种不同的类型,运算速度也是不同的
2)pandas中两种都视作NaN(np.nan)
二、数据丢失处理
通过控制columns来创建有NaN的数据:
通过loc切片赋值来处理部分NaN数据:
1.与空相关的方法
检测:
isnull()和notnull()
如何检测df中哪些行中存在空行?
df.isnull().any(axis=1): True行中存在空 False行中不存在空(any的字面意思就是该行有一个为True即为True)
df.notnull().all(axis=1): False行中存在空 True行中不存在空(all与上面any类似,也就是逻辑里面的与操作了)
过滤:
dropna() --可以选择过滤行还是列(默认为行,也就是axis = 0,有空行则删除)
可以通过how参数来控制,是any还是all(存在就剔除还是全部才剔除)
dropna(how = 'all')
这里重复一下,轴的概念:
根据stackoverflow答主解释,axis=0指的是逐行,轴是Index;axis=1指的是逐列,轴是columns。(index (0), columns (1))
根据结果:
mean(axis=0)计算的是每一列平均值,
mean(axis=1)计算的是每一行平均值。(轴是columns)
填充:(可以填充Series/DataFrame)
fillna(value = xx)
对所有的na都进行填充
可以通过method选择向后填充(bfill,使用后一个的值进行填充,文档有详细参数解释),或者向前(ffill)填充
注意,此处是返回一个填充后的副本,本身并没有改变,可以通过inplace参数来控制