计算" NaN"的数量csv中的(不是零或空格)

时间:2017-10-06 19:20:48

标签: python python-3.x pandas nan

是否可以让Python计算“NaN'”的数量? (作为字符串/文本)在csv文件中?尝试使用熊猫' read_csv,但是一些有空白的列也被视为NaN。我知道的唯一工作方法是使用excel find' NaN'作为价值观。

有谁知道其他方法?提前谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用pd.read_csv,但需要两个参数:na_valueskeep_default_na

  1. na_values
  2.   

    要识别为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'`。

    1. keep_default_na
    2.   

      如果指定了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和两个空格:

      enter image description here

      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

<强>解决方案
使用openstr.count

with open('tst.csv') as f:
    c = f.read().count('NaN')

print(c)

4

答案 2 :(得分:0)

df.isna().sum()

它将列出每列的NaN数量