Pandas——处理丢失的数据(含NaN的数据)

1.构造DataFrame(部分含有NaN)

有时候我们导入或处理数据, 会产生一些空的或者是 NaN 数据,如何删除或者是填补这些 NaN 数据就是我们今天所要提到的内容

import numpy as np
import pandas as pd
dates = pd.date_range('20200316',periods = 5)
df = pd.DataFrame(np.arange(30).reshape((5,6)), index = dates, columns = ['A','B','C','D','E','F'])
df.iloc[2,1] = np.nan
df.iloc[3,4] = np.nan
print(df)

#输出
             A     B   C   D     E   F
2020-03-16   0   1.0   2   3   4.0   5
2020-03-17   6   7.0   8   9  10.0  11
2020-03-18  12   NaN  14  15  16.0  17
2020-03-19  18  19.0  20  21   NaN  23
2020-03-20  24  25.0  26  27  28.0  29

2.用dropna()删除含有NaN的行或列

如果想直接去掉有 NaN 的行或列, 可以使用 dropna

t = df.dropna(axis = 0,how = 'any')  # 0: 对行进行操作; 1: 对列进行操作  any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop
print(t)

#输出
             A     B   C   D     E   F
2020-03-16   0   1.0   2   3   4.0   5
2020-03-17   6   7.0   8   9  10.0  11
2020-03-20  24  25.0  26  27  28.0  29

3.用fillna()替换NaN

v = df.fillna(0)    #用0替换含有NaN的值
print(v)

#输出
             A     B   C   D     E   F
2020-03-16   0   1.0   2   3   4.0   5
2020-03-17   6   7.0   8   9  10.0  11
2020-03-18  12   0.0  14  15  16.0  17
2020-03-19  18  19.0  20  21   0.0  23
2020-03-20  24  25.0  26  27  28.0  29

4.用isnull()判断是否含有NaN

判断是否有缺失数据 NaN, 为 True 表示缺失数据

w = df.isnull()
print(w)

#输出
                A      B      C      D      E      F
2020-03-16  False  False  False  False  False  False
2020-03-17  False  False  False  False  False  False
2020-03-18  False   True  False  False  False  False
2020-03-19  False  False  False  False   True  False
2020-03-20  False  False  False  False  False  False

检测在数据中是否存在 NaN, 如果存在就返回 True:

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

#输出
True
发布了143 篇原创文章 · 获赞 388 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/104910240