python查找空值,python dataframe 查看为空值

  python查找空值,python dataframe 查看为空值

  今天是熊猫数据处理专题的第四篇文章。我们来谈谈DataFrame中的索引。

  在上一篇文章中,我们介绍了DataFrame数据结构中一些常用的索引,如iloc、loc和逻辑索引。在今天的文章中,我们来看看DataFrame的一些基本操作。

  数据调整

  我们可以计算两个数据帧的总和。熊猫会自动对齐这两个数据框的数据。如果数据不匹配,它将被设置为Nan(不是数字)。

  首先我们创建两个数据帧:import numpy as NP import pandas as PDD f1=PD . data frame(NP . arange(9))。reshape ((3,3)),columns=list (ABC ),index=[1 , 2 ,3 ])DF2=PD . data frame(NP . arange(12)。reshape ((4,3)),columns=list (Abd ),index=[2 , 3 , 4 , 5])复制代码。

  结果与我们的预期一致。事实上,它只是通过一个numpy数组创建一个DataFrame,然后指定索引和列。这应该算是很基本的用法了。

  然后我们将两个数据帧相加,得到:

  我们发现,熊猫把两个数据框组合起来后,任何没有出现在两个数据框中的位置都会被设置为Nan。其实这很有道理。其实不仅仅是加法。我们可以计算两个数据帧的加、减、乘、除四则运算。如果我们计算两个数据帧的除法,除了相互不对应的数据之外,被零除的行为也会导致异常值(可能不一定是Nan,而是inf)的出现。

  填充值

  如果我们想在两个数据帧上操作,那么我们当然不想要空值。这时候就要补空值了。我们不能通过参数直接用运算符来填充它。这时候就需要使用DataFrame提供的算术方法了。

  DataFrame中有几个常用的运算符:

  Add、sub和p都很好理解,那么这里的radd和rsub方法是什么意思呢?为什么要在他们前面加个R?

  看起来很混乱,说白了一文不值。radd用于翻转参数。例如,如果我们想得到一个数据帧中所有元素的倒数,我们可以把它写成1/df。由于1本身不是DataFrame,我们不能用1调用DataFrame中的方法,所以不能传递参数。要解决这种情况,我们可以把1/df写成df.rp(1),这样就可以在里面传递参数了。

  因为零除发生在除法的过程中,所以我们得到一个inf,也就是无穷大。

  我们可以在add和p方法中传入一个fill_value的参数,可以在计算前填充一侧缺失值的情况。也就是说,对于只在一个数据帧中缺失的位置,将用我们指定的值替换。如果在两个数据帧中都缺失,它仍将是Nan。

  对比结果可以发现,加法后的(1,d),(4,c),(5,c)位置都是Nan,因为df1和df2数据帧中的这些位置都是空的,所以没有填充。

  参数fill_value出现在很多API中,比如reindex,用法是一样的。我们可以在查阅API文档的时候注意一下。

  那么对于填充后仍然出现的空值该怎么办呢?只能手动找到这些位置进行填充吗?当然不现实。pandas还为我们提供了一个专门解决空值的api。

  空api

  在填充空值之前,我们要做的第一件事是找到空值。为了解决这个问题,我们有isna api,它将返回一个bool数据帧。数据帧中的每个位置指示对应于原始数据帧的位置是否为空。

  德罗普纳

  当然,仅仅发现它是否为空肯定是不够的。有时,我们希望避免空值。这时,我们可以选择丢弃空值。在这种情况下,我们可以在DataFrame中使用dropna方法。

  我们发现在使用dropna之后,具有null值的行被丢弃。只保留没有空值的行。有时我们想要丢弃yes列而不是行。这时候我们可以通过传入轴参数来控制。

  这样,我们得到一个不包含空值的列。除了控制行和列,我们还可以控制执行drop的严格性。我们可以通过参数来判断。how支持两种值,一种是 all ,一种是 any 。All表示只有当一行或一列全部为空时才会被丢弃,any表示每当有空时都会被丢弃。默认不填,就认为是任意。一般情况下,我们也不能使用这个参数。大概有印象就够了。

  菲尔娜

  Pandas不仅可以删除空值数据,还可以填充空值。其实这是最常用的方法。

  我们可以简单地传入一个特定的值来填充:

  Fillna将返回一个新的DataFrame,其中所有Nan值都将被我们指定的值替换。如果我们不希望它返回新的数据帧,而是直接修改原始数据,我们可以使用inplace参数来表明这是一个inplace操作,那么pandas将修改原始数据帧。3.dffillna (3,inplace=true)复制代码

  除了填写具体的数值,我们还可以结合一些计算,计算出应该填写的数值。比如我们可以计算某一列的均值、最大值、最小值等计算来填写。fillna函数不仅可以用在DataFrame上,也可以用在Series上,因此我们可以在DataFrame中填充一列或几列:

  除了计算用于填充的平均值、最大值和最小值等各种值之外,还可以指定缺失值的上一行或下一行的值用于填充。要实现这个函数,需要使用parameter方法,它有两个接收值。ffill表示用前一行的值填充,bfill表示用下一行的值填充。

  我们可以看到,当我们使用ffill填充时,第一行数据的Nan将被保留,因为它没有前一行。同样,当我们使用bfill时,最后一行也不能填充。

  摘要

  在今天的文章中,我们主要介绍DataFrame的一些基本运算,比如最基本的四则运算。在四个操作过程中,数据帧之间的行索引和列索引可能会错位,这样计算出来的结果就会有空值,所以我们需要对空值进行处理。我们可以在计算时传入fill_value来填充,也可以在计算后用fillna来填充结果。

  在实际中,我们很少直接加减两个数据帧,但数据帧为空是很常见的。所以空值的填充和处理非常重要,可以说是学习中的重点。请注意。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: