检查符号NaN是字符串还是python保留符号以查找缺少的值

检查符号NaN是字符串还是python保留符号以查找缺少的值,python,python-import,Python,Python Import,我用python阅读了一个大的csv文件。没有关于数据集以及缺失值的编码方式的说明 如果我想用0替换所有缺少的值,我想我可以使用函数fillna()。但是,我的问题是:我认为这个函数fillna(),可能是其他对缺失值进行操作的函数只有在数据帧中的符号NaN是python保留符号时才能识别缺失值,对吗?如果NaN是一个字符串,即“NaN”,那么函数fillna()将无法检测到该字符串,对吗 我做了一个实验 import numpy as np a = pd.DataFrame({'a':[1,2

我用python阅读了一个大的csv文件。没有关于数据集以及缺失值的编码方式的说明

如果我想用0替换所有缺少的值,我想我可以使用函数
fillna()
。但是,我的问题是:我认为这个函数
fillna()
,可能是其他对缺失值进行操作的函数只有在数据帧中的符号
NaN
是python保留符号时才能识别缺失值,对吗?如果
NaN
是一个字符串,即
“NaN”
,那么函数
fillna()
将无法检测到该字符串,对吗

我做了一个实验

import numpy as np
a = pd.DataFrame({'a':[1,2,'NaN'], 'b':['NaN',1,np.nan]})
a.fillna("")
在这里,我尝试用空格替换缺少的值。但是正如您所看到的,这个
fillna()
函数只捕获
np.nan
,但无法将字符串
“nan”
识别为缺少的值。这是可以理解的

以下是我的问题:函数
read\u csv
或python中的其他导入函数(我指的是encode)如何处理原始数据中缺少的值?当这些导入函数读取csv或txt文件(或其他格式)时,如果它们“看到”原始数据集中的符号,它们会自动使用保留符号
NaN
替换该原始数据段吗?例如,当他们读取原始数据时,如果他们看到一个空白,或看到一个像“\N”这样的符号,他们会怎么做?我猜如果他们看到“\N”,他们会把这个符号变成一个字符串,对吗?但如果他们看到空白,他们会怎么做

第二个问题:在我的数据集中,可能有多个符号表示缺少的值,例如,python保留符号
NaN
(读取原始数据时自动生成)表示缺少的值;字符串
“\N”
也表示缺少的值;空白也表示缺少值。因此,我需要编写一个函数,将所有这些不同类型的缺失值符号转换为一个,即python保留符号
NaN
。我做了以下几件事

def nullify(x):
    if x == "\\N":
        return "NaN"
    else:
        return x
然后我发现我有一堆
“NaN”
字符串,而不是python保留符号
NaN
,这使得像
fillna()
这样的函数无法捕捉到这一点。我想知道写这个
nullify()
的正确方法是否正确

import numpy as np
def nullify(x):
    if x == "\\N":
        return np.nan
    else:
        return x
这是我第一次开始玩弄真实世界的原始数据,许多有趣的事情开始出现。感谢您的建议。

pandas.read\u csv()
接受关键字参数
na\u值
。引述:

na_值:标量、str、类似列表或dict,默认无其他值 要识别为NA/NaN的字符串。如果dict通过,则按NA列指定 价值观默认情况下,以下值被解释为NaN:“”, "不适用","不适用","不适用","不适用","不适用","1,"不适用","不适用","不适用","不适用, '1.#IND','1.#QNAN','N/A','NA','NULL','NaN','NaN'`

在CSV中读取时,将数据集中所有类型的nan添加到
na_值
,会将它们全部转换为单个类型的
nan
,因此您无需手动转换它们。

pandas.read_CSV()
采用关键字参数
na_值
。引述:

na_值:标量、str、类似列表或dict,默认无其他值 要识别为NA/NaN的字符串。如果dict通过,则按NA列指定 价值观默认情况下,以下值被解释为NaN:“”, "不适用","不适用","不适用","不适用","不适用","1,"不适用","不适用","不适用","不适用, '1.#IND','1.#QNAN','N/A','NA','NULL','NaN','NaN'`

在CSV中读取时,将数据集中所有类型的nan添加到
na_值
,会将它们全部转换为单个类型的
nan
,因此您无需手动转换它们