Поиск суммы, среднего значения и разницы столбцов с помощью Python с помощью CSV

#python #csv #average #difference

#python #csv #среднее #разница

Вопрос:

Работа с CSV на Python 3.8, которая выглядит примерно так:

  • 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 total, но Column_4 я получаю «0». Удалите строку prin для Column_3, тогда я получу итоговое значение 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'
  

Какое это число представляет первое числовое значение этого column_3.

Я в тупике. Любая помощь приветствуется. Я уверен, что вернусь с вопросами о поиске среднего значения, а затем использую их итоги, чтобы найти их различия, все они должны печатать из одной и той же программы, но здесь я уже застрял.

Ответ №1:

ваш объект reader может проходить через файл CSV только один раз, потому что вы просматриваете список с col 3, он не будет печатать для col 4, потому что читать больше нечего. Ваш второй подход был бы хорош, просто замените int() на float(), потому что вы работаете с десятичными числами