码迷,mamicode.com
首页 > 其他好文 > 详细

NaN值的处理

时间:2019-01-15 14:17:44      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:数据结构   pre   null   net   数据   taf   存在   data   otn   

目的:

  1.找到NaN值的位置(定位到哪一列、在列的哪个索引位置)

  2.对NaN值进行填充(向上填充、向下填充、线性填充等)

  3.忽略NaN值

 

构建简单的Dataframe数据结构环境

import pandas as pd
import numpy as np

#在df中nan和None都会被自动填充为NaN
df=pd.DataFrame({a:[np.nan,1,2,3],b:[None,5,6,7],c:[8,9,10,11]})
print(df)

‘‘‘结果 
     a    b   c
0  NaN  NaN   8
1  1.0  5.0   9
2  2.0  6.0  10
3  3.0  7.0  11

‘‘‘

注意点

  1.None、nan在构建dataframe数据结构中都会被识别为NaN

  2.None与nan的类型是不一样的

#nan是个特殊的float类型
print(type(np.nan))  #<class ‘float‘>

#None是NoneType
print(type(None))   #<class ‘NoneType‘>

#打印空值看输出结果
print(df[a][0])  #nan

 

目的1:查找NaN值

1.1 输出NaN值所在具体位置(调用math下面的isnan做判断)

from math import isnan
for i in df.columns:
    # print(df[i].values) #[nan  1.  2.  3.]  [nan  5.  6.  7.]  [ 8  9 10 11]
    for k in range(len( df[i].values)):
        if isnan(df[i].values[k]):
            print(字段%s存在NaN值: % i + 索引位置是:%s%k)

1.2 isnull、notnull

#1.2 isnull()
isnull_res=df.isnull()
print(isnull_res)
‘‘‘
       a      b      c
0   True   True  False
1  False  False  False
2  False  False  False
3  False  False  False
‘‘‘

1.3 isnull().values

# 1.2 isnull().values
isnull_res=df.isnull().values
print(isnull_res)
‘‘‘
[[ True  True False]
 [False False False]
 [False False False]
 [False False False]]
‘‘‘

1.4 isnull().sum() 统计显示

#1.4 isnull().sum() 统计
isnull_res=df.isnull().sum()
print(isnull_res)
‘‘‘
a    1
b    1
c    0
dtype: int64
‘‘‘

 

目的2:对NaN值填充

2.1 fillna直接填充

#1.fillna直接填充
df.fillna(0,inplace=True)
print(df)
‘‘‘
     a    b   c
0  0.0  0.0   8
1  1.0  5.0   9
2  2.0  6.0  10
3  3.0  7.0  11

‘‘‘

 

NaN值的处理

标签:数据结构   pre   null   net   数据   taf   存在   data   otn   

原文地址:https://www.cnblogs.com/yangzhizong/p/10271179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!