脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python3 DataFrame缺失值的处理方法

Python3 DataFrame缺失值的处理方法

2022-12-30 13:52古月财经之月光宝盒 Python

这篇文章主要介绍了Python3 DataFrame缺失值的处理,包括缺失值的判断缺失值数据的过滤及缺失值数据的填充,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、缺失值的判断

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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

二、缺失值数据的过滤

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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时删除该 行(列)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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缺失值内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/hudashi/article/details/124720180

延伸 · 阅读

精彩推荐
  • PythonPython将多个excel表格合并为一个表格

    Python将多个excel表格合并为一个表格

    这篇文章主要为大家详细介绍了Python将多个excel表格合并为一个表格的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    passion_123822020-12-31
  • Pythonpython使用jenkins发送企业微信通知的实现

    python使用jenkins发送企业微信通知的实现

    公司使用的是企业微信,因此考虑Jenkins通知企业微信机器人的实现方式,本文主要介绍了python使用jenkins发送企业微信通知的实现,感兴趣的可以了解一下...

    朝天椒的夏天7722021-11-18
  • Pythonpython爬虫指南之xpath实例解析(附实战)

    python爬虫指南之xpath实例解析(附实战)

    在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块,下面这篇文章主要给大家介绍了关于python爬虫指南之xpath实例解析的相...

    李富贵要上岸9856822022-09-07
  • PythonPycharm配置远程调试的方法步骤

    Pycharm配置远程调试的方法步骤

    这篇文章主要介绍了Pycharm配置远程调试的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    adison11252021-04-30
  • PythonTensorFlow实现Softmax回归模型

    TensorFlow实现Softmax回归模型

    这篇文章主要介绍了TensorFlow实现Softmax回归模型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    marsjhao5982021-01-20
  • Python详解python 内存优化

    详解python 内存优化

    这篇文章主要介绍了python 内存优化的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下...

    Rocky04292632020-08-17
  • Pythonpython清洗疫情历史数据的过程详解

    python清洗疫情历史数据的过程详解

    这篇文章主要介绍了python清洗疫情历史数据,包括数据获取方法及使用python读取csv的详细代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工...

    不愿意做鱼的小鲸鱼11962022-12-24
  • PythonPython读取键盘输入的2种方法

    Python读取键盘输入的2种方法

    这篇文章主要介绍了Python读取键盘输入的2种方法,主要使用的就是raw_input函数和input函数,本文分别给出使用实例,需要的朋友可以参考下 ...

    Python教程网26782020-07-15