Python について質問です
私はPythonの初心者です。
今Python でCSVのファイルを読んで数値だけ(数値以外に文字列や空白などがあります)を計算処理出来なくて困っています。教えて頂けませんか?
質問は、BB.csvというファイルの数値だけの合計と平均を計算したいです。
私のコードは以下です。
# coding: utf-8
import csv
import re
import string
DATAFILE = 'BB.csv'
class UnicodeDictReader(csv.DictReader):
def __init__(self, f, fieldnames=None):
csv.DictReader.__init__(
self, f, fieldnames)
def main():
total = 0
all_sum = 0
line_num = 0
with open(DATAFILE) as csvfile:
reader = UnicodeDictReader(csvfile)
for record in reader:
# 値を数値で取得
A = int(record['38186'])
B = int(record['38181'])
C = int(record['38143'])
item_total = A + B + C
total = item_total
all_sum += item_total
line_num += 1
average = all_sum / reader.line_num
print(" %d + %d + %d = %d " % ( A, B, C, total))
print(u"合計 %d " % all_sum)
print(u"平均 %d " % average)
if __name__ == '__main__':
main()
BB.csvは以下です、
38186,38181,38143
1,1,4
1,1,4
,,
,,
2020,2020,2020
1412,1412,1412
625,625,625
75,75,75
75,75,75
75,75,75
75,75,75
4,4,4
4,4,4
4,4,4
7828,7828,7828
X,,
0,0,0
0,0,0
○,,
0,0,0
0,0,0
0,0,0
,,AAA
0,0,0
0,0,0
0,0,0
,BBB,
0,0,0
0,0,0
0,0,0
,,
0,0,0
,,
0,0,0
0,0,0
,,
0,0,0
0,0,0
750,750,750
400,400,400
400,400,400
,,
0,0,0
0,0,0
0,0,0
,,
0,0,0
0,0,0
0,0,0
0,0,0
0,0,0
0,0,0
0,0,0
6,6,6
6,6,6
18,18,18
18,18,18
18,18,18
18,18,18
18,18,18
16,16,16
16,16,16
6,6,6
6,6,6
18,18,18
18,18,18
18,18,18
18,18,18
18,18,18
11,11,11
11,11,11
11,11,11
3,3,3
3,3,3
3,3,3
3,3,3
4,4,4
4,4,4
3,3,3
3,3,3
16,16,16
16,16,16
16,16,16
14,8,11
8,14,11
8,14,11
8,14,11
8,14,11
8,14,11
8,14,11
8,14,11
8,14,11
15,15,15
お礼
回答ありがとうございます。まあsin(x)ですら怖いかと言われるとそれはないと言えそうですが、関数に放り込んで行列の積を計算する場合、列数と行数が違うと問題ですが、気を付けるのはそこだけともい言えそうです。 行列の積の計算って以下のようにまるで電卓をたたいているようなイメージでやっていたので。 sum=0 do i=5 do j=6 do m=1,4 sum=sum+a(i,m)*b(m,j) enddo enddo endo