Python3 DataFrame缺失值的处理方法

目录
  • 一、缺失值的判断
  • 二、缺失值数据的过滤
  • 三、缺失值数据的填充
  • 四、缺失值的删除

一、缺失值的判断

在通过Pandas做数据分析时,数据中往往会因为一些原因而出现缺失值NaN (Nota number)o比如前文中的例子,当两个DataFrame对象进行简单运算时,无法匹配的位置会出现缺失值NaN或者None.

isnull ( )和notnull ( )方法都可以用于判断数据是否为缺失值( NaN或者None).如果是缺失值,则isnull()返回值为True, notnull()返回值为False.

df2
Out[170]:
      A     B     C   D
a   2.0   4.0   6.0 NaN
b   6.0   8.0  10.0 NaN
c  10.0  12.0  14.0 NaN

df2.isnull()
Out[171]:
       A      B      C     D
a  False  False  False  True
b  False  False  False  True
c  False  False  False  True

df2.notnull()
Out[172]:
      A     B     C      D
a  True  True  True  False
b  True  True  True  False
c  True  True  True  False

二、缺失值数据的过滤

有时遇到包含缺失值的数据处理起来比较简单,只需要保留有数值的数据即可:

df2
Out[182]:
      A     B     C    D
a   2.0   4.0   6.0  NaN
b   6.0   8.0  10.0  NaN
c  10.0  12.0  14.0  1.0

#把D列中的缺失值过滤掉
df2.D[df2.D.notnull()]
Out[183]:
c    1.0
Name: D, dtype: float64

三、缺失值数据的填充

有时处理数据时我们会想将缺失值用实际的值做替代,Pandas包里也有函数可以调 用:DataFrame.fillna(value=None, method = None, axis = None, inplace=False, limit=None)

参数value是在缺失值处填充的值,可以是数值数字,也可以是字符串;method 是填充的方式,默认为None,也可以取值为ffin、pad、bfill或backfill,其中ffill/pad是用行或列方向上的上一个观测值来填充缺失值,bfill/backfin是用行或列方向上的下一个观测 值来填充;axis与method配合使用,指定行(axis=l)或列(axis=0)的方向;limit=None 时,会填充连续的缺失值,如果指定数值的话,比如limit=2,只会依次填充连续NaN值的 指定数字个数(比如2个);若inplace=False则不会变更原DataFrame,若inplace=True, 则会改变原DataFrame。

import pandas as pd
import numpy as np
h2h2df=pd.DataFrame(np.arange(1,21).reshape(5,4),index=list('abcde'),columns=list("ABCD"))
h2df.loc['c','A']=np.nan
h2df.loc['b':'d','C']=np.nan
h2df
Out[192]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   NaN   8
c   NaN  10   NaN  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20
h2df.fillna(0)
Out[193]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   0.0   8
c   0.0  10   0.0  12
d  13.0  14   0.0  16
e  17.0  18  19.0  20
h2df.fillna(method='ffill')
Out[194]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   3.0  16
e  17.0  18  19.0  20
h2df.fillna(method='pad')
Out[197]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   3.0  16
e  17.0  18  19.0  20
h2df.fillna(method='backfill',axis=1)
Out[196]:
      A     B     C     D
a   1.0   2.0   3.0   4.0
b   5.0   6.0   8.0   8.0
c  10.0  10.0  12.0  12.0
d  13.0  14.0  16.0  16.0
e  17.0  18.0  19.0  20.0
h2df.fillna(method='ffill',limit=2)
Out[198]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   3.0   8
c   5.0  10   3.0  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20

四、缺失值的删除

Pandas提供对包含缺失值的数据集进行行列的删除操作:

DataFrame.dropna(axis=0, how=‘any’, thresh=None)

axis = 0指删除包含缺失值的行,axis = 1指删除包含缺失值的列,默认为0; how=any表示只要有一个缺失值就删除该行(列),how = all表示只有当所有的元素都为缺失值时才删除该行(列),how默认取值为any;thresh默认为None。当thresh=5时表示只有当某行(列)缺失值的数量大于或者等于5时删除该 行(列)。

df
Out[199]:
      A   B     C   D
a   1.0   2   3.0   4
b   5.0   6   NaN   8
c   NaN  10   NaN  12
d  13.0  14   NaN  16
e  17.0  18  19.0  20

df.dropna(axis=0)
Out[200]:
      A   B     C   D
a   1.0   2   3.0   4
e  17.0  18  19.0  20

df.dropna(axis=1)
Out[201]:
    B   D
a   2   4
b   6   8
c  10  12
d  14  16
e  18  20

到此这篇关于Python3 DataFrame缺失值的处理的文章就介绍到这了,更多相关Python3 DataFrame缺失值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 如何通过KNN来填充缺失值

    看代码吧~ # 加载库 import numpy as np from fancyimpute import KNN from sklearn.preprocessing import StandardScaler from sklearn.datasets import make_blobs # 创建模拟特征矩阵 features, _ = make_blobs(n_samples = 1000, n_features = 2, random_state = 1) # 标准化特征 scaler

  • Python数据分析的八种处理缺失值方法详解

    目录 1. 删除有缺失值的行或列 2. 删除只有缺失值的行或列 3. 根据阈值删除行或列 4. 基于特定的列子集删除 5. 填充一个常数值 6. 填充聚合值 7. 替换为上一个或下一个值 8. 使用另一个数据框填充 总结 技术交流 在本文中,我们将介绍 8 种不同的方法来解决缺失值问题,哪种方法最适合特定情况取决于数据和任务.欢迎收藏学习,喜欢点赞支持,技术交流可以文末加群,尽情畅聊. 让我们首先创建一个示例数据框并向其中添加一些缺失值. 我们有一个 10 行 6 列的数据框. 下一步是添加缺失

  • Python查询缺失值的4种方法总结

    目录 缺失值 NaN ① 缺失值 NaN ② 空值 字符“-”.“?”等 在我们日常接触到的Python中,狭义的缺失值一般指DataFrame中的NaN.广义的话,可以分为三种. 缺失值:在Pandas中的缺失值有三种:np.nan (Not a Number) . None 和 pd.NaT(时间格式的空值,注意大小写不能错) 空值:空值在Pandas中指的是空字符串"": 最后一类是导入的Excel等文件中,原本用于表示缺失值的字符“-”.“?”等. 今天聊聊Python中查询缺

  • Python3.5 Pandas模块缺失值处理和层次索引实例详解

    本文实例讲述了Python3.5 Pandas模块缺失值处理和层次索引.分享给大家供大家参考,具体如下: 1.pandas缺失值处理 import numpy as np import pandas as pd from pandas import Series,DataFrame df3 = DataFrame([ ["Tom",np.nan,456.67,"M"], ["Merry",34,345.56,np.nan], [np.nan,np

  • Python3.5 Pandas模块之DataFrame用法实例分析

    本文实例讲述了Python3.5 Pandas模块之DataFrame用法.分享给大家供大家参考,具体如下: 1.DataFrame的创建 (1)通过二维数组方式创建 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import numpy as np import pandas as pd from pandas import Series,DataFrame #1.DataFrame通过二维数组创建 pr

  • Python3 DataFrame缺失值的处理方法

    目录 一.缺失值的判断 二.缺失值数据的过滤 三.缺失值数据的填充 四.缺失值的删除 一.缺失值的判断 在通过Pandas做数据分析时,数据中往往会因为一些原因而出现缺失值NaN (Nota number)o比如前文中的例子,当两个DataFrame对象进行简单运算时,无法匹配的位置会出现缺失值NaN或者None. isnull ( )和notnull ( )方法都可以用于判断数据是否为缺失值( NaN或者None).如果是缺失值,则isnull()返回值为True, notnull()返回值为

  • Python Pandas找到缺失值的位置方法

    问题描述: python pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵,对于庞大的数据dataframe,很难一眼看出来哪个数据缺失,一共有多少个缺失数据,缺失数据的位置. 首先对于存在缺失值的数据,如下所示 import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10,6)) # Make a few areas have NaN values df.

  • 浅谈Series和DataFrame中的sort_index方法

    Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序. 若要按值对 Series 进行排序,当使用 .order(na_last=True, ascending=True, kind='mergesort') 方法,任何缺失值默认都会被放到 Series 的末尾. 在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法

  • pandas中NaN缺失值的处理方法

    本文主要介绍了pandas中NaN缺失值的处理方法,主要有两种方法,具体如下: import pandas as pd 缺失值处理 两种方法: 删除含有缺失值的样本 替换/插补 处理缺失值为NaN 先判断数据中是否存在NaN,通过下面两个方法中任意一个 pd.isnull(dataframe) # dataframe为数据 如果数据中存在NaN返回True,如果没有就返回False pd.notnull(dataframe) 该方法与isnull相反 any() 和 all() ""&

  • Python3遍历目录树实现方法

    本文实例讲述了Python3遍历目录树的方法.分享给大家供大家参考.具体实现方法如下: import os, fnmatch # 检查一个目录,后者某个包含子目录的目录树,并根据某种模式迭代所有文件 # patterns如:*.html,若大小写敏感可写*.[Hh][Tt][Mm][Ll] # single_level 为True表示只检查第一层 # yield_folders 表示是否显示子目录,为False只遍历子目录中的文件, # 但不返回字母名 def all_files(root, p

  • 基于python3 类的属性、方法、封装、继承实例讲解

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName: <statement

  • Python3实现生成随机密码的方法

    本文实例讲述了Python3实现生成随机密码的方法,在Python程序设计中有着广泛的实用价值.具体方法如下: 本文实例主要实现创建8位随机密码(大小写字母+数字),采用Python3生成了初级算法的随机密码. 主要功能代码如下: __author__ = 'Goopand' import string import random def genPassword(length=8,chars=string.digits+string.ascii_letters): return ''.join(

  • Python3.5常见内置方法参数用法实例详解

    本文实例讲述了Python3.5常见内置方法参数用法.分享给大家供大家参考,具体如下: Python的内置方法参数详解网站为:https://docs.python.org/3/library/functions.html?highlight=built#ascii 1.abs(x):返回一个数字的绝对值.参数可以是整数或浮点数.如果参数是一个复数,则返回它的大小. #内置函数abs() print(abs(-2)) print(abs(4.5)) print(abs(0.1+7j)) 运行结果

  • Pandas 合并多个Dataframe(merge,concat)的方法

    在数据处理的时候,尤其在搞大数据竞赛的时候经常会遇到一个问题就是,多个表单的合并问题,比如一个表单有user_id和age这两个字段,另一个表单有user_id和sex这两个字段,要把这两个表合并成只有user_id.age.sex三个字段的表怎么办的,普通的拼接是做不到的,因为user_id每一行之间不是对应的,像拼积木似的横向拼接肯定是不行的. pandas中有个merge函数可以做到这个实用的功能,merge这个词会点SQL语言的应该都不陌生. 下面说说merge函数怎么用: df = p

  • Python3 修改默认环境的方法

    Mac 环境中既有自带的 Python2.7 也有自己安装的 Python 3.5.1,默认想用 Python3 的环境 1. 添加 Python3 的环境变量 vi ~/.bash_profile # Setting PATH for Python 3.5 # The original version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PA

随机推荐