pandas数据缺失处理
一 前言
数据分析中对数据的清洗是个比较重要的工作,如果处理不当会造成数据分析错误,故学习好相关数据清洗知识很有必要。知识追寻者忙于学习其它知识,有点懈怠了python, 努力补救中。
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 数据缺失处理
数据缺失处理也就是对NaN的处理,通常的做法就是省略或者替换;
2.1 空值判定
调用isnull()
方法进行空值判定,返回布尔值;
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
ser = pd.Series(['111','222',np.NaN])
# 空判定
print(ser.isnull())
输出
0 False
1 False
2 True
dtype: bool
2.2丢弃NaN
对于有些数据存在NaN,一般进行数据分析时都是不需要的数据,故会省略掉;使用 ser.dropna()
方法可以略过所有的NaN数据
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
ser = pd.Series(['111','222',np.NaN])
# 过滤掉所有NAN
print(ser.dropna())
输出
0 111
1 222
dtype: object
如果想删除整列全为NaN的可以指定参数how= 'all'
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
data = pd.DataFrame([[2.5, 5, 3], [1, np.NaN, np.NaN], [np.NaN, np.NaN, np.NaN]])
# 过滤掉都是NaN的列
print(data.dropna(how='all'))
输出
0 1 2
0 2.5 5.0 3.0
1 1.0 NaN NaN
可以指定按列丢弃 axis = 1
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
data = pd.DataFrame([[2.5, 5, 3], [1, np.NaN, np.NaN], [np.NaN, np.NaN, np.NaN]])
# 按列丢弃
print(data.dropna(axis=1,how='all'))
输出
0 1 2
0 2.5 5.0 3.0
1 1.0 NaN NaN
2 NaN NaN NaN
2.3 数据填充
另一种手段对NaN的处理可以设置为默认值,比如 数值0;
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
data = pd.DataFrame([[2.5, 5, 3], [1, np.NaN, np.NaN], [np.NaN, np.NaN, np.NaN]])
# 填充
print(data.fillna(0))
输出
0 1 2
0 2.5 5.0 3.0
1 1.0 0.0 0.0
2 0.0 0.0 0.0
对每个列设置默认值替换NaN可以使用字典
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
data = pd.DataFrame([[2.5, 5, 3], [1, np.NaN, np.NaN], [np.NaN, np.NaN, np.NaN]])
dic = {0:1, 1:2, 2:3}
# 填充
print(data.fillna(dic))
输出
0 1 2
0 2.5 5.0 3.0
1 1.0 2.0 3.0
2 1.0 2.0 3.0
再复习一下填充,之前文章有到过;此时会对每列最后一个值进行填充NaN,并且使用limit 限定填充次数
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
data = pd.DataFrame([[2.5, 5, 3], [1, np.NaN, np.NaN], [np.NaN, np.NaN, np.NaN]])
# 填充
print(data.fillna(method='ffill', limit=1))
输出
0 1 2
0 2.5 5.0 3.0
1 1.0 5.0 3.0
2 1.0 NaN NaN
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix