精华内容
下载资源
问答
  • 在大部分的数据分析里面,直接获取的数据都会存在一些问题,比如缺失值,异常值等,在进行深度分析前都需要对这些数据进行预处理。 读取并初步查看数据 读取数据后查看数据特征列, 首先筛选出分析所需要的列,然后...

    在大部分的数据分析里面,直接获取的数据都会存在一些问题,比如缺失值,异常值等,在进行深度分析前都需要对这些数据进行预处理。

    读取并初步查看数据

    读取数据后查看数据特征列,

    首先筛选出分析所需要的列,然后再对数据进行描述统计(describe)和箱线图(boxplot),查看数据的缺失情况,异常值分布情况。但是在特征量很多时并不适合用图查看。
    在进行数据统计时,在spyder中为了显示所有行和列,会需要用到两行语句:
    pd.set_option(‘display.max_rows’,None) #显示所有行
    pd.set_option(‘display.max_columns’,None) #显示所有列

    import pandas as pd
    pd.set_option('display.max_rows',None)  #显示所有行
    pd.set_option
    展开全文
  • 问题已参考:使用dropna删除缺失值“失败”?|Python - 知乎 (zhihu.com)解决。
    展开全文
  • 本文参照《利用Python进行数据分析》一书,介绍了对Series和DataFrame对象进行缺失值处理的一些方法 缺失值处理 1. isnull方法 isnull方法用于判断哪些值为缺失值(NaN),并返回布尔值 举例如下: import pandas as...

    前言

    本文参照《利用Python进行数据分析》一书,介绍了对Series和DataFrame对象进行缺失值处理的一些方法

    缺失值处理

    1. isnull方法

    isnull方法用于判断哪些值为缺失值(NaN),并返回布尔值
    举例如下:

    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                         [NA, None, NA], [NA, 6.5, 3.]])
    print(data)
    print(data.isnull())
    

    输出依次为:

    # data
         0    1    2
    0  1.0  6.5  3.0
    1  1.0  NaN  NaN
    2  NaN  NaN  NaN
    3  NaN  6.5  3.0
    
    # data.isnull()
           0      1      2
    0  False  False  False
    1  False   True   True
    2   True   True   True
    3   True  False  False
    

    值得一提的是,python内建的None值也被当做NaN处理(见data[2][1])

    isnull方法并不改变原对象,不信可以试着再输出data试试?

    另有一个notnull方法,用法与isnull相似,作用与其相反

    2.dropna方法

    • dropna方法用于过滤缺失值,默认会删除包含缺失值的
    • 同样的,该方法也不改变原对象

    举例如下:

    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                         [NA, None, NA], [NA, 6.5, 3.]])
    print(data)
    print(data.dropna())
    print(data)
    

    输出依次为:

    # data
         0    1    2
    0  1.0  6.5  3.0
    1  1.0  NaN  NaN
    2  NaN  NaN  NaN
    3  NaN  6.5  3.0
    
    # data.dropna()
         0    1    2
    0  1.0  6.5  3.0
    
    # data——原对象未受改变
         0    1    2
    0  1.0  6.5  3.0
    1  1.0  NaN  NaN
    2  NaN  NaN  NaN
    3  NaN  6.5  3.0
    
    • 若要删除列,可以传入参数axis=1,举例如下:
    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                         [NA, None, NA], [NA, 6.5, 3.]])
    print(data.dropna(axis=1))
    

    输出为:

    #一不小心就全删掉了..
    Empty DataFrame
    Columns: []
    Index: [0, 1, 2, 3]
    
    • 传入how='all’时,将删除所有值均为NA的行
    • 传入inplace=True时,将直接修改对象

    举例如下:

    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                         [NA, None, NA], [NA, 6.5, 3.]])
    print(data)
    data.dropna(how='all', inplace=True)
    print(data)
    

    输出依次为

    # data(处理前),只有第3行全为NaN
         0    1    2
    0  1.0  6.5  3.0
    1  1.0  NaN  NaN
    2  NaN  NaN  NaN
    3  NaN  6.5  3.0
    
    # data(处理后)
         0    1    2
    0  1.0  6.5  3.0
    1  1.0  NaN  NaN
    3  NaN  6.5  3.0
    
    

    另外再介绍一个thresh参数,它用来选择性过滤含有NaN值的行(或列)
    比如说,令thresh = 2, 则它会删除除了NaN值,剩下的值少于2个(不含)的行
    举例如下:

    import numpy as np
    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame(np.random.randn(7, 3)) #生成一个具有正态分布的7*3数组
    data.iloc[:4, 1] = NA
    data.iloc[:2, 2] = NA
    print(data)
    data.dropna(thresh=2, inplace=True)
    print(data)
    

    输出依次为:

    # 第1,2行只有一个非NaN值(小于2),故被删除
              0         1         2
    0 -0.224037       NaN       NaN
    1  0.874976       NaN       NaN
    2 -1.288165       NaN -1.915158
    3  0.659451       NaN  0.710363
    4 -0.059080  0.637937  1.374358
    5  0.035360 -1.562229  0.949080
    6 -0.753340  0.222408  0.042445
    
    
              0         1         2
    2 -1.288165       NaN -1.915158
    3  0.659451       NaN  0.710363
    4 -0.059080  0.637937  1.374358
    5  0.035360 -1.562229  0.949080
    6 -0.753340  0.222408  0.042445
    

    3.fillna方法

    fillna方法用来补全替代缺失值

    • 可以用一个常数来替代NaN值,如fillna(0)
    • 可以使用字典,为不同列设定不同的替代值,如fillna({1: 0.5, 2: 0})
    • 可以插入参数method用来前向或后向替代NaN值
    • 可以插入参数limit来限制前向或后向填充时最大的填充范围
    • 可以插入参数inplace来直接修改对象,用法与dropna方法相同

    举例如下:

    import numpy as np
    import pandas as pd
    from numpy import nan as NA
    data = pd.DataFrame(np.random.randn(7, 3))
    data.iloc[2:, 1] = NA
    data.iloc[4:, 2] = NA
    print(data)
    print(data.fillna(0))
    print(data.fillna({1: 0.5, 2: 1}))
    print(data.fillna(method='ffill', limit=2))
    

    结果依次为:

    # data
              0         1         2
    0  1.458572  1.261047  0.297550
    1 -0.314772  1.591051 -0.858676
    2 -0.647519       NaN  0.816708
    3 -1.675259       NaN -1.416578
    4 -1.273126       NaN       NaN
    5  0.347896       NaN       NaN
    6 -1.774214       NaN       NaN
    
    # data.fillna(0) 将所有NaN值替换为0
              0         1         2
    0  1.458572  1.261047  0.297550
    1 -0.314772  1.591051 -0.858676
    2 -0.647519  0.000000  0.816708
    3 -1.675259  0.000000 -1.416578
    4 -1.273126  0.000000  0.000000
    5  0.347896  0.000000  0.000000
    6 -1.774214  0.000000  0.000000
    
    # data.fillna({1: 0.5, 2: 1})第一列的NaN值替换为0.5, 第二列的替换为1
              0         1         2
    0  1.458572  1.261047  0.297550
    1 -0.314772  1.591051 -0.858676
    2 -0.647519  0.500000  0.816708
    3 -1.675259  0.500000 -1.416578
    4 -1.273126  0.500000  1.000000
    5  0.347896  0.500000  1.000000
    6 -1.774214  0.500000  1.000000
    
    # data.fillna(method='ffill', limit=2)前向填充,并限制最大范围为2
              0         1         2
    0  1.458572  1.261047  0.297550
    1 -0.314772  1.591051 -0.858676
    2 -0.647519  1.591051  0.816708
    3 -1.675259  1.591051 -1.416578
    4 -1.273126       NaN -1.416578
    5  0.347896       NaN -1.416578
    6 -1.774214       NaN       NaN
    
    展开全文
  • 1、给定一个数据集noise-data-1.txt,该数据集中保护大量的缺失值(空格、不完整值等)。利用“全局常量”、“均值或者中位数”来填充缺失值。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 ...

    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)

    运行结果如下:

    blank.gif

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

    时间: 2017-12-20

    展开全文
  • 数据预处理之缺失值处理

    万次阅读 2018-03-04 22:18:26
    在训练一个模型之前需要做数据预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本可能会由于某些原因,造成一个或多个值的缺失。可能由于样本采集过程...
  • 大数据的预处理,人工删除很麻烦 Python恰好能够解决 注释很详细在这不一一解释了 ###################################### ##### 读写excel(xls\xlsx)文件 import pandas as pd import numpy as np df_excel = pd....
  • 无论是数据分析、数据挖掘,还是机器学习,都离不开数据预处理这一重要步骤。没有高质量的数据,就没有高质量的分析结果。而数据不完整,也就是数据中包含缺失值,正是数据分析工作者最常见的问题之一。...
  • 数据预处理第4讲:缺失值填补

    千次阅读 2020-02-17 11:43:39
    很多真实的数据集包括缺失值,这些缺失项通常编码为空,NaN, 或其它占位符。对待含缺失值的数据集,常见的处理办法是去掉缺失项所在的整行或整列。然而,这种办法的代价是失去了可能有信息的观测或变量。这样,一种...
  • 数据预处理 导入玩家的玩牌游戏数据 加载并查看数据信息 player <- read.csv("玩家玩牌数据.csv",F) head(player) str(player) 给数据设置变量名 player_col_names <- c("用户id","性别","等级","站内好友数...
  • 数据预处理----缺失值的填充

    千次阅读 2021-05-21 19:50:51
    文章目录概述缺失值的常用处理方式...因此,数据预处理中非常重要的一项就是处理缺失值。 缺失值的常用处理方式 删除:数据缺失量比较少,删除后对模型的结果几乎不会造成影响;与模型准确性几乎无关的属性 填充 均值
  • 当使用’most_frequent’或’constant’策略时,SimpleImputer类还支持表示为字符串值或pandas分类的分类数据: import pandas as pd df = pd.DataFrame([["a", "x"], [np.nan, "y"], ["a", np.nan], ["b", "y...
  • 完全随机缺失(missing completely at random, MCAR),所缺失的数据发生的概率既与已观察到的数据无关,也与未观察到的数据无关 随机缺失(missing at random, MAR),假设缺失数据发生的概率与所观察到的变量...
  • 预处理-如何去除数据中的空值

    千次阅读 2019-01-16 15:24:13
    预处理-如何去除数据中的空值
  • python实现数据预处理之填充缺失值

    千次阅读 2017-12-08 20:07:49
    1、给定一个数据集noise-data-1.txt,该数据集中保护大量的缺失值(空格、不完整值等)。利用“全局常量”、“均值或者中位数”来填充缺失值。
  • 数据预处理(python)

    2020-11-21 00:30:27
    作为统计的一员,用python来对数据做语出这一步骤是必需的,所以接下来就来总结一下python数据预处理的步骤吧,这里就不放数据了,直接上代码,代码后都有解释,有错误的尽管提出来哈。下面是流程图:一、数据预览...
  • matlab 空值预处理

    2012-02-26 13:26:11
    用matlab做的数据空值处理。其中包含了数值型的和字符型的数据类型。在代码中加入了详细的注释说明。有做数据分析的可以用此方法进行一些数据预处理
  • Python数据预处理

    千次阅读 2021-03-06 07:03:36
    如果想删除空白行,只要给dropna()方法传入一个参数how="all"即可,这样就只会删除全为空值的行。 1.3 缺失值填充 我们利用fillna()方法对数据表中的所有缺失值进行填充,在fillna()中输入要填充的值即可。 在...
  • 数据预处理_缺失值处理

    千次阅读 2019-07-01 23:05:55
    缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。 机械原因是由于机械原因...
  • 数据预处理详细步骤

    2021-11-08 17:22:38
    转载自最全面的数据预处理介绍 - 知乎 一、数据可能存在问题 在实际业务处理中,数据通常是脏数据。所谓的脏,指数据可能存在以下几种问题(主要问题): 数据缺失 (Incomplete) 是属性值为空的情况。如 ...
  •   文章总结了拿到原始数据后,做数据预处理的常见操作。后续会根据总结不断更新。 目录一、数据查看二、数据转换三、数据清洗1.异常值2.重复值3.缺失值四、数据获取五、数据合并1.join,基于index连接DataFrame的...
  • 上一步:数据预处理——缺失值、异常值、重复值处理下一步:变量显著性检验——计算 WOE、IV那么本篇文章要解决2个问题:1. 变量分箱的必要性2. 三类变量分箱方法的及注意要点一、变量分箱的必要性知其然知其所以然...
  • 2020上海国际气象人才招聘会 | 人才报名入口2020上海国际气象人才招聘会 | 用人单位报名入口气象数据处理流程通常的数据分析流程相似,但是气象数据有本身的一些特殊性存在,比如风向和风速,降水等数据,其中风向由...
  • 数据以及空值数据处理方法

    千次阅读 2020-11-22 21:32:22
    1、对于简单的数据删除空值数据(NaN)——对于简单的数据进行过滤,如果对于负责的 DataFrame对象进行使用则会存在空值数据过滤不干净 import pandas as pd——导入模块 li=[2,NaN,4,6,NaN,4]——数据集 se=pd...
  • 目录Python主要数据预处理函数1、interpolate2、unique3、isnull / notnull4、andom5、PCA Python主要数据预处理函数 在数据挖掘中,海量的原始数据中存在着大量不完整(有缺失值)、不一致、有异常的数据,严重影响...
  • 数据预处理案例

    2020-09-13 17:46:48
    以澳大利亚1987年的温度作为数据为例子,写一个数据预处理及绘图的随笔。 使用到的头文件 import pandas as pd from pandas import to_datetime import matplotlib.pyplot as plt 第一步 读取从csv文件读取数据...
  • 作者 | CDA数据分析师从菜市场买来的菜,总有一些不太好的,所以把菜买回来以后要先做一遍预处理,把那些不太好的部分扔掉。现实中大部分的数据都类似于菜市场的菜品,拿到以后都要先做一次预处理。常见的不规整的...
  • 常见的数据预处理--python篇

    千次阅读 2020-12-06 21:19:53
    做过数据分析的孩子一般都知道:数据预处理很重要,大概会占用整个分析过程50%到80%的时间,良好的数据预处理会让建模结果达到事半功倍的效果。本文简单介绍python中一些常见的数据预处理,包括数据加载、缺失值...
  • 数据预处理

    2020-05-15 16:25:42
    数据预处理1 数据可能存在的问题2 数据预处理步骤2.1 数据清洗2.1.1 缺失值处理2.1.2 离群点处理2.2 数据转换 1 数据可能存在的问题 在实际业务处理中,数据通常是脏数据。所谓的脏,指数据可能存在以下几种问题...
  • 数据预处理包括哪几步?

    万次阅读 多人点赞 2019-02-12 20:01:51
    数据预处理的目的 为了提高数据的质量 为了让数据更好地适应特定的挖掘技术或工具 数据预处理的主要内容 数据清洗 数据集成 数据变换 数据规约 一、数据清洗 1.1 缺失值处理 删除记录,数据插补, 不处理。 常用...
  • 数据预处理总结

    千次阅读 2017-06-07 15:12:36
    完成的数据预处理流程及方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,735
精华内容 4,694
关键字:

数据预处理空值