根据两个独立的唯一列计算NaN的数量

时间:2015-02-21 05:25:23

标签: python

我是python的新手,我试图阅读多本书和网站来解决这个问题,但我不知所措。我有一个csv文件,我正在阅读python,其中包含美国84个气候站的降水数据。我需要计算每个站每年NaN的数量。这是我的文件的简短示例:

station_id year month element 1 2 3 4  5 6 7   8 9   10 etc.
210018     1916 1     PRCP    0 0 1 10 5 4 0   3 NaN NaN 
210018     1916 2     PRCP    1 4 5 11 3 4 NaN 4 2   1
210019     1917 1     PRCP    1 0 4 55 0 0 0   1 1   3
210019     1917 2     PRCP    8 9 9 12 9 9 9   1 3   4

station_id等是列名,每个station_id我有100年(1910-2010)和12个月。元素总是PRCP和1 2 3 4 5等代表一个月中的天数并延伸到31.所以在上面的例子中,我需要发现在1916年有2100个站点的3个NaN&和如果有人可以帮助甚至指向我可以进一步研究的网站,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用list.count()计算连续多少个NaN,并将按年份(或电台或其他任何内容)键入的字典中的计数相加。

from csv import reader
nan_counts = {}
with open('/path/to/file') as file:
    file_reader = reader(file)
    next(file_reader)  # Skip the first row of headers
    for row in file_reader:
        year, data = row[1], row[4:]
        nan_counts[year] = data.count('NaN') + nan_counts.get(year, 0)