hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Pandas | 缺失数据处理

2019-11-18杂谈搜奇网32°c
A+ A-

数据丧失(缺失)在现实生活中老是一个题目。 机械进修和数据发掘等范畴因为数据缺失致使的数据质量差,在模子展望的正确性上面临着严峻的题目。 在这些范畴,缺失值处置惩罚是使模子越发正确和有用的重点。

 

运用重构索引(reindexing),创建了一个缺乏值的DataFrame。 在输出中,NaN示意不是数字的值

一、搜检缺失值

为了更容易地检测缺失值(以及逾越差别的数组dtype),Pandas供应了isnull()notnull()函数,它们也是Series和DataFrame对象的要领 

示例1

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3),
                  index=['a', 'c', 'e', 'f','h'],
                  columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df)
print('\n')

print (df['one'].isnull())

输出效果:

        one       two     three
a 0.036297 -0.615260 -1.341327
b NaN NaN NaN
c -1.908168 -0.779304 0.212467
d NaN NaN NaN
e 0.527409 -2.432343 0.190436
f 1.428975 -0.364970 1.084148
g NaN NaN NaN
h 0.763328 -0.818729 0.240498


a False
b True
c False
d True
e False
f False
g True
h False
Name: one, dtype: bool
 

示例2

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print (df['one'].notnull())
输出效果:
a     True
b False
c True
d False
e True
f True
g False
h True
Name: one, dtype: bool
 

二、缺乏数据的盘算

  • 在乞降数据时,NA将被视为0
  • 假如数据全部是NA,那末效果将是NA

实例1

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df)
print('\n')

print (df['one'].sum())

输出效果:

        one       two     three
a -1.191036 0.945107 -0.806292
b NaN NaN NaN
c 0.127794 -1.812588 -0.466076
d NaN NaN NaN
e 2.358568 0.559081 1.486490
f -0.242589 0.574916 -0.831853
g NaN NaN NaN
h -0.328030 1.815404 -1.706736


0.7247067964060545

 

示例2

import pandas as pd

df = pd.DataFrame(index=[0,1,2,3,4,5],columns=['one','two'])

print(df)
print('\n')

print (df['one'].sum())

输出效果:

   one  two
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN

0
 

三、添补缺乏数据

Pandas供应了种种要领来消灭缺失的值。fillna()函数能够经由过程几种要领用非空数据“添补”NA值。

 

用标量值替代NaN

以下顺序显现如何用0替代NaN

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one','two', 'three'])

df = df.reindex(['a', 'b', 'c'])
print (df) print('\n') print ("NaN replaced with '0':") print (df.fillna(0))

输出效果:

 one two three a -0.479425 -1.711840 -1.453384 b  NaN   NaN NaN c -0.733606 -0.813315 0.476788
NaN replaced with '0': one two three a -0.479425 -1.711840 -1.453384 b 0.000000 0.000000 0.000000 c -0.733606 -0.813315 0.476788
 

在这里添补零值; 固然,也能够填写任何其他的值。

 

替代丧失(或)通用值

许多时刻,必须用一些详细的值庖代一个通用的值。能够经由过程运用替代要领来完成这一点。用标量值替代NAfillna()函数的等效行动。

示例

import pandas as pd

df = pd.DataFrame({'one':[10,20,30,40,50,2000],'two':[1000,0,30,40,50,60]})

print(df)
print('\n')

print (df.replace({1000:10,2000:60}))

输出效果:

    one   two
0 10 1000
1 20 0
2 30 30
3 40 40
4 50 50
5 2000 60

one two
0 10 10
1 20 0
2 30 30
3 40 40
4 50 50
5 60 60

 

填写NA行进和退却

运用重构索引章节议论的添补观点,来弥补缺失的值。

要领 行动
pad/fill 添补要领向前
bfill/backfill 添补要领向后

示例1

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df)
print('\n')

print (df.fillna(method='pad'))

输出效果:

        one       two     three
a -0.023243 1.671621 -1.687063
b NaN NaN NaN
c -0.933355 0.609602 -0.620189
d NaN NaN NaN
e 0.151455 -1.324563 -0.598897
f 0.605670 -0.924828 -1.050643
g NaN NaN NaN
h 0.892414 -0.137194 -1.101791


one two three
a -0.023243 1.671621 -1.687063
b -0.023243 1.671621 -1.687063
c -0.933355 0.609602 -0.620189
d -0.933355 0.609602 -0.620189
e 0.151455 -1.324563 -0.598897
f 0.605670 -0.924828 -1.050643
g 0.605670 -0.924828 -1.050643
h 0.892414 -0.137194 -1.101791
 

示例2

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print (df.fillna(method='backfill'))

输出效果:

        one       two     three
a  2.278454  1.550483 -2.103731
b -0.779530  0.408493  1.247796
c -0.779530  0.408493  1.247796
d  0.262713 -1.073215  0.129808
e  0.262713 -1.073215  0.129808
f -0.600729  1.310515 -0.877586
g  0.395212  0.219146 -0.175024
h  0.395212  0.219146 -0.175024
 

四、丧失缺乏的值

运用dropna函数和axis参数。 默许情况下,axis = 0,即在行上运用,这意味着假如行内的任何值是NA,那末全部行被消除。

实例1

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print (df.dropna())
输出效果 :
        one       two     three
a -0.719623  0.028103 -1.093178
c  0.040312  1.729596  0.451805
e -1.029418  1.920933  1.289485
f  1.217967  1.368064  0.527406
h  0.667855  0.147989 -1.035978
 

示例2

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print (df.dropna(axis=1))
输出效果:
Empty DataFrame
Columns: []
Index: [a, b, c, d, e, f, g, h]
 




  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Pandas | 缺失数据处理

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282216.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>