京公网安备 11010802034615号
经营许可证编号:京B2-20210330
在实际的数据清洗过程中,我们经常会遇到数据内容丢失的情况,这些丢失的数据内容就是缺失值。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。
机械原因,也就是由于例如,数据存储失败,存储器损坏,机械故障等原因,某段时间数据未能收集,或保存的失败,从而造成的数据缺失。人为原因,主要是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失。比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据。不管是哪种原因造成的,我们都必须对缺失数据进行妥善处理,才能更好的保证最终数据分析结果的正确性和准确性。下面小编就介绍几种缺失值处理常用的方法,希望对大家有所帮助。
1.删除
如果缺失值的个数只占整体很小一部分的情况下,可以删除缺失值。
这种方法是将存在缺失值的数据条目(包括:对象,元组,记录)进行删除。简单便捷,在对象有多个属性缺失值、被删除的含缺失值的对象的数据量只占信息表中的数据量一小部分的情况下是非常有效的。
python代码
import numpy as np import pandas as pd data = pd.read_csv('data.csv',encoding='GBK') # 将空值形式的缺失值转换成可识别的类型 data = data.replace(' ', np.NaN) print(data.columns)#['id', 'label', 'a', 'b', 'c', 'd'] #将每列中缺失值的个数统计出来 null_all = data.isnull().sum() #id 0 #label 0 #a 7 #b 3 #c 3 #d 8 #查看a列有缺失值的数据 a_null = data[pd.isnull(data['a'])] #a列缺失占比 a_ratio = len(data[pd.isnull(data['a'])])/len(data) #0.0007 #丢弃缺失值,将存在缺失值的行丢失 new_drop = data.dropna(axis=0) print(new_drop.shape)#(9981,6) #丢弃某几列有缺失值的行 new_drop2 = data.dropna(axis=0, subset=['a','b']) print(new_drop2.shape)#(9990,6)
2.均值、众数、中位数填充
均值填充:对每一列的缺失值,填充当列的均值。
中位数填充:对每一列的缺失值,填充当列的中位数。
众数填充:对每一列的缺失值,填充当列的众数。
python代码
data['a'] = data['a'].fillna(data['a'].means()) #中位数填充 data['a'] = data['a'].fillna(data['a'].median()) #众数填充 data['a'] = data['a'].fillna(stats.mode(data['a'])[0][0]) #用前一个数据进行填充 data['a'] = data['a'].fillna(method='pad') #用后一个数据进行填充 data['a'] = data['a'].fillna(method='bfill')
3.填充上下条的数据
对每一条数据的缺失值,填充其上下条数据的值。
python代码
train_data.fillna(method='pad', inplace=True) # 填充前一条数据的值,但是前一条也不一定有值 train_data.fillna(0, inplace=True) train_data.fillna(method='bfill', inplace=True) # 填充后一条数据的值,但是后一条也不一定有值 train_data.fillna(0, inplace=True)
4.填充插值得到的数据
interpolate()插值法,计算的是缺失值前一个值和后一个值的平均数。
python代码
data['a'] = data['a'].interpolate()
5.KNN填充
填充近邻的数据,先利用KNN计算临近的k个数据,然后填充他们的均值。
from fancyimpute import KNN fill_knn = KNN(k=3).fit_transform(data) data = pd.DataFrame(fill_knn) print(data.head()) #out 0 1 2 3 4 5 0 111.0 0.0 2.0 360.0 4.000000 1.0 1 112.0 1.0 9.0 1080.0 3.000000 1.0 2 113.0 1.0 9.0 1080.0 2.000000 1.0 3 114.0 0.0 1.0 360.0 *3.862873 *1.0 4 115.0 0.0 1.0 270.0 5.000000 1.0
6.随机森林填充
from sklearn.ensemble import RandomForestRegressor #提取已有的数据特征 process_df = data.ix[:, [1, 2, 3, 4, 5]] # 分成已知该特征和未知该特征两部分 known = process_df[process_df.c.notnull()].as_matrix() uknown = process_df[process_df.c.isnull()].as_matrix() # X为特征属性值 X = known[:, 1:3] # print(X[0:10]) # Y为结果标签 y = known[:, 0] print(y) # 训练模型 rf = RandomForestRegressor(random_state=0, n_estimators=200, max_depth=3, n_jobs=-1) rf.fit(X, y) # 预测缺失值 predicted = rf.predict(uknown[:, 1:3]) print(predicted) #将预测值填补原缺失值 data.loc[(data.c.isnull()), 'c'] = predicted print(data[0:10])以上就是小编给大家分享的python实现缺失值处理的几种方法,希望对大家缺失值的处理有所帮助。如果,大家在缺失值处理方面还有哪些好的方法,欢迎随时和小编交流。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在机器学习建模、数据预处理、抽样划分、模型初始化训练的全流程中,随机种子是控制实验随机性、保证结果可复现、提升模型稳定性 ...
2026-08-04Python作为面向对象的主流编程语言,核心编程体系由变量、方法、类三大基础要素构成。三者层层递进、相互协作,支撑起所有基础代 ...
2026-08-04 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-08-04为什么学习数据分析? 当下,我们已然步入数据要素价值全面释放的智能时代。数据不再只是零散的数字记录,更是驱动新质生产力运 ...
2026-08-03CDA等级认证证书有效期为三年,三年进行一次年审,主要考察CDA持证人的职业发展情况;学历、工作单位及职业变更情况;继续教育 ...
2026-08-03【核心关键词】金融、岗位、企业、算法、知识、专业、理论、课程、软件、数据分析、业务类型、应用场景、经营管理、大型企业、 ...
2026-08-03在日常数据分析、业务报表复盘、业绩预测工作中,平均增长率是衡量数据长期变化趋势的核心指标,广泛用于营收增长、用户增长、销 ...
2026-08-03很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会算平 ...
2026-08-03在数据指标体系搭建工作中,从业者常困惑于指标搭建的核心逻辑:究竟是依托一线零散数据自下而上汇总指标,还是基于战略目标自上 ...
2026-07-31在数据分析、问卷研究、实验复盘、业务建模的工作中,大多数人最关注的是“用什么统计方法”:是做T检验、方差分析、卡方检验, ...
2026-07-31 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-07-31在问卷调研的数据分析流程中,“先检验信效度,再开展进阶统计分析”是通用的规范逻辑。很多从业者会听到“问卷效度高,后续可以 ...
2026-07-30【核心关键词】大数据、统计学、专业、毕业生、论文、课程、计算机、建模、知识、数据分析、机器学习、数据科学、大数据技术、 ...
2026-07-30 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-07-30在业务数据分析中,按天拆分统计夜间时段的数据是高频需求——比如电商夜间订单监测、平台夜间用户活跃度分析、运维系统夜间异常 ...
2026-07-29在机器学习建模与特征工程实践中,判断不同特征对模型预测效果的贡献度,是特征筛选、模型解释、业务归因的核心环节。特征置换重 ...
2026-07-29 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-07-29【核心关键词】岗位、数字化、经验、课程、方法论、决策、企业、大方向、数据分析、销售管理、理论知识、思维方式、分析销售、 ...
2026-07-28在问卷调研、用户分群、效果对比等业务数据分析中,分类变量的关联性与差异性验证是高频需求。卡方检验作为针对离散分类数据的经 ...
2026-07-28 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-07-28