京公网安备 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
在Excel数据分析中,数据透视表是汇总、整理海量数据的高效工具,而公式则是实现数据二次计算、逻辑判断的核心功能。实际操作中 ...
2026-04-30Excel透视图是数据分析中不可或缺的工具,它能将透视表中的数据快速可视化,帮助我们直观捕捉数据规律、呈现分析结果。但在实际 ...
2026-04-30 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-04-30在中介效应分析中,人口统计学变量(如年龄、性别、学历、收入、职业等)是常见的控制变量或调节变量,其处理方式直接影响分析结 ...
2026-04-29在SQL数据库实操中,日期数据的存储与显示是高频需求,而“数字日期”(如20240520、20241231、45321)是很多开发者、数据分析师 ...
2026-04-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-04-29在手游行业竞争日趋白热化的当下,“流量为王”早已升级为“留存为王”,而付费用户留存率更是衡量一款手游盈利能力、运营质量的 ...
2026-04-28在日常MySQL数据库运维与开发中,经常会遇到“同一台服务器上,两个不同数据库(以下简称“源库”“目标库”)的表数据需要保持 ...
2026-04-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-04-28箱线图(Box Plot)作为一种经典的数据可视化工具,广泛应用于统计学、数据分析、科研实证等领域,核心价值在于直观呈现数据的集 ...
2026-04-27实证分析是社会科学、自然科学、经济管理等领域开展研究的核心范式,其核心逻辑是通过对多维度数据的收集、分析与解读,揭示变量 ...
2026-04-27 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-04-27在大数据技术飞速迭代、数字营销竞争日趋激烈的今天,“精准触达、高效转化、成本可控”已成为企业营销的核心诉求。传统广告投放 ...
2026-04-24在游戏行业竞争白热化的当下,用户流失已成为制约游戏生命周期、影响营收增长的核心痛点。据行业报告显示,2024年移动游戏平均次 ...
2026-04-24 很多业务负责人开会常说“我们要数据驱动”,最后却变成“看哪张报表数据多就用哪个”,往往因为缺乏一套结构性的方法去搭建 ...
2026-04-24在Power BI数据可视化分析中,切片器是连接用户与数据的核心交互工具,其核心价值在于帮助使用者快速筛选目标数据、聚焦分析重点 ...
2026-04-23以数为据,以析促优——数据分析结果指导临床技术改进的实践路径 临床技术是医疗服务的核心载体,其水平直接决定患者诊疗效果、 ...
2026-04-23很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标是所有企业都需要的”“哪些指标是因行业而异的”“北极星指标和 ...
2026-04-23在数字化时代,客户每一次点击、浏览、下单、咨询等行为,都在传递其潜在需求与决策倾向——这些按时间顺序串联的行为轨迹,构成 ...
2026-04-22数据是数据分析、建模与业务决策的核心基石,而“数据清洗”作为数据预处理的核心环节,是打通数据从“原始杂乱”到“干净可用” ...
2026-04-22