处理nan

处理nan的一些方法: 

1. drop掉出现na的行或者列

  1) drop行  axis = 0; drop列 axis  =1 

  2) 如果出现一个nan就drop how = 'any' ; 全是NAN才drop how = 'all'

2. 用固定值或者均值去填充df 或者 df的某一列

  1)df.fillna(value=0)

  2)  df['Age'].fillna((df['Age'].mean()),inplace = True)

3. 寻找nan出现的地方 df.isnull

import pandas as pd
import  numpy as np

dates = pd.date_range('20130101',periods=6)
# index 有6 columns 有4 所以要reshape(6,4)
df = pd.DataFrame(np.arange(24).reshape((6,4)) , index = dates,columns= ['A','B','C','D'])

df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan

# 1. dropna axis = 0 如果某一行中存在nan(any)或者全是nan(all) 就把这一行丢掉
print(df.dropna(axis=0,how = 'any')) # how = 'any' or 'all'

# 2. fillna  给 nan 填上 0
print(df.fillna(value=0))

# 用某列的平均值来填充某列中的nan
train_df['age'].fillna((train_df['age'].mean()), inplace=True)


# 3. isnull 打印哪些地方有nan
print(df.isnull())
#                 A      B      C      D
# 2013-01-01  False   True  False  False
# 2013-01-02  False  False   True  False
# 2013-01-03  False  False  False  False
# 2013-01-04  False  False  False  False
# 2013-01-05  False  False  False  False
# 2013-01-06  False  False  False  False

print(np.any(df.isnull())==True)  #True

原文地址:https://www.cnblogs.com/ChevisZhang/p/13837585.html