是否可以让Python计算“NaN'”的数量? (作为字符串/文本)在csv文件中?尝试使用熊猫' read_csv
,但是一些有空白的列也被视为NaN。我知道的唯一工作方法是使用excel find' NaN'作为价值观。
有谁知道其他方法?提前谢谢!
答案 0 :(得分:5)
您可以使用pd.read_csv
,但需要两个参数:na_values
和keep_default_na
。
na_values
:要识别为NA / NaN的其他字符串。如果dict通过,具体 每列NA值。默认情况下,将解释以下值 作为NaN:'','#N / A','#N / A N / A','#N',' - 1。#IND',' - 1。#QNAN',' - 'N', '-nan','1。#IND','1。#QNAN','N / A','NA','NULL','NaN','nan'`。
keep_default_na
:如果指定了na_values且
keep_default_na
为False,则为默认值 NaN值被覆盖,否则它们会被附加到。
所以在你的情况下:
pd.read_csv('path/to/file.csv', na_values='NaN', keep_default_na=False)
如果你想要更多一点"自由主义"那么你可能想要像na_values=['nan', 'NaN']
这样的东西 - 关键是这些将被严格解释。
一个例子 - 假设您有以下CSV文件,包含1个文字NaN和两个空格:
import pandas as pd
import numpy as np
df = pd.read_csv('input/sample.csv', na_values='NaN', keep_default_na=False)
print(np.count_nonzero(df.isnull().values))
# 1
答案 1 :(得分:1)
<强>设置强>
考虑一个名为tst.csv
的csv文件,如下所示:
h1,h2,h3
NaN,1,
2,3,NaN
5,6,9
NaN,1,
2,3,NaN
5,6,9
<强>解决方案强>
使用open
和str.count
with open('tst.csv') as f:
c = f.read().count('NaN')
print(c)
4
答案 2 :(得分:0)
df.isna().sum()
它将列出每列的NaN数量