当熊猫无法将数据字符串NA / ND识别为缺失值时该怎么办

2018年12月5日

熊猫价值缺失

在实验数据集中,空白可以补充NA,NA(未分析)或ND,ND(未检测到)。 在熊猫中,NA和ND仅被识别为字符串(对象),因此无法按原样使用dropna(),fillna()和isull()函数批量处理缺失值。

以下是熊猫的缺失值:

  • 为NaN
  • 不包含
  • 数学南

字符串NA和ND需要转换为上述之一。

NA和ND的处理

创建样本数据,包括NA,ND和NaN。

在[1]中:导入numpy为np导入熊猫为pd df = pd.DataFrame({'A':[1,'ND',2,3],'B':[4,'NA',5,6 ],'C':[7,'ND',None,np.nan]})出[1] ABC 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

没有ne和np.nan被识别并计为缺失值,但是ND和NA为False。
notull():如果缺少该值,则返回True
notull.sum():汇总缺少的值

输入[2]:df.isnull()输出[2]:ABC 0错误错误错误1错误错误错误2错误错误True 3错误错误True输入[3]:df.isnull()。Sum()输出[3] :A 0 B 0 C 2 dtype:int64

用替换功能替换字符串ND

在[4]中:df = df.replace('ND',np.nan)在[4]中:A B C 0 1 4 7 1 NaN NA NaN 2 2 5 NaN 3 3 5 NaN

现在可以应用notull()和fillna()。

输入[5]:df.isnull()输出[5]:ABC 0错误错误错误1正确错误True 2错误错误True 3错误错误True输入[6]:df.isnull()。总和()输出[6] :A 2 B 0 C 2 dtype:int64输入[7]:df.fillna(10)输出[7]:ABC 0 1 4 7 1 10 NA 10 2 2 5 10 3 3 5 10