# Autor: Stanislav Geidl # C2184 Uvod do programovani v Pythonu # Domaci ukol 07 # Ukolem je dopsat funkce csv_reader, ktera nacte soubor a ulozi dva specifikovane sloupce z jednoho radku do N-tice (tuple) a vsechny # radky ulozi do listu a ty vrati, a contingency_table, ktera vytvori kontingencni tabulku. Funkce print_contingency_table vam ji pak umozni vytisknout. # http://cs.wikipedia.org/wiki/Kontingen�n%C3%AD_tabulka # Napr: """ ;1;2;3;sum A;40;40;49;129 B;45;46;40;131 C;34;41;46;121 D;41;37;41;119 sum;160;164;176;500 """ def csv_reader(filename, column1, column2): """ >>> print(csv_reader("homework07.csv", 5, 4)) [('C', '2'), ('D', '2'), ('D', '2'), ('C', '3'), ('D', '2'), ('C', '2'), ('C', '1'), ('B', '1'), ('B', '3'), ('B', '3'), ('A', '1'), ('C', '3'), ('B', '3'), ('B', '1'), ('A', '3'), ('A', '3'), ('A', '2'), ('C', '3'), ('B', '3'), ('A', '1'), ('A', '3'), ('A', '2'), ('A', '3'), ('D', '1'), ('B', '3'), ('C', '3'), ('A', '1'), ('B', '1'), ('C', '2'), ('C', '2'), ('A', '3'), ('A', '3'), ('C', '2'), ('A', '2'), ('A', '2'), ('B', '1'), ('B', '2'), ('A', '3'), ('A', '2'), ('B', '3'), ('A', '2'), ('B', '2'), ('B', '3'), ('B', '2'), ('C', '1'), ('B', '3'), ('C', '3'), ('C', '1'), ('C', '1'), ('A', '1'), ('B', '1'), ('C', '2'), ('D', '1'), ('B', '2'), ('A', '3'), ('A', '2'), ('C', '3'), ('A', '3'), ('D', '1'), ('A', '3'), ('A', '1'), ('D', '3'), ('D', '1'), ('A', '3'), ('C', '1'), ('B', '3'), ('B', '3'), ('A', '1'), ('B', '1'), ('B', '1'), ('A', '1'), ('D', '3'), ('B', '3'), ('A', '2'), ('C', '2'), ('B', '3'), ('B', '1'), ('C', '2'), ('A', '1'), ('A', '3'), ('D', '3'), ('A', '3'), ('B', '1'), ('D', '1'), ('C', '1'), ('D', '2'), ('B', '1'), ('C', '1'), ('B', '2'), ('C', '3'), ('B', '1'), ('D', '2'), ('B', '3'), ('C', '3'), ('A', '2'), ('D', '1'), ('B', '2'), ('A', '1'), ('A', '1'), ('D', '3'), ('D', '3'), ('C', '2'), ('D', '2'), ('B', '2'), ('D', '3'), ('C', '2'), ('B', '1'), ('A', '2'), ('C', '2'), ('C', '2'), ('A', '3'), ('C', '3'), ('C', '3'), ('D', '1'), ('C', '2'), ('C', '1'), ('B', '1'), ('B', '1'), ('D', '3'), ('B', '1'), ('A', '1'), ('D', '1'), ('D', '3'), ('D', '3'), ('A', '3'), ('A', '1'), ('B', '2'), ('D', '2'), ('D', '3'), ('D', '1'), ('A', '2'), ('D', '2'), ('D', '1'), ('C', '2'), ('C', '2'), ('C', '2'), ('C', '1'), ('C', '1'), ('B', '1'), ('C', '2'), ('C', '3'), ('D', '1'), ('B', '3'), ('D', '2'), ('B', '2'), ('C', '2'), ('A', '3'), ('B', '2'), ('C', '3'), ('D', '2'), ('B', '3'), ('D', '2'), ('B', '2'), ('A', '2'), ('C', '1'), ('C', '3'), ('C', '1'), ('A', '2'), ('A', '2'), ('D', '2'), ('C', '2'), ('A', '3'), ('D', '2'), ('D', '1'), ('D', '2'), ('C', '2'), ('C', '3'), ('A', '1'), ('D', '1'), ('B', '3'), ('D', '1'), ('C', '2'), ('C', '1'), ('D', '1'), ('C', '1'), ('D', '3'), ('C', '3'), ('D', '2'), ('D', '1'), ('C', '1'), ('B', '1'), ('B', '1'), ('C', '3'), ('A', '3'), ('C', '1'), ('C', '1'), ('C', '3'), ('D', '3'), ('C', '2'), ('A', '3'), ('A', '3'), ('B', '1'), ('B', '2'), ('C', '3'), ('B', '2'), ('C', '1'), ('A', '2'), ('D', '2'), ('C', '2'), ('C', '3'), ('C', '3'), ('C', '2'), ('A', '2'), ('A', '1'), ('B', '1'), ('C', '2'), ('C', '2'), ('B', '2'), ('D', '1'), ('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'), ('D', '1'), ('D', '2'), ('D', '3'), ('C', '1'), ('B', '3'), ('D', '2'), ('A', '2'), ('D', '3'), ('B', '1'), ('A', '3'), ('A', '1'), ('A', '3'), ('D', '2'), ('C', '3'), ('A', '3'), ('B', '1'), ('B', '2'), ('A', '2'), ('B', '2'), ('A', '1'), ('B', '2'), ('C', '2'), ('D', '1'), ('C', '3'), ('D', '2'), ('C', '1'), ('A', '2'), ('A', '2'), ('B', '3'), ('B', '1'), ('A', '3'), ('B', '1'), ('A', '2'), ('D', '2'), ('C', '2'), ('A', '3'), ('D', '3'), ('C', '2'), ('A', '1'), ('C', '3'), ('B', '3'), ('C', '3'), ('D', '1'), ('D', '2'), ('D', '3'), ('B', '1'), ('A', '3'), ('D', '1'), ('C', '1'), ('B', '3'), ('C', '3'), ('A', '2'), ('A', '3'), ('C', '3'), ('C', '1'), ('C', '1'), ('A', '3'), ('A', '2'), ('B', '1'), ('D', '1'), ('A', '3'), ('A', '3'), ('A', '3'), ('A', '2'), ('D', '1'), ('A', '3'), ('B', '2'), ('B', '3'), ('A', '2'), ('D', '2'), ('B', '2'), ('B', '2'), ('B', '1'), ('A', '2'), ('A', '3'), ('C', '1'), ('B', '1'), ('A', '1'), ('D', '2'), ('A', '1'), ('D', '2'), ('B', '2'), ('A', '2'), ('C', '1'), ('B', '1'), ('A', '3'), ('C', '3'), ('B', '1'), ('B', '2'), ('B', '1'), ('A', '1'), ('B', '2'), ('B', '3'), ('D', '2'), ('A', '1'), ('B', '1'), ('B', '3'), ('C', '1'), ('B', '2'), ('B', '2'), ('C', '3'), ('A', '2'), ('B', '3'), ('D', '3'), ('D', '2'), ('D', '1'), ('D', '2'), ('D', '3'), ('C', '2'), ('C', '2'), ('C', '3'), ('B', '2'), ('D', '3'), ('A', '1'), ('C', '3'), ('B', '2'), ('C', '1'), ('A', '2'), ('B', '1'), ('A', '1'), ('C', '2'), ('C', '1'), ('B', '2'), ('B', '2'), ('D', '3'), ('A', '3'), ('B', '1'), ('A', '2'), ('D', '1'), ('B', '3'), ('D', '1'), ('D', '1'), ('A', '2'), ('A', '1'), ('D', '2'), ('B', '2'), ('C', '2'), ('A', '1'), ('A', '1'), ('A', '3'), ('C', '3'), ('D', '1'), ('D', '3'), ('D', '3'), ('B', '3'), ('B', '3'), ('D', '1'), ('A', '3'), ('D', '2'), ('D', '3'), ('B', '3'), ('D', '3'), ('B', '2'), ('A', '1'), ('C', '3'), ('D', '3'), ('B', '3'), ('B', '1'), ('A', '2'), ('D', '3'), ('B', '3'), ('C', '3'), ('B', '1'), ('D', '2'), ('B', '2'), ('C', '3'), ('D', '3'), ('C', '1'), ('C', '1'), ('B', '3'), ('D', '3'), ('C', '3'), ('B', '2'), ('D', '3'), ('A', '3'), ('B', '1'), ('D', '2'), ('D', '3'), ('B', '2'), ('B', '3'), ('A', '3'), ('B', '3'), ('C', '2'), ('C', '3'), ('B', '2'), ('C', '2'), ('B', '1'), ('A', '3'), ('D', '3'), ('A', '1'), ('A', '1'), ('A', '1'), ('B', '2'), ('D', '1'), ('A', '3'), ('A', '3'), ('B', '2'), ('B', '2'), ('A', '2'), ('C', '3'), ('D', '3'), ('D', '1'), ('A', '3'), ('D', '3'), ('B', '3'), ('D', '2'), ('B', '1'), ('D', '1'), ('D', '3'), ('B', '1'), ('C', '3'), ('C', '3'), ('C', '2'), ('B', '3'), ('D', '1'), ('B', '2'), ('A', '1'), ('A', '1'), ('D', '2'), ('A', '2'), ('D', '1'), ('B', '1'), ('C', '3'), ('A', '2'), ('C', '1'), ('A', '1'), ('B', '3'), ('C', '2'), ('A', '2'), ('D', '1'), ('B', '2'), ('D', '3'), ('D', '1'), ('A', '1'), ('D', '1'), ('C', '3'), ('D', '3'), ('C', '3'), ('B', '1'), ('B', '3'), ('B', '3'), ('A', '1'), ('A', '3'), ('C', '1'), ('B', '2'), ('C', '3'), ('B', '2'), ('A', '3'), ('A', '2'), ('D', '2'), ('C', '2'), ('C', '2'), ('D', '1'), ('D', '1'), ('B', '1'), ('B', '2'), ('C', '3'), ('C', '3'), ('A', '2'), ('B', '3'), ('B', '2'), ('B', '2'), ('A', '3'), ('D', '2'), ('D', '3'), ('C', '2'), ('D', '3'), ('D', '2'), ('B', '3'), ('A', '3'), ('D', '3'), ('A', '3'), ('A', '1'), ('A', '1'), ('D', '1'), ('C', '2'), ('C', '1'), ('D', '3'), ('D', '1'), ('C', '1'), ('A', '1'), ('A', '1'), ('D', '3'), ('A', '2'), ('C', '3'), ('B', '1')] >>> print(csv_reader("homework07.csv", 4, 5)) [('2', 'C'), ('2', 'D'), ('2', 'D'), ('3', 'C'), ('2', 'D'), ('2', 'C'), ('1', 'C'), ('1', 'B'), ('3', 'B'), ('3', 'B'), ('1', 'A'), ('3', 'C'), ('3', 'B'), ('1', 'B'), ('3', 'A'), ('3', 'A'), ('2', 'A'), ('3', 'C'), ('3', 'B'), ('1', 'A'), ('3', 'A'), ('2', 'A'), ('3', 'A'), ('1', 'D'), ('3', 'B'), ('3', 'C'), ('1', 'A'), ('1', 'B'), ('2', 'C'), ('2', 'C'), ('3', 'A'), ('3', 'A'), ('2', 'C'), ('2', 'A'), ('2', 'A'), ('1', 'B'), ('2', 'B'), ('3', 'A'), ('2', 'A'), ('3', 'B'), ('2', 'A'), ('2', 'B'), ('3', 'B'), ('2', 'B'), ('1', 'C'), ('3', 'B'), ('3', 'C'), ('1', 'C'), ('1', 'C'), ('1', 'A'), ('1', 'B'), ('2', 'C'), ('1', 'D'), ('2', 'B'), ('3', 'A'), ('2', 'A'), ('3', 'C'), ('3', 'A'), ('1', 'D'), ('3', 'A'), ('1', 'A'), ('3', 'D'), ('1', 'D'), ('3', 'A'), ('1', 'C'), ('3', 'B'), ('3', 'B'), ('1', 'A'), ('1', 'B'), ('1', 'B'), ('1', 'A'), ('3', 'D'), ('3', 'B'), ('2', 'A'), ('2', 'C'), ('3', 'B'), ('1', 'B'), ('2', 'C'), ('1', 'A'), ('3', 'A'), ('3', 'D'), ('3', 'A'), ('1', 'B'), ('1', 'D'), ('1', 'C'), ('2', 'D'), ('1', 'B'), ('1', 'C'), ('2', 'B'), ('3', 'C'), ('1', 'B'), ('2', 'D'), ('3', 'B'), ('3', 'C'), ('2', 'A'), ('1', 'D'), ('2', 'B'), ('1', 'A'), ('1', 'A'), ('3', 'D'), ('3', 'D'), ('2', 'C'), ('2', 'D'), ('2', 'B'), ('3', 'D'), ('2', 'C'), ('1', 'B'), ('2', 'A'), ('2', 'C'), ('2', 'C'), ('3', 'A'), ('3', 'C'), ('3', 'C'), ('1', 'D'), ('2', 'C'), ('1', 'C'), ('1', 'B'), ('1', 'B'), ('3', 'D'), ('1', 'B'), ('1', 'A'), ('1', 'D'), ('3', 'D'), ('3', 'D'), ('3', 'A'), ('1', 'A'), ('2', 'B'), ('2', 'D'), ('3', 'D'), ('1', 'D'), ('2', 'A'), ('2', 'D'), ('1', 'D'), ('2', 'C'), ('2', 'C'), ('2', 'C'), ('1', 'C'), ('1', 'C'), ('1', 'B'), ('2', 'C'), ('3', 'C'), ('1', 'D'), ('3', 'B'), ('2', 'D'), ('2', 'B'), ('2', 'C'), ('3', 'A'), ('2', 'B'), ('3', 'C'), ('2', 'D'), ('3', 'B'), ('2', 'D'), ('2', 'B'), ('2', 'A'), ('1', 'C'), ('3', 'C'), ('1', 'C'), ('2', 'A'), ('2', 'A'), ('2', 'D'), ('2', 'C'), ('3', 'A'), ('2', 'D'), ('1', 'D'), ('2', 'D'), ('2', 'C'), ('3', 'C'), ('1', 'A'), ('1', 'D'), ('3', 'B'), ('1', 'D'), ('2', 'C'), ('1', 'C'), ('1', 'D'), ('1', 'C'), ('3', 'D'), ('3', 'C'), ('2', 'D'), ('1', 'D'), ('1', 'C'), ('1', 'B'), ('1', 'B'), ('3', 'C'), ('3', 'A'), ('1', 'C'), ('1', 'C'), ('3', 'C'), ('3', 'D'), ('2', 'C'), ('3', 'A'), ('3', 'A'), ('1', 'B'), ('2', 'B'), ('3', 'C'), ('2', 'B'), ('1', 'C'), ('2', 'A'), ('2', 'D'), ('2', 'C'), ('3', 'C'), ('3', 'C'), ('2', 'C'), ('2', 'A'), ('1', 'A'), ('1', 'B'), ('2', 'C'), ('2', 'C'), ('2', 'B'), ('1', 'D'), ('1', 'A'), ('2', 'A'), ('3', 'A'), ('1', 'B'), ('2', 'B'), ('1', 'D'), ('2', 'D'), ('3', 'D'), ('1', 'C'), ('3', 'B'), ('2', 'D'), ('2', 'A'), ('3', 'D'), ('1', 'B'), ('3', 'A'), ('1', 'A'), ('3', 'A'), ('2', 'D'), ('3', 'C'), ('3', 'A'), ('1', 'B'), ('2', 'B'), ('2', 'A'), ('2', 'B'), ('1', 'A'), ('2', 'B'), ('2', 'C'), ('1', 'D'), ('3', 'C'), ('2', 'D'), ('1', 'C'), ('2', 'A'), ('2', 'A'), ('3', 'B'), ('1', 'B'), ('3', 'A'), ('1', 'B'), ('2', 'A'), ('2', 'D'), ('2', 'C'), ('3', 'A'), ('3', 'D'), ('2', 'C'), ('1', 'A'), ('3', 'C'), ('3', 'B'), ('3', 'C'), ('1', 'D'), ('2', 'D'), ('3', 'D'), ('1', 'B'), ('3', 'A'), ('1', 'D'), ('1', 'C'), ('3', 'B'), ('3', 'C'), ('2', 'A'), ('3', 'A'), ('3', 'C'), ('1', 'C'), ('1', 'C'), ('3', 'A'), ('2', 'A'), ('1', 'B'), ('1', 'D'), ('3', 'A'), ('3', 'A'), ('3', 'A'), ('2', 'A'), ('1', 'D'), ('3', 'A'), ('2', 'B'), ('3', 'B'), ('2', 'A'), ('2', 'D'), ('2', 'B'), ('2', 'B'), ('1', 'B'), ('2', 'A'), ('3', 'A'), ('1', 'C'), ('1', 'B'), ('1', 'A'), ('2', 'D'), ('1', 'A'), ('2', 'D'), ('2', 'B'), ('2', 'A'), ('1', 'C'), ('1', 'B'), ('3', 'A'), ('3', 'C'), ('1', 'B'), ('2', 'B'), ('1', 'B'), ('1', 'A'), ('2', 'B'), ('3', 'B'), ('2', 'D'), ('1', 'A'), ('1', 'B'), ('3', 'B'), ('1', 'C'), ('2', 'B'), ('2', 'B'), ('3', 'C'), ('2', 'A'), ('3', 'B'), ('3', 'D'), ('2', 'D'), ('1', 'D'), ('2', 'D'), ('3', 'D'), ('2', 'C'), ('2', 'C'), ('3', 'C'), ('2', 'B'), ('3', 'D'), ('1', 'A'), ('3', 'C'), ('2', 'B'), ('1', 'C'), ('2', 'A'), ('1', 'B'), ('1', 'A'), ('2', 'C'), ('1', 'C'), ('2', 'B'), ('2', 'B'), ('3', 'D'), ('3', 'A'), ('1', 'B'), ('2', 'A'), ('1', 'D'), ('3', 'B'), ('1', 'D'), ('1', 'D'), ('2', 'A'), ('1', 'A'), ('2', 'D'), ('2', 'B'), ('2', 'C'), ('1', 'A'), ('1', 'A'), ('3', 'A'), ('3', 'C'), ('1', 'D'), ('3', 'D'), ('3', 'D'), ('3', 'B'), ('3', 'B'), ('1', 'D'), ('3', 'A'), ('2', 'D'), ('3', 'D'), ('3', 'B'), ('3', 'D'), ('2', 'B'), ('1', 'A'), ('3', 'C'), ('3', 'D'), ('3', 'B'), ('1', 'B'), ('2', 'A'), ('3', 'D'), ('3', 'B'), ('3', 'C'), ('1', 'B'), ('2', 'D'), ('2', 'B'), ('3', 'C'), ('3', 'D'), ('1', 'C'), ('1', 'C'), ('3', 'B'), ('3', 'D'), ('3', 'C'), ('2', 'B'), ('3', 'D'), ('3', 'A'), ('1', 'B'), ('2', 'D'), ('3', 'D'), ('2', 'B'), ('3', 'B'), ('3', 'A'), ('3', 'B'), ('2', 'C'), ('3', 'C'), ('2', 'B'), ('2', 'C'), ('1', 'B'), ('3', 'A'), ('3', 'D'), ('1', 'A'), ('1', 'A'), ('1', 'A'), ('2', 'B'), ('1', 'D'), ('3', 'A'), ('3', 'A'), ('2', 'B'), ('2', 'B'), ('2', 'A'), ('3', 'C'), ('3', 'D'), ('1', 'D'), ('3', 'A'), ('3', 'D'), ('3', 'B'), ('2', 'D'), ('1', 'B'), ('1', 'D'), ('3', 'D'), ('1', 'B'), ('3', 'C'), ('3', 'C'), ('2', 'C'), ('3', 'B'), ('1', 'D'), ('2', 'B'), ('1', 'A'), ('1', 'A'), ('2', 'D'), ('2', 'A'), ('1', 'D'), ('1', 'B'), ('3', 'C'), ('2', 'A'), ('1', 'C'), ('1', 'A'), ('3', 'B'), ('2', 'C'), ('2', 'A'), ('1', 'D'), ('2', 'B'), ('3', 'D'), ('1', 'D'), ('1', 'A'), ('1', 'D'), ('3', 'C'), ('3', 'D'), ('3', 'C'), ('1', 'B'), ('3', 'B'), ('3', 'B'), ('1', 'A'), ('3', 'A'), ('1', 'C'), ('2', 'B'), ('3', 'C'), ('2', 'B'), ('3', 'A'), ('2', 'A'), ('2', 'D'), ('2', 'C'), ('2', 'C'), ('1', 'D'), ('1', 'D'), ('1', 'B'), ('2', 'B'), ('3', 'C'), ('3', 'C'), ('2', 'A'), ('3', 'B'), ('2', 'B'), ('2', 'B'), ('3', 'A'), ('2', 'D'), ('3', 'D'), ('2', 'C'), ('3', 'D'), ('2', 'D'), ('3', 'B'), ('3', 'A'), ('3', 'D'), ('3', 'A'), ('1', 'A'), ('1', 'A'), ('1', 'D'), ('2', 'C'), ('1', 'C'), ('3', 'D'), ('1', 'D'), ('1', 'C'), ('1', 'A'), ('1', 'A'), ('3', 'D'), ('2', 'A'), ('3', 'C'), ('1', 'B')] """ # Hodnoty neni nutne prevadet na cisla, pro nase ucely postaci s nimi pracovat jako s textem. #otevre soubor with open(filename) as csv_file: #precte prvni radek a zahodi ho csv_file.readline() # inicializace noveho listu columns_list = [] # pro kazdy radek v souboru for line in csv_file: # do promenne data ulozi radek zbaveny bilych znaku a rozdeleny podle stredniku data = line.strip().split(";") #do promenne col1 ulozi hodnotu na pozici v promenne data, ktera je dana pri vstupu col1 = data[column1] #do promenne col1 ulozi hodnotu na pozici v promenne data, ktera je dana pri vstupu col2 = data[column2] # do listu prida hodnoty v promennych col1 a col2 jako tuple columns_list.append((col1,col2)) # vrati list return columns_list def contingency_table(filename, id1, id2): """ >>> print(contingency_table("homework07.csv",5,4)) [['A', 'B', 'C', 'D', 'sum'], ['1', '2', '3', 'sum'], [[40, 40, 49, 129], [45, 46, 40, 131], [34, 41, 46, 121], [41, 37, 41, 119], [160, 164, 176, 500]]] >>> print(contingency_table("homework07.csv", 4, 5)) [['1', '2', '3', 'sum'], ['A', 'B', 'C', 'D', 'sum'], [[40, 45, 34, 41, 160], [40, 46, 41, 37, 164], [49, 40, 46, 41, 176], [129, 131, 121, 119, 500]]] """ data = csv_reader(filename, id1, id2) ## V prvnim kroku se podivame, jake hodnoty mohou jednotlive skupiny obsahovat. Z promenne data se udelame dva seznamy, ## ktere budou obsahovat hodnoty pouze pro jednu skupinu, takze group1 = ['C', 'D', ...] a group2 = ['2','2', ...] group1 = [] group2 = [] #pro kazdy tuple v listu data, ktery je vracen funkci csv_reader for entry in data: #priradi do listu group1 prvni prvek a do listu group2 priradi druhy prvek group1.append(entry[0]) group2.append(entry[1]) ## V nasledujicim kroku prevedeme list na set, set bude obsahovat pouze jedinecne hodnoty a funkce sorted nam hodnoty seradi. factors1 = sorted(set(group1)) ## factors1 = ['A', 'B', 'C', 'D'] factors2 = sorted(set(group2)) ## factors2 = ['1', '2', '3'] ## Ted bude stacit projit pouze kombinaci vsech moznych hodnot (kombinace polozek factors1 a factors2) a vyhledat pocet vyskytu konkretni kombinace ## pomoci funkce count() napr. data.count(('A','1')) # inicializace novych listu matrix = [] new_list = [] # nutno pouzit dva for cykly, abychom mohli pokryt vsechny kombinace factors1 a factors2 for i in factors1: #inicilizace pole line a sumy, ktere se nove inicializuji pri kazdem pruchodu timto cyklem line = [] suma = 0 for j in factors2: # pro kazdy prvek ve factors2 prida do listu line pocet vyskytu dane kombinace line.append(data.count((i,j))) # pri prvnim pruchodu mame v poli line hodnoty pro A1, A2 a A3, tedy 40, 40 a 49 # do sumy se ulozi soucet techto cisel suma = sum(line) # a nasledne je suma pridana do listu line line.append(suma) # a line je pridan do listu matrix, jelikoz line bude pri dalsim pruchodu vycisten novou inicializaci matrix.append(line) #jeste je potreba dopocitat posledni radek tabulky #opet dva for cykly, kdy prvni bezi od nuly podle delky jendotlivych radku for i in range(len(matrix[0])): all_sum = 0 # a druhy bezi od nuly podle poctu radku for j in range(len(matrix)): #do promenne all_sum se prida vzdy hodnota stejneho prvku v jednotlivych radcich all_sum += matrix[j][i] # a nasledne pridam all_sum do nove listu, jelikoz bude pri dalsim pruchodu vycisten novou inicializaci new_list.append(all_sum) #prida posledni radek se sumami do matrix matrix.append(new_list) #prida slovo sum k factors1 a factors2 factors1.append("sum") factors2.append("sum") return [factors1, factors2, new_list] def print_contingency_table(ct): print(";"+";".join(ct[1])) for i in range(len(ct[0])): print("{};{}".format(ct[0][i],";".join(str(x) for x in ct[2][i]))) ct = contingency_table("homework07.csv", 5, 4) print_contingency_table(ct) import doctest doctest.testmod()