加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Python/Excel/SPSS/SQL数据处理方法比较之4 - 空值处理

发布时间:2022-12-08 13:33:44 所属栏目:MsSql教程 来源:转载
导读: 处理完重复值后,我们开始处理空值。
首先依然是定位空值,然后可以选择删除整行,但更多的时候我们选择使用某个值来填充。
Python
过滤空值
如果数据量较小,可直接使用isnull()函数逐一判

处理完重复值后,我们开始处理空值。

首先依然是定位空值,然后可以选择删除整行,但更多的时候我们选择使用某个值来填充。

Python

过滤空值

如果数据量较小,可直接使用isnull()函数逐一判断每个行是否有空值:

df.isnull()

或者使用any函数返回是否存在空值:

any(df.isnull())

但是如果数据量较大,则需要使用高级技巧,即apply()函数和匿名函数,对每一列x的空值进行计数:

df.apply(lambda x:np.sum(x.isnull()))

2. 删除空值

如果空值行比例较小(5%以下),则可以使用dropna()函数直接删除存在空值的行:

df.dropna()

可以传入参数how='all'来只删除全是空值的行。

可传入参数axis=1来删除空值较多的列(如85%以上空值):

df.drop(['列名'],axis=1)

3. 填充空值

如果空值行比例不小,则不能进行删除,应该使用fillna()函数进行补全,如简单填充数字0:

df['数值列'].fillna(value=0)

当然,更常见的是填充均值,众数和中位数,此时可以向value参数传入一个字典:

df.fillna(value={'性别':df.性别.mode()[0],'年龄':df.年龄.mean(),'收入':df.收入.median()})

此处给性别列空值填充众数(注意,使用mode()将得到每个值的频数,从高到低排列,取其中第一位的就是众数),给年龄列填充均值,给收入列填充中位数。

另外,使用这三个统计量是为了让空值填充的干扰降低。不过如果无所谓某一列空值的干扰,单纯只是想让空值消失,那么也可以这么干:

df.fillna(method='ffill')
df.fillna(method='bfill')

传入ffill或bfill给method参数,每个缺失值分别使用上一个值或下一个值填充自己。

最后,以上返回的结果都是视图,如果需要原数据产生变化mssql 空值,可传入inplace=True.

Excel

1.过滤空值

首先还是要使用ctrl+shift+space来选定你要过滤的区域,然后:开始-编辑-查找与选择-定位条件-选择【空值】

将会自动定位出所有的空值。

2.删除空值

在已经使用以上方法过滤出空值后,(不要选中)右键点击第一个空值单元格,选择删除-整行,即可。

3. 填充空值

在已经使用以上方法过滤出空值后,选择第一个空值单元格,填充你要的值,然后使用Ctrl+Enter,即可填充到所有空值中去。

SPSS

1.过滤空值

分析-缺失值分析-指定匹配变量-模式-显示:具有缺失值的个案-继续-确定。之后在输出窗口中会显示有缺失值的个案。

2.填充空值

转换-替换缺失值-选择要填充的变量-选择填充方法(默认序列均值)-确定。会有一个新变量产生,里面是已经填充完的变量。

SQL

1.过滤空值

select * from 表名
where 字段名 is null;

2.替换空值

update 表名
set 字段名=
case when 字段名 is null then 替换值
else 字段名
end;

3.删除空值

delete from 表名
where 字段名 is null;

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!