python笔记之使用fillna()填充缺失值

2022-07-16 17:51:14
目录
使用fillna()填充缺失值关于fillna()函数详解一、不指定任何参数二、指定inplace参数三、指定method参数四、指定limit参数五、指定axis参数

使用fillna()填充缺失值

df = pd.read_csv('ccf_offline_stage1_train.csv')
print(df['Distance'])
df['distance'] = df['Distance'].fillna(-1).astype(int)
print(df['distance'])

结果太长不展示了,经过操作后成功将dataframe中distance列的缺失值都变成了-1

关于fillna()函数详解

inplace参数的取值:True、False

    True:直接修改原对象False:创建一个副本,修改副本,原对象不变(缺省默认)

    method参数的取值>

      pad/ffill:用前一个非缺失值去填充该缺失值backfill/bfill:用下一个非缺失值填充该缺失值None:指定一个值去替换缺失值(缺省默认这种方式)

      limit参数:限制填充个数

      axis参数:修改填充方向

      #导包
      import pandas as pd
      import numpy as np
      from numpy import nan as NaN
      df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])
      df1

      代码结果:

      一、不指定任何参数

      1.>

      #一、不指定method参数
       
      #1.用常数填充
      print (df1.fillna(100))
      print ("-----------------------")
      print (df1)

      运行结果:

      2.  用字典填充

      #2.用字典填充
      df1.fillna({0:10,1:20,2:30})

      运行结果:

      二、指定inplace参数

      #二、指定inplace参数
       
      print (df1.fillna(0,inplace=True))
      print ("-------------------------")
      print (df1)

      运行结果:

      三、指定method参数

      1.method>

      #三、指定method参数
       
      df2 = pd.DataFrame(np.random.randint(0,10,(5,5)))
      df2.iloc[1:4,3] = NaN
      df2.iloc[2:4,4] = NaN
      df2

      运行结果:

      #1.method = 'ffill'/'pad':用前一个非缺失值去填充该缺失值
       
      df2.fillna(method='ffill')

      运行结果:

      2.method = 'bflii'/'backfill':用下一个非缺失值填充该缺失值

      #2.method = 'bflii'/'backfill':用下一个非缺失值填充该缺失值
       
      df2.fillna(method='bfill')

      运行结果:

      四、指定limit参数

      #四、指定limit参数
       
      #用下一个非缺失值填充该缺失值
      #只填充2个
       
      df2.fillna(method='bfill', limit=2)

      运行结果: 

      五、指定axis参数

      #五、指定axis参数
       
      df2.fillna(method="ffill", limit=1, axis=1)

      运行结果:

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持易采站长站。