#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(), потому что вы работаете с десятичными числами