检查符号NaN是字符串还是python保留符号以查找缺少的值
我用python阅读了一个大的csv文件。没有关于数据集以及缺失值的编码方式的说明 如果我想用0替换所有缺少的值,我想我可以使用函数检查符号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
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
,因此您无需手动转换它们