数据分析—NaN数据处理

本文详细介绍了如何处理数据分析中的NaN值,包括查找、填充和过滤NaN的方法。通过使用pandas库,可以定位并填充NaN,如向上填充、向下填充、用平均值替换等。此外,还讲解了如何根据特定条件过滤掉包含NaN的行或列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的

  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

#作为字典的key时,会被认为是不同的key
dic={None:1, NaN:2}
print(dic) #{None: 1, nan: 2}

 

目的1:查找NaN值

原始数据:

df=pd.DataFrame({
   
   'a':[0,1,np.nan,3,4],'b':[4,5,6,np.nan,8],'c':[9,10,np.nan,np.nan,13]})
print(df)

'''结果
     a    b     c
0  0.0  4.0   9.0
1  1.0  5.0  10.0
2  NaN  6.0   NaN
3  3.0  NaN   NaN
4  4.0  8.0  13.0

'''

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

from math import isnan
for i in df.columns:
    # print(df[i].values) 
    for k in range(len( df[i].values)):
        if isnan(df[i].values[k]):
            print('字段%s存在NaN值:' % i + '索引位置是:%s'%k)

1.2 分别找到NaN值所在的列名、行名:np.isnan()

import pandas as pd
import numpy as np
from math import isnan

#在df中nan和None都会被自动填充为NaN
df=pd.DataFrame({
   
   'a':[np.nan,1,2,3,4],'b':[4,5,6,np.nan,np.nan],'c':[9,10,np.nan,np.nan,np.nan]},index=['index_0','index_1','index_2','index_3','index_4'])
print(df)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值