数据清洗--DataFrame中的空值处理方法

数据清洗是一项复杂且繁琐的工作,同时也是整个数据分析过程中最为重要的环节。

在python中空值被显示为NaN。首先,我们要构造一个包含NaN的DataFrame对象。

>>> import numpy as np
>>> import pandas as pd
>>> from pandas import Series,DataFrame
>>> from numpy import nan as NaN
>>> data = DataFrame([[12,'man','13865626962'],[19,'woman',NaN],[17,NaN,NaN],[NaN,NaN,NaN]],columns=['age','sex','phone'])
>>> data
 age sex  phone
0 12.0 man 13865626962
1 19.0 woman   NaN
2 17.0 NaN   NaN
3 NaN NaN   NaN

删除NaN

删除NaN所在的行

删除表中全部为NaN的行

>>> data.dropna(axis=0, how='all')
 age sex  phone
0 12.0 man 13865626962
1 19.0 woman   NaN
2 17.0 NaN   NaN

删除表中任何含有NaN的行

>>> data.dropna(axis=0, how='any')
 age sex  phone
0 12.0 man 13865626962

删除NaN所在的列

删除表中全部为NaN的列

>>> data.dropna(axis=1, how='all')
 age sex  phone
0 12.0 man 13865626962
1 19.0 woman   NaN
2 17.0 NaN   NaN
3 NaN NaN   NaN

删除表中任何含有NaN的列

>>> data.dropna(axis=1, how='any')
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

注意:axis 就是”轴,数轴“的意思,对应多维数组里的”维“。此处作者的例子是二维数组,所以,axis的值对应表示:0轴(行),1轴(列)。

填充NaN

如果不想过滤(去除)数据,我们可以选择使用fillna()方法填充NaN,这里,作者使用数值'0'替代NaN,来填充DataFrame。

>>> data.fillna(0)
 age sex  phone
0 12.0 man 13865626962
1 19.0 woman   0
2 17.0  0   0
3 0.0  0   0

我们还可以通过字典来填充,以实现对不同的列填充不同的值。

>>> data.fillna({'sex':233,'phone':666})
 age sex  phone
0 12.0 man 13865626962
1 19.0 woman   666
2 17.0 233   666
3 NaN 233   666

以上这篇数据清洗--DataFrame中的空值处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 删除DataFrame中值全为NaN或者包含有NaN的列或行方法

    如果存在以下DataFrame 年龄 性别 手机号 0 2 男 NaN 1 3 女 NaN 2 4 NaN NaN 删除NaN所在的行: 删除表中全部为NaN的行 df.dropna(axis=0,how='all') 删除表中含有任何NaN的行 df.dropna(axis=0,how='any') #drop all rows that have any NaN values 删除NaN所在的列: 删除表中全部为NaN的行 df.dropna(axis=1,how='all') 删除表中含有

  • 解决pandas.DataFrame.fillna 填充Nan失败的问题

    如果单独是 >>> df.fillna(0) >>> print(df) # 可以看到未发生改变 >>> print(df.fillna(0)) # 如果直接打印是可以看到填充进去了 >>> print(df) # 但是再次打印就会发现没有了,还是Nan 将其Nan全部填充为0,这时再打印的话会发现根本未填充,这是因为没有加上参数inplace参数. 一定要将inplace = True加入参数,这样才能让源数据发生改变并保存. &g

  • 在pandas中一次性删除dataframe的多个列方法

    之前沉迷于使用index删除,然而发现pandas貌似有bug? import pandas as pd import numpy as np df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D']) x=[1,2] df.drop(index=[1,2], axis=1, inplace=True) #axis=1,试图指定列,然并卵 print df 输出为 A B C D 0 0 1 2 3 还是

  • python设置值及NaN值处理方法

    如下所示: python 设置值 import pandas as pd import numpy as np dates = 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 D 2018-01-01 0 1 2 3 2018-01-02 4 5 6 7 2018-01-03

  • Python中pandas dataframe删除一行或一列:drop函数详解

    用法:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False) 在这里默认:axis=0,指删除index,因此删除columns时要指定axis=1: inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe: inplace=True,则会直接在原数据上进行删除操作,删除后就回不来了. 例子: >>>df = pd.DataFrame(np.a

  • 使用DataFrame删除行和列的实例讲解

    本文通过一个csv实例文件来展示如何删除Pandas.DataFrame的行和列 数据文件名为:example.csv 内容为: date spring summer autumn winter 2000 12.2338809 16.90730113 15.69238313 14.08596223 2001 12.84748057 16.75046873 14.51406637 13.5037456 2002 13.558175 17.2033926 15.6999475 13.23365247

  • 数据清洗--DataFrame中的空值处理方法

    数据清洗是一项复杂且繁琐的工作,同时也是整个数据分析过程中最为重要的环节. 在python中空值被显示为NaN.首先,我们要构造一个包含NaN的DataFrame对象. >>> import numpy as np >>> import pandas as pd >>> from pandas import Series,DataFrame >>> from numpy import nan as NaN >>> d

  • python 处理dataframe中的时间字段方法

    在机器学习过程中,通常会通过pandas读取csv文件,保持成dadaframe格式,然而有时候需要对dataframe中的时间字段进行数据建模,比如时间格式为datetime,那么像一般操作dataframe的方式来操作时间字段会报错的,所以在使用sklearn库进行fit和predict的时候,通常要把时间字段首先转换为timestamp格式,在fit和predict之后,如果需要matplotlib绘图的时候,再把timestamp格式转换为时间字符串,比如2017-02-01 14:25

  • Pandas检查dataFrame中的NaN实现

    目录 检查Pandas DataFrame中的NaN值 方法1:使用isnull().values.any()方法 方法2:使用isnull().sum()方法 方法3:使用isnull().sum().any()方法 方法4:使用isnull().sum().sum()方法 参考 NaN代表Not A Number,是表示数据中缺失值的常用方法之一.它是一种特殊的浮点值,不能转换为浮点数以外的任何其他类型. NaN值是数据分析中的主要问题之一,为了得到理想的结果,对NaN进行处理是非常必要的.

  • 对Python中DataFrame按照行遍历的方法

    在做分类模型时候,需要在DataFrame中按照行获取数据以便于进行训练和测试. import pandas as pd dict=[[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8],[4,5,6,7,8,9],[5,6,7,8,9,10]] data=pd.DataFrame(dict) print(data) for indexs in data.index: print(data.loc[indexs].values[0:-1]) 实验结果: /usr/b

  • DataFrame中的object转换成float的方法

    数据类型转换: 今天遇到一个问题,就是DataFrame类型的数据里是str型的数字,想把数字转换为int 或float:百度没有发现好的,也可能输入的关键字不对,找不到: DataFrame.info()之后发现数据全是object 之前有一个方法就是: 先traindata=np.array(traindata,dtype=np.float)之后在 traindata=pd.DataFrame(traindata)转换 但看着很繁琐,突发奇想,试到了下面的方法,一句就搞定得意得意 train

  • pandas把dataframe转成Series,改变列中值的类型方法

    使用 pd.Series把dataframe转成Series ts = pd.Series(df['Value'].values, index=df['Date']) 使用astype改变列中的值的类型,注意前面要有np df['列名'] = df['列名'].astype(np.int64) 以上这篇pandas把dataframe转成Series,改变列中值的类型方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: python panda

  • Pandas中把dataframe转成array的方法

    使用 df=df.values, 可以把Pandas中的dataframe转成numpy中的array 以上这篇Pandas中把dataframe转成array的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: pandas把dataframe转成Series,改变列中值的类型方法 pandas string转dataframe的方法 pandas.DataFrame 根据条件新建列并赋值的方法 python pandas中DataFram

  • DataFrame中去除指定列为空的行方法

    一次,笔者在处理数据时想去除DataFrame中指定列的值为空的这一行,采用了如下做法,但是怎么都没有成功: # encoding: utf-8 import pandas as pd import math import numpy as np data = pd.read_csv('mydata.csv') print len(data) for i in range(len(data)): if (data['导演'][i] == ''): data = data.drop(i) data

  • 使用Python向DataFrame中指定位置添加一列或多列的方法

    对于这个问题,相信很多人都会很困惑,本篇文章将会给大家介绍一种非常简单的方式向DataFrame中任意指定的位置添加一列. 在此之前或许有不少读者已经了解了最普通的添加一列的方式,如下: import pandas as pd feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1

随机推荐