【问题标题】:Count the occurrences in a csv file计算 csv 文件中的出现次数
【发布时间】:2019-02-15 23:06:32
【问题描述】:

我需要找出洛杉矶发生龙卷风最多的年份。我已经想出了如何打印它,但是我该如何计算它,然后打印出龙卷风最多的年份?

import csv

with open('tornadoes.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:

        if line_count == 0:
            pass

        else:
            if row[idx['st']]=="LA":
                print(row[idx['st']], row[idx['yr']])

        line_count +=1

【问题讨论】:

标签: python python-3.x


【解决方案1】:

你可以使用collections.Counter.most_common方法:

import csv
from collections import Counter

with open('tornadoes.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    next(csv_reader)
    print(Counter(row[idx['yr']] for row in csv_reader if row[idx['st']] == 'LA').most_common())

【讨论】:

  • 谢谢!这显示了每年发生的次数,但它最终打印了每年的 TOTAL。
【解决方案2】:

您可以做的是制作一本字典,并以每年为关键字。检查文件后,您可以返回最大计数。

import csv
import operator

with open('tornadoes.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')

    line_count, num_tornados = 0, {}

    for row in csv_reader:

        if line_count == 0:
            pass

        else:
            if row[idx['st']]=="LA":
                if row[idx['yr']] in num_tornados:
                    num_tornados[row[idx['yr']]] += 1
                else:
                    num_tornados[row[idx['yr']]] = 1

        line_count +=1
    print(max(num_tornados.iteritems(), key=operator.itemgetter(1))[0])

【讨论】:

  • 谢谢!反正有没有通过python来做到这一点而无需导入运算符?我唯一可以导入的两件事是数学和 csv
  • 您可能没有安装操作员。只需运行python -m pip install operator 即可导入运算符!
  • 哦不,我不是这个意思,对不起!我的意思是我们不能导入任何不是数学或 csv 的东西。它不能说导入(无论我想要什么包)
猜你喜欢
  • 2022-01-18
  • 2016-08-22
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 2013-12-23
相关资源
最近更新 更多