1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #!/usr/bin/python2
# -*- coding:utf-8 -*-
import sys
import csv
from itertools import izip
from collections import defaultdict
MAXI = 10
def histogram(iterable):
hist = defaultdict(int)
for integer in iterable:
try:
idx = int(integer)
except ValueError:
continue
hist[idx if idx <= MAXI else MAXI + 1] += 1
return map(str, (hist.get(idx, 0) for idx in range(MAXI + 2)))
def csv_with_stat(filename):
with open(filename, "r") as fobj:
columns = izip(*csv.reader(fobj, delimiter=";"))
ans = list()
headers = (
[""] * (MAXI + 2),
[""] * (MAXI + 2),
["Nombre de {}".format(i) for i in range(MAXI + 1)] \
+ ["Supérieur à {}".format(MAXI)],
)
for h, c in izip(headers, columns):
ans.append(list(c) + [""] + h)
for c in columns:
ans.append(list(c) + [""] + histogram(c))
writer = csv.writer(sys.stdout, delimiter=";")
writer.writerows(izip(*ans))
if __name__ == '__main__':
path = sys.argv[1]
csv_with_stat(path) |
Partager