【问题标题】:Finding SUM, AVG, and DIFF of columns using Python with a CSV使用带有 CSV 的 Python 查找列的 SUM、AVG 和 DIFF
【发布时间】:2020-11-15 02:56:22
【问题描述】:

在 Python 3.8 上使用类似于以下内容的 CSV:

  • Column_0>>>>>>>>>Column_1>>>>>>Column_2>>>>Column_3>>>>>Column_4
  • Some_Numbers0>>>Some_String1>>>Some_String2>Some_Numbers3>>Some_Numbers4

现在,Column_3 和 Column_4 中的数字需要求 SUM、AVG,并求它们总和的差异。

我目前一直在尝试打印两个总和。这是我已经走了多远:

import csv
import decimal

with open("sample.csv") as myFile:
    reader = csv.DictReader(myFile)
    print(sum(float(line["Column_3"]) for line in reader))
    print(sum(float(line["Column_4"]) for line in reader))

使用这个,Column_3 的总打印,但 Column_4 我得到一个“0”。删除 Column_3 的 prin 行,然后我得到 Column_4 的总数就好了。我也试过:

import csv
import decimal

with open("sample.csv") as myFile:
    total = 0
    for line in csv.DictReader(myFile):
        total += int(line["Column_3"])
    print(total)
but i get

Traceback (most recent call last):
  File "some file pathway", line 7, in <module>
    total += int(line["Column_3"])
ValueError: invalid literal for int() with base 10: '1345.67'

哪个数字代表该列_3的第一个数字值。

我被难住了。任何帮助表示赞赏。我确定我会带着有关查找 AVG 的问题返回,然后使用它们的总数来查找它们的差异,所有这些都需要从同一个程序运行打印,但在这里我已经卡住了。

【问题讨论】:

    标签: python csv average difference


    【解决方案1】:

    您的阅读器对象只能通过 CSV 文件一次,因为您使用 col 3 浏览列表,它不会为 col 4 打印,因为没有什么可读取的了。您的第二种方法很好,只需将 int() 替换为 float() 因为您使用小数

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多