呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客
还是可以先预习下前面的知识点耶:
pandas基础知识(1)
pandas基础知识(2)
pandas基础知识(3)
pandas基础知识(4)
#今天这篇介绍的是如何在DataFrame中处理缺失值(nan值)#
如何处理缺失值?
①对含有nan值的行或者列进行删除
操作
用的是dropna(axis='',how='')
函数,其中axis=0时逐行操作,删除的是行,axis=1则删除的是列;
how=’any’时表示只要含有nan值,这一行或者这一列就会被删除,how=’all’时表示只有该行或者该列所有值都是nan时才会被删除。
import pandas as pd
import numpy as np
dates=pd.date_range('20130101',periods=6) #生成时间序列
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
print(df)
print(df.dropna(axis=0,how='any')) #逐行操作,丢掉的是行
print(df.dropna(axis=1,how='any')) #逐列操作,丢掉的是列
print(df.dropna(axis=0,how='all'))
运行结果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
A B C D
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #含有nan的行被删除了
A D
2013-01-01 0 3
2013-01-02 4 7
2013-01-03 8 11
2013-01-04 12 15
2013-01-05 16 19
2013-01-06 20 23 含有nan的列被删除了
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23
②利用fillna(value='')
函数给nan值填充数据
print(df)
print(df.fillna(value=0)) #给nan值填充数据
运行结果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
A B C D
2013-01-01 0 0.0 2.0 3
2013-01-02 4 5.0 0.0 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #填充了0
③判断
是否有缺失值
print(df)
print(df.isnull()) #判断哪一些是缺失值
print(np.any(df.isnull())==True) #判断是否有缺失值
运行结果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
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 #返回True的是缺失值
True #该DataFrame中确实有缺失值
这一篇内容相对比较少,但是还是比较实用,经常会遇到的,希望对你们有帮助,记得点赞,关注我哟~