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

    2020-04-20 08:20:18
    关于NaN -在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法...Pandas 会为缺少的分配 NaN 。 创建一个具有NaN值得 Data Frame 1 2 3 4 5 6 7 8 9 10 11 12 1...

    关于NaN值

    -在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据中的错误。

    • 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎始终会遇到的糟糕数据类型是缺少值。
    • Pandas 会为缺少的值分配 NaN 值。

    创建一个具有NaN值得 Data Frame
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    import pandas as pd

    We create a list of Python dictionaries

    创建一个字典列表

    items2 = [{‘bikes’: 20, ‘pants’: 30, ‘watches’: 35, ‘shirts’: 15, ‘shoes’:8, ‘suits’:45},
    {‘watches’: 10, ‘glasses’: 50, ‘bikes’: 15, ‘pants’:5, ‘shirts’: 2, ‘shoes’:5, ‘suits’:7},
    {‘bikes’: 20, ‘pants’: 30, ‘watches’: 35, ‘glasses’: 4, ‘shoes’:10}]

    创建一个DataFrame并设置行索引

    store_items = pd.DataFrame(items2, index = [‘store 1’, ‘store 2’, ‘store 3’])

    显示

    store_items

    显示:

    数据量大时统计NaN的个数
    1
    2
    3
    4
    5

    计算在store_items中NaN值的个数

    x = store_items.isnull().sum().sum()

    输出

    print(‘在我们DataFrame中NaN的数量:’, x)

    输出:

    在我们DataFrame中NaN的数量: 3
    

    .isnull() 方法返回一个大小和 store_items 一样的布尔型 DataFrame,并用 True 表示具有 NaN 值的元素,用 False 表示非 NaN 值的元素。
    1

    store_items.isnull()

    显示:

    在 Pandas 中,逻辑值 True 的数字值是 1,逻辑值 False 的数字值是 0。

    因此,我们可以通过数逻辑值 True 的数量数出 NaN 值的数量。

    为了数逻辑值 True 的总数,我们使用 .sum() 方法两次。

    要使用该方法两次,是因为第一个 sum() 返回一个 Pandas Series,其中存储了列上的逻辑值 True 的总数

    第二个 sum() 将上述 Pandas Series 中的 1 相加

    除了数 NaN 值的数量之外,我们还可以采用相反的方式,我们可以数非 NaN 值的数量。为此,我们可以使用 .count() 方法
    1

    print(‘在我们DataFrame的列中具有非NaN值得数量分别为:\n’, store_items.count())

    输出:

    在我们DataFrame的列中具有非NaN值得数量:
    bikes 3
    glasses 2
    pants 3
    shirts 2
    shoes 3
    suits 2
    watches 3
    dtype: int64
    

    处理这些 NaN 值

    如果 axis = 0,.dropna(axis) 方法将删除包含 NaN 值的任何行
    如果 axis = 1,.dropna(axis) 方法将删除包含 NaN 值的任何列
    

    1
    2

    删除包含NaN值得任何行

    store_items.dropna(axis = 0)

    显示为:

    1

    store_items.dropna(axis = 1)

    显示为:

    注意:

    • .dropna() 方法不在原地地删除具有 NaN 值的行或列。
    • 原始 DataFrame 不会改变。你始终可以在 dropna() 方法中将关键字 inplace 设为 True,在原地删除目标行或列。

    将NaN值替换为合适的值

    我们不再删除 NaN 值,而是将它们替换为合适的值。例如,我们可以选择将所有 NaN 值替换为 0。为此,我们可以使用 .fillna() 方法
    1

    store_items.fillna(0)

    显示:

    我们还可以使用 .fillna() 方法将 NaN 值替换为 DataFrame 中的上个值,称之为前向填充

    .fillna(method = ‘ffill’, axis) 将通过前向填充 (ffill) 方法沿着给定 axis 使用上个已知值替换 NaN 值
    1

    store_items.fillna(method = ‘ffill’, axis = 0)

    显示:

    注意 store 3 中的两个 NaN 值被替换成了它们所在列中的上个值。

    但是注意, store 1 中的 NaN 值没有被替换掉。因为这列前面没有值,因为 NaN 值是该列的第一个值。

    现在,使用上个行值进行前向填充
    1

    store_items.fillna(method = ‘ffill’, axis = 1)

    显示:

    在这种情况下:所有 NaN 值都被替换成了之前的行值

    同时,也可以选择用 DataFrame 中之后的值替换 NaN 值,称之为后向填充
    1
    2

    向后填充列,即为NaN的列值,用其列中的后一个来填充

    store_items.fillna(method = ‘backfill’, axis = 0)

    同理:也可以向后填充行,即为NaN的行值,用其行中的后一个来填充
    1
    2

    向后填充行,即为NaN的行值,用其行中的后一个来填充

    store_items.fillna(method = ‘backfill’, axis = 1)

    注意:.fillna() 方法不在原地地替换(填充)NaN 值。也就是说,原始 DataFrame 不会改变。你始终可以在 fillna() 函数中将关键字 inplace 设为 True,在原地替换 NaN 值。

    还可以选择使用不同的插值方法替换 NaN 值

    .interpolate(method = ‘linear’, axis) 方法将通过 linear 插值使用沿着给定 axis 的值替换 NaN 值, 这个差值也就是前后或者上下的中间值
    1

    store_items.interpolate(method = ‘linear’, axis = 0)

    同时,也可用行值插入
    1

    store_items.interpolate(method = ‘linear’, axis = 1)

    和我们看到的其他方法一样,.interpolate() 方法不在原地地替换 NaN 值,图片就省略了。
    本文来自https://www.jb51.net/article/163872.htm

    展开全文
  • 设置控制台打印时显示2位小数: pd.set_option('precision', 2) ...'''method : {'backfill', '...① bfill 向前填充 ② ffill 前后填充 ③ axis = 0 默认垂直方向 axis = 1 水平方向      

     

    设置控制台打印时显示2位小数:

    pd.set_option('precision', 2)

     

    '''method : {'backfill', 'bfill', 'pad', 'ffill', None}, default None
        Method to use for filling holes in reindexed Series
        pad / ffill: propagate last valid observation forward to next valid
        backfill / bfill: use NEXT valid observation to fill gap'''
    
    使用:
    ① bfill 向前填充
    ② ffill 前后填充
    ③ axis = 0 默认垂直方向  axis = 1 水平方向
    
     

     

     

     

    展开全文
  • 今天就来聊聊如何在数据处理的过程中,利用 pandas 进行缺失值的处理。一般我们使用 删除法,替补法和插补法进行处理。删除法如果数据中某个变量大部分都是缺失值,可以考虑删除变量如果缺失值是随机分布的,且缺失...

    2b553a5097a16d64b80704ad60232e10.png

    pandas 是一个很酷炫的数据处理的工具。

    今天就来聊聊如何在数据处理的过程中,利用 pandas 进行缺失值的处理。

    一般我们使用 删除法替补法插补法进行处理。

    • 删除法
      • 如果数据中某个变量大部分都是缺失值,可以考虑删除变量
      • 如果缺失值是随机分布的,且缺失的数量并不是很多,可以考虑删除这些缺失的观测值
    • 替补法
      • 对于连续型变量,如果变量的分布近似或就是正态分布的话,可以用均值替代那些缺失值
      • 如果变量是有偏的,可以使用中位数来代替那些缺失值
      • 对于离散型变量,我们一般用众数去替换那些存在缺失的观测
    • 插补法
      • 插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值

    缺失值的处理如下:

    1. 通过 sumisnull 函数来检测有多少缺失值
    sum(pd.isnull(s))
    1. 通过 dropna 直接删除缺失值,默认情况下 dropna 会删除任何含有缺失值的行
    s.dropna()
    
    #增加参数 how = all,表示值删除所有列都为缺失值的行
    s.dropna(how = 'all')
    1. 通过 fillna 函数来实现填补工作
    2. 0来填补所有缺失值
    df.fillna(0)
    • 采用前项填充或者后项填充
    #用前项填充
    df.fillna(method = 'ffill')
    #用后项填充
    df.fillna(method = 'bfill')
    • 使用常量填充不同的列
    df.fillna('A':1,'B':2)
    • 均值中位数填充各自的列
    x_median = df['A'].median()
    x_mean = df['A'].mean()
    df.fillna('A':x_median,'B':x_mean)
    展开全文
  • 缺失值是指数据集中的某些观测存在遗漏的指标值,缺失值的存在同样会影响到数据分析和挖掘的结果。一般而言,当遇到缺失值是可以采三种方法处置:删除法,替换法和插补法。1.删除法使用情况:当确实的观测比例非常低...

    缺失值是指数据集中的某些观测存在遗漏的指标值,缺失值的存在同样会影响到数据分析和挖掘的结果。

    一般而言,当遇到缺失值是可以采三种方法处置:删除法,替换法和插补法。

    1.删除法使用情况:当确实的观测比例非常低是,如5%以内,可以直接删除这些缺失的变量。

    2.替换法:用某种直接替换缺失值,例如,对连续变量而言,可以使用均值或中位数替换,对于离散型变量,可以使用众数替换。

    3.插补法:是指根据其他非确实的变量或观测来预测缺失值,常用的插补法有回归插补法,K近邻法,拉格朗日插补法等。

    下面我们介绍两种比较常见的缺失值处理方法,删除法和替换法

    例:

    原数据:

    从表中可以看出,该数据集存在4条缺失观测,行号分别是4,6,7和9,11。接下来我们要做的是如何判断数据集是否存在缺失值(尽管记录少的时候可以清楚地发现)

    import pandas as pd

    df= pd.read_excel(r'd:/data_test05.xlsx')

    print('数据集中是否存在缺失值:\n',any(df.isnull()))

    OUT:

    True

    删除操作:

    df.dropna()                          #删除缺失值所在的行

    df.drop('age',axis = 1)           #选择某具体的列删除

    替换操作:

    df.fillna(method = 'ffill')                 #用前一行的数据来替换空白   助记词:front

    df.fillna(method = 'bfill')                #用后一行数据来替换空内容  助记词:backward   fill填充

    df.fillna(value = 0)                            #指定用某个值来填充所有的空白内容 该方法慎用,典型的以点概面的方式,很容易造成数据混乱

    df.fillna(value = {'gender':df.gender.mode()[0],'age':df.age.mean(),              #这里面gender 使用的是众数替换,age 使用均值替换,income 使用中位数替换

    'income':df.income.median()})                                          #value =  后面用的是字典,   mode()[0]  因为众数可能存在多个,所以mode()返回的其                                                                                                                         #实是一个序列,mode(0)表示,取第一个众数。参考摘选的补充说明:

    ****  如上代码并没有实际改变df数据框的结果,因为dropna,drop和fillna方法并没有使inplace参数设置为True。因此我们在实际工作中,先预览处理效果,然后再把inplace参数设置为True,进而真正地改变你所处理的数据集:

    补充说明:

    本篇涉及内容小结:

    展开全文
  • # 缺失值是指数据集中的某些观察存在遗漏的指标值,缺失值的存在同样会影响到数据剖析和挖掘的效果。# 可以采三种方式处置:删除法,替换法和插补法。# 1.删除法使用情况:当确实的观察比例异常低是,如5%以内,可以...
  • 当我们拿到一份原始数据,首先会查看数据的基础信息,例如每一列数量统计,内存消耗、哪些列有缺失值等。完整的数据对于我们的数据分析工作来说意义重大,但对于实际收集数据的人却不是,所以我们经常会遇到数据缺失...
  • 1 数据清洗1.1 处理缺失数据对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中pandas库的Series类对象的isnull方法进行检测。import pandas as pdimport numpy as npstring_data = pd...
  • pandas:填充缺失值

    万次阅读 多人点赞 2016-04-16 11:35:08
    pandas处理缺失值
  • # -*- coding: UTF-8 -*-import sysimport jsonreload(sys)sys.setdefaultencoding('utf-8') import pandas as pdimport numpy as np #读取excel保存成txt格式excel_file = pd.read_excel("text.xlsx")excel_file....
  • 现实和教程最大的区别之一是,现实的数据集是混乱不堪的,数据科学家90%的时间都花在数据预处理上,其中就包括处理缺失值(missing values)。Python做数据科学项目时通常用Pandas存储数据,所以...
  • 在使用python里的pandas库进行数据分析工作时,很多时候我们都会遇到这样一个问题:数据缺失。这也是大部分数据分析...这一次我们来说说如何使用fillna()函数填充缺失值。(2)填充(fillna) 函数: DataFrame.fil...
  • 今天小编就为大家分享一篇对Pandas DataFrame缺失值的查找与填充示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Pandas缺失值填充

    千次阅读 2019-01-23 16:10:12
    在写例子的时候用到了缺失值填充,于是想用一下method这个参数传入’ffill’来实现. 但是发现,这个填充方法并不全如我意. 仔细实验后发现,这其中有些需要注意的点. fill_test = Series([111, 222, 533, 644, 299], ...
  • 使用pandas缺失值进行填充处理

    千次阅读 2018-11-06 15:33:43
    对dataframe数据进行缺失值处理可以使用下面的方法处理。 train = train.fillna({'column_name': 'new_value'}) 把column_name的缺失值替换为new_value。...以上就是对使用pandas缺失值进行填充处理的认识。 ...
  • 5.Pandas处理缺失值

    2020-07-18 18:37:10
    文章目录Pandas处理缺失值如何标记缺失值全局掩码使用标签值Pandas的缺失值Python的None对象浮点数据类型的NaNNone与NaN的差异处理缺失值发现缺失值剔除缺失值填充缺失值 Pandas处理缺失值 我们在现实生活中真正需要...
  • pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样:for column in list(df.columns[df.isnull().sum() > 0]):mean_val = df[column].mean()df[column]....
  • 注:不同地区和软件对缺失值的表示方法不同,在用pandas读取文件时可指定缺失值的形式给参数na_values,如:missing_values = ['n/a', 'na', '--']df = pd.read_csv('文件名‘, na_values = m...
  • 1、检查缺失值为了更容易地检测缺失值(以及跨越不同的数组dtype),Pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法 -示例1import pandas as pdimport numpy as npdf = pd.DataFrame(np....
  • 缺失值的处理 缺失值+sklearn ...from sklearn.preprocessing import Imputer ...缺失值+pandas套装 ... 根据各标签的值中是否存在缺失数据对轴... 用指定值或插值方法(如ffill或bfill)填充缺失值 isnul.
  • pandas处理缺失值

    万次阅读 2018-01-09 20:59:20
    常见的缺失值处理方式有,过滤、填充。 一、缺失值的判断 pandas使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的缺失值,同时python内置None值也会被当作是缺失值。 a、Series的缺失值判断 s = ...
  • 5、将姓名的缺失值进行填充 6、将清洗好的数据保存到指定excel中 原始数据: 最后输出数据: 处理步骤: 1、读取数据: 2、删除全是空值的列 3、删除全是空值的行 4、将分数列值为NAN(空值)的填充为0分 5、...

空空如也

空空如也

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

pandas填充缺失值