pandas 有没有办法将 NA 字段作为字符串而不是 NaN 导入?

数据挖掘 熊猫
2021-10-05 00:13:58

我正在做一个 Kaggle 挑战,数据中的很多条目都是 NA。但是,根据数据描述,这实际上并不意味着“缺少数据”,它意味着“不适用”之类的东西,从某种意义上说,它只是没有那种质量(例如,没有地下室)。

但是,当我使用 pandas 使用 read_csv() 导入数据,然后使用 head() 查看它时,它会显示所有应该为 NA 的东西的 NaN(与 LibreOffice 中的电子表格相比)。

我知道如何将给定列的一个值替换为另一个值,但仍然存在问题。如果只有一个缺失值,通常应该输入 NaN。所以,如果它同时导入“NA”和一个空白单元格作为 NaN,我不知道它是哪个。

这可能不是一个大问题,因为无论如何我可能想用常见的东西替换实际的缺失值,但很高兴知道。我知道我也可以使用常规 python 进入 csv 并重命名那些实际的“NA”,但这很麻烦。有没有办法可以将某些列作为字符串导入?

2个回答

使用 pandas.read_csv() 选项:

d = pandas.read_csv('foo.csv', keep_default_na=False)

na_values : 标量、str、list-like 或 dict,默认为 None

要识别为 NA/NaN 的附加字符串。如果 dict 通过,特定的 >per->column NA 值。默认情况下,以下值被解释为 >NaN:''、'#N/A'、'#N/AN/A'、'#NA'、'-1.#IND'、'-1.#QNAN' , '-NaN', '-nan', >'1.#IND', '1.#QNAN', 'N/A', 'NA', 'NULL', 'NaN', 'n/a', '南','空'。

keep_default_na : 布尔值,默认 True

如果指定了 na_values 并且 keep_default_na 为 False,则默认 NaN >值将被覆盖,否则将附加到它们。

这里

我认为你可以做这样的事情,这可能有助于指定数据类型。

d = pandas.read_csv('foo.csv', dtype={'ColumnName': 'S10'})

但是,我认为将所有这些值“查找并替换”为空白单元格或“不可用”之类的东西然后解析文件是一个更明智的主意,因为这种数据清理最好在导入之前完成,而不是在导入和处理之后完成