python教程分享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缺失值内容请搜索<猴子技术宅>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<猴子技术宅>!

需要了解更多python教程分享Python3 DataFrame缺失值的处理方法,都可以关注python教程分享栏目—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/pythons/1091931.html

(0)
上一篇 3天前
下一篇 3天前

精彩推荐

发表评论

您的电子邮箱地址不会被公开。