精华内容
下载资源
问答
  • python缺失值填充

    千次阅读 多人点赞 2019-04-26 15:50:12
    1. 用固定值填充 对于特征值缺失的一种常见的方法就是可以用固定值来填充。 data['分数'] = data['分数'].fillna('-1') 2. 用均值填充 对于数值型的特征,其缺失值也可以用未缺失数据的均值填充。 data['分数...

    1. 用固定值填充

    对于特征值缺失的一种常见的方法就是可以用固定值来填充。

    data['分数'] = data['分数'].fillna('-1')

    2. 用均值填充

    对于数值型的特征,其缺失值也可以用未缺失数据的均值填充。

    data['分数'] = data['分数'].fillna(data['分数'].mean()))

    3. 用众数填充

    与均值类似,可以用未缺失数据的众数来填充缺失值。

    data['分数'] = data['分数'].fillna(data['分数'].mode()))

    4. 用上下数据进行填充

    用前一个数据进行填充

    data['分数'] = data['分数'].fillna(method='pad')

    用后一个数据进行填充

    data['分数'] = data['分数'].fillna(method='bfill')

    5. 用插值法填充

    data['分数'] = data['分数'].interpolate()

    6. 用KNN进行填充

    from fancyimpute import BiScaler, KNN, NuclearNormMinimization, SoftImpute
    dataset = KNN(k=3).complete(dataset)

    如果对你有帮助,请点下赞,予人玫瑰手有余香! 

    展开全文
  • fillna(value)参数:value说明:用于填充缺失值的标量值或字典对象#通过常数调用fillna书写方式:df.fillna(0) #用0替换缺失值#通过字典调用fillna书写方式:df.fillna({1:0.5,3:-1})fillna(value,inplace=True...

    对于大多数情况而言,fillna方法是最主要的函数。通过一个常数调用fillna就会将缺失值替换为那个常数值。

    fillna(value)

    参数:value

    说明:用于填充缺失值的标量值或字典对象

    #通过常数调用fillna

    书写方式:df.fillna(0) #用0替换缺失值

    #通过字典调用fillna

    书写方式:df.fillna({1:0.5,3:-1})

    fillna(value,inplace=True)

    参数:inplace

    说明:修改调用者对象而不产生副本

    #总是返回被填充对象的引用

    书写方式:df.fillna(0,inplace=True)

    fillna(method=ffill)

    参数:method

    说明:插值方式。如果函数调用时未指定其他参数的话,默认为“ffill”

    对reindex有效的那些插值方法也可用于fillna:

    In [23]: from numpy import nan as NA

    In [21]: df=DataFrame(np.random.randn(6,3))

    In [24]: df.ix[2:,1]=NA;df.ix[4:,2]=NA

    In [25]: df

    Out[25]:

    0 1 2

    0 -0.863925 1.005127 -0.529901

    1 0.701671 -0.501728 -0.617387

    2 -0.951060 NaN -0.263626

    3 0.810230 NaN -0.277401

    4 -0.403899 NaN NaN

    5 -0.081091 NaN NaN

    In [26]: df.fillna(method='ffill')

    Out[26]:

    0 1 2

    0 -0.863925 1.005127 -0.529901

    1 0.701671 -0.501728 -0.617387

    2 -0.951060 -0.501728 -0.263626

    3 0.810230 -0.501728 -0.277401

    4 -0.403899 -0.501728 -0.277401

    5 -0.081091 -0.501728 -0.277401

    fillna(limit=2)

    参数:limit

    说明:(对于前向和后向填充)可以连续填充的最大数量

    In [27]: df.fillna(method='ffill',limit=2)

    Out[27]:

    0 1 2

    0 -0.863925 1.005127 -0.529901

    1 0.701671 -0.501728 -0.617387

    2 -0.951060 -0.501728 -0.263626

    3 0.810230 -0.501728 -0.277401

    4 -0.403899 NaN -0.277401

    5 -0.081091 NaN -0.277401

    fillna(data.mean())

    只要稍微动动脑子,就可以利用fillna实现许多别的功能。比如说,可以传入Series的平均值或中位数:

    In [28]: data=Series([1,NA,3.5,NA,7])

    In [29]: data.fillna(data.mean())

    Out[29]:

    0 1.000000

    1 3.833333

    2 3.500000

    3 3.833333

    4 7.000000

    dtype: float64

    axis

    参数:axis

    说明:待填充的值,默认axis=0

    「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

    「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

    展开全文
  • python缺失值填充的几种方法

    万次阅读 多人点赞 2019-06-14 10:37:41
    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等等。R语言包中在此方面比较全面,python稍差。 python目前已有的两种常见的包,第一个是impyute,第二个是fancyimpute。比如...

    缺失值的产生机制

    缺失值可分为两类:一类是这个值实际存在但是没有被观测到,例如客户的性别;另一类是这个值实际就不存在,例如,在调查顾客购买的洗发液品牌时,如果某位顾客根本没有购买任何洗发液,那么这位顾客购买的洗发液品牌缺失。如何处理缺失值是一个很复杂的课题,有兴趣的读者可以参阅这方面的专著。

    缺失值的产生有三种机制:

    1.完全随机缺失(MissingCompletelyatRandom)

    某个变量是否缺失与它自身的值无关,也与其他任何变量的值无关。例如,由于测量设备出故障导致某些值缺失。

    2.随机缺失(MissingatRandom)

    在控制了其他变量已观测到的值后,某个变量是否缺失与它自身的值无关。例如,人们是否透露收入可能与性别、教育程度、职业等因素有关系。

    如果这些因素都观测到了,而且尽管收入缺失的比例在不同性别、教育程度、职业的人群之间有差异,但是在每一类人群内收入是否缺失与收入本身的值无关,那么收入就是随机缺失的。

    3.非随机缺失(MissingNotatRandom)

    即使控制了其他变量已观测到的值,某个变量是否缺失仍然与它自身的值有关。例如,在控制了性别、教育程度、职业等已观测因素之后,如果收入是否缺失还依赖于收入本身的值,那么收入就是非随机缺失的。

    缺失值的处理

    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等等。R语言包中在此方面比较全面,python稍差。
    python目前已有的两种常见的包,第一个是impyute,第二个是fancyimpute。比如fancyimpute中集成了很多方式,包括均值、众数、频数填充,KNN填充、MCMC填充等。

    一、直接填充

    0值/-1值填充

    data = pd.read_csv(path,encoding='gbk')
    data = data.fillna(-1)
    

    单变量填补

    用单一变量的均值/中位数/众数/二分之一最小值/零值进行补值,这种方法会导致数据分布的偏移,方差偏小,PCA上会看到一条补值导致的直线等问题。
    这种方法仅在缺失数据集满足正态分布的情况下可以达到比较好的效果,而在现实应用中,往往连对数据具一定的先验知识都很难做到,而现实数据往往又并不是简单的正态分布,因此这一方法不可避免的将带来数据的各种统计参数的扭曲。

    二、插值填充

    所谓的插值法就是通过两点(x0,y0),(x1,y1)估计中间点的值,假设y=f(x)是一条直线,通过已知的两点来计算函数f(x),然后只要知道x就能求出y,以此方法来估计缺失值。当然我们也可以假设f(x)不是直线,而是其他函数。

    data = pd.read_csv(path,encoding='gbk')
    for f in data:  # 插值法填充
        data[f] = data[f].interpolate()
        data.dropna(inplace=True)
    

    interpolate函数默认采用线性插值,即假设函数是直线形式,缺失值用前一个值和后一个值的平均数填充。
    还可以根据数字来进行插值,用到参数method=‘values’,此时索引的数值实际上就是用于估计y的x值。
    如果index是时间,我们还可以用method=time来插值。不过当dataframe是多重索引(multiIndex)时,只能用线性插值。
    此外还可以通过参数设定采用多项式插值填充等方式。
    参考:
    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.interpolate.html
    https://jingyan.baidu.com/article/a501d80cf7c9c3ec620f5e5a.html

    三、KNN预测缺失值进行填充

    KNN预测的步骤是选择出其他不存在缺失值的列,同时去除掉需要预测缺失值的列存在缺失值的行,然后计算距离。
    如果缺失值是离散的,使用K近邻分类器,投票选出K个邻居中最多的类别进行填补;如果为连续变量,则用K近邻回归器,拿K个邻居中该变量的平均值填补。

    这里使用的是fancyimpute库,安装的时候需要visual C++环境。

    from fancyimpute import KNN
    
    data = pd.read_csv(path,encoding='gbk')
    data = pd.DataFrame(KNN(k=6).fit_transform(data)) 
    data.columns = ['sex','age','label']  # fancyimpute填补缺失值时会自动删除列名
    

    注意fancyimpute的KNN填补会自动去除DataFrame数据的列名,所以如果后续操作对列名有要求,需要重新添加列名。

    四、Kmeans预测缺失值进行填充

    五、可视化

    见本人的另一篇博文

    参考网址:
    面对有大量缺失值的数据应该怎样处理比较合理? - 晔无殊的回答 - 知乎
    MetImp 1.2 (开源的的缺失值补值软件)
    缺失值处理方法综述
    缺失值的产生机制
    缺失值的处理(非常好)

    展开全文
  • 1、给定一个数据集...利用“全局常量”、“均值或者中位数”来填充缺失值。noise-data-1.txt:5.1 3.5 1.4 0.24.9 3 1.4 0.24.7 3.2 1.3 0.24.6 3.1 1.5 0.25 3.6 1.4 0.25.4 3.9 1.7 0.44.6 3.4 1.4 0.35 3.4 1...

    1、给定一个数据集noise-data-1.txt,该数据集中保护大量的缺失值(空格、不完整值等)。利用“全局常量”、“均值或者中位数”来填充缺失值。

    noise-data-1.txt:

    5.1 3.5 1.4 0.2

    4.9 3 1.4 0.2

    4.7 3.2 1.3 0.2

    4.6 3.1 1.5 0.2

    5 3.6 1.4 0.2

    5.4 3.9 1.7 0.4

    4.6 3.4 1.4 0.3

    5 3.4 1.5 0.2

    4.4 2.9 1.4 0.2

    4.9 -3.1 1.5 0.1

    5.4 3.7 1.5 0.2

    4.8 3.4 1.6 0.2

    4.8 3 -1.4 0.1

    4.3 3 1.1 0.1

    5.8 4 1.2 0.2

    5.7 4.4 1.5 0.4

    5.4 3.9 1.3 0.4

    5.1 3.5 1.4 0.3

    5.7 3.8 1.7 0.3

    5.1 3.8 -1.5 0.3

    5.4 3.4 1.7 0.2

    5.1 3.7 1.5 0.4

    4.6 3.6 1 0.2

    5.1 3.3 1.7 0.5

    4.8 3.4 1.9 0.2

    解题思路:首先读入数据,对数据进行处理,去掉空行,利用 “均值来填充缺失值,本题利用Python语言实现,代码如下:

    import numpy as np

    data = []

    my_list = []

    con=0

    noise_data = open('noise-data-1.txt')

    clean_data = open("clean_data3.txt", 'w')

    for line in noise_data.readlines():

    if len(line) == 0:

    break

    if line.count('\n') == len(line):

    continue

    dataline =line.strip().split('\t')

    my_list.append(dataline)

    con+=1

    for i in range(0,con):

    for j in range(0,len(my_list[i])):

    if my_list[i][j].count('.')==0:

    miss_row=[]

    for a in range(0,len(my_list[i])):

    if float(my_list[i][a])<0:

    miss_row.append(-float(my_list[i][a]))

    miss_row.append(float(my_list[i][a]))

    my_average=round(np.average(miss_row),1)

    my_list[i][j]=my_average

    else:

    if float(my_list[i][j])<0:

    my_list[i][j]=-float(my_list[i][j])

    my_list[i][j]=float(my_list[i][j])

    print my_list

    def file_write(filename,data_list):

    file1=open(filename,'w')

    for i in data_list:

    for j in i:

    if type(j)!=str:

    j=str(j)

    file1.write(j)

    file1.write(' ')

    file1.write('\n')

    file1.close()

    return file1

    filename='clean_data.txt'

    file_write(filename,my_list)

    运行结果如下:

    以上这篇python实现数据预处理之填充缺失值的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样:for column in list(df.columns[df.isnull().sum() > 0]):mean_val = df[column].mean()df[column]....
  • 今天分享的是在数据分析中处理缺失值的方法和python的实现。那为什么我们要对缺失值进行填充呢,想象你需要分析产品的销售和顾客数据,你注意到很多元组的属性否没有记录值,怎样才能为该属性天上缺失值呢?一般的...
  • python 特征缺失值填充

    千次阅读 2018-08-16 16:43:00
    python数据预处理之缺失值简单处理:https://blog.csdn.net/Amy_mm/article/details/79799629 该博客总结比较详细,感谢博主。   我们在进行模型训练时,不可避免的会遇到某些特征出现空值的情况,下面整理了几种...
  • 如下所示:python 设置import pandas as pdimport numpy as npdates = pd.date_range('20180101',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])print(df)A B C...
  • 今天分享的是在数据分析中处理缺失值的方法和python的实现。那为什么我们要对缺失值进行填充呢,想象你需要分析产品的销售和顾客数据,你注意到很多元组的属性否没有记录值,怎样才能为该属性天上缺失值呢?一般的...
  • 今天分享的是在数据分析中处理缺失值的方法和python的实现。那为什么我们要对缺失值进行填充呢,想象你需要分析产品的销售和顾客数据,你注意到很多元组的属性否没有记录值,怎样才能为该属性天上缺失值呢?一般的...
  • #### 用均值填充其连续型的缺失值,用众数填充分类变量的缺失值 def dataDealNan(df_data): # O_index 连续型变量名称; C_index:离散型变量名称 O_index , C_index = distinguish_Char_Num(df_data)
  • python 缺失值的向前填充

    千次阅读 2018-01-20 12:07:00
    method='bfill'可实现按下方值填充 转载于:https://www.cnblogs.com/mahailuo/p/8320309.html
  • 原标题:在R语言中进行缺失值填充:估算缺失值原文链接:http://tecdat.cn/?p=8287介绍缺失值被认为是预测建模的首要障碍。因此,掌握克服这些问题的方法很重要。估算缺失值的方法的选择在很大程度上影响了模型的...
  • 在我们进行数据分析时,通常会遇到各种数据缺失...对某一列的缺失值,采用该列的平均值填充 df.fillna(method=a.mean(),inplace=True) 此处重点讲解一下fillna的参数,后面不做说明 fillna(value=None, method=...
  • 我有一个DataFrame看起来像这样ColA | ColB | ColC | ColD |-----|------|------|------|100 | A | X1 | NaN |200 | B | X2 | AAA |300 | C | X3 | NaN |我想基于ColA上的值来填充ColD上的缺失值.我需要的结果是:if...
  • 缺失值的处理方法有很多。...将会介绍如何使用Python发现数据中的缺失值,以及使用一些简单的方法对缺失值进行处理,例如:剔除、均值填充缺失值处理方法。## 输出高清图像%config InlineBackend.figure_format =...
  • 今天小萌新复习数据挖掘课程的知识点,当看到缺失值填充(imputation of missing values)部分,被sklearn库中的transform函数搞晕了。看了几篇前辈们的博客,来这里总结一下。请大家指正。 缺失值填充(imputation ...
  • # 用随机森林对缺失值预测填充函数def set_missing(df):# 把已有的数值型特征取出来process_df = df.ix[:,[变量]]# 分成已知该特征和未知该特征两部分known = process_df[process_df.变量.notnull()].as_matrix()...
  • 缺失值的处理方法有很多。...将会介绍如何使用Python发现数据中的缺失值,以及使用一些简单的方法对缺失值进行处理,例如:剔除、均值填充缺失值处理方法。## 输出高清图像%config InlineBackend.figure_format =...
  • 复杂的缺失值填补方法,会考虑到数据的整体情况,然后在对有缺失值的数据进行填充,本小节将会介绍3种复杂的缺失值填补方法。数据准备## 输出高清图像%config InlineBackend.figure_format = 'retina'%matplotlib ...
  • 对于缺失值,我们往往会做三步走的处理,1检测缺失值,2丢弃一些缺失值,3填充一些缺失值1、isnull和notnull检测是否为空,适用于# -*- coding: utf-8 -*-import pandas as pddf = pd.read_excel('test.xlsx')print...
  • python缺失值处理

    2021-03-21 20:29:11
    删除含缺失值的样本具体处理方法: df.isnull() #是缺失值返回True,否则范围False df.isnull().sum()#返回每列包含的缺失值的个数 df.dropna()#直接删除含有缺失值的行 df.dropna(axis = 1)#直接删除...填充缺失值
  • 一、缺失值的判断pandas使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的缺失值,同时python内置None值也会被当作是缺失值。a、Series的缺失值判断s = Series(["a","b",np.nan,"c",None])pr...
  • 1.线性回归法填补缺失值#随机生成一个线性回归数据from sklearn.datasets import make_regressionX,Y=make_regression(n_samples=100, n_features=1,n_targets=1,noise=10.5,random_state=1)import matplotlib....
  • 前言因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习做了以下小结以供之后同行们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422
精华内容 168
关键字:

python缺失值填充

python 订阅