使用 Python 和 CSV 查找列的 SUM、AVG 和 DIFF
Finding SUM, AVG, and DIFF of columns using Python with a CSV
在 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'
哪个数字代表那个column_3的第一个数字值。
我被难住了。任何帮助表示赞赏。我确定我会带着关于查找 AVG 的问题返回,然后使用它们的总数来找出它们的差异,所有这些都需要从同一个程序打印 运行 但我已经卡住了。
你的 reader 对象只能通过 CSV 文件一次,因为你通过第 3 列的列表不会打印第 4 列,因为没有什么可读的了。您的第二种方法很好,只需将 int() 替换为 float() 因为您使用的是 decimals
在 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'
哪个数字代表那个column_3的第一个数字值。
我被难住了。任何帮助表示赞赏。我确定我会带着关于查找 AVG 的问题返回,然后使用它们的总数来找出它们的差异,所有这些都需要从同一个程序打印 运行 但我已经卡住了。
你的 reader 对象只能通过 CSV 文件一次,因为你通过第 3 列的列表不会打印第 4 列,因为没有什么可读的了。您的第二种方法很好,只需将 int() 替换为 float() 因为您使用的是 decimals