In deze oefening is het de bedoeling om aan een bestaand CSV-bestand kolommen toe te voegen die een functie is van de andere kolommen van het bestand. Het bestand is een CSV-bestand, met als gedaante:

Data0; Data1; Data2; ...

(zie ook het voorbeeld onderaan de opgave)

Hierbij zijn de hoofdingen 'Data0, 'Data1', enz. placeholders (m.a.w. in de echte bestanden staan andere hoofdingen). Alle volgende regels bevatten strings, die eigenlijk floats voorstellen, waarbij de komma als decimaal teken gebruikt wordt.
In eerste instantie programmeren we de klasse Kolom (die 1 kolom uit zo'n bestand voorstelt), en vervolgens programmeren we de klasse Werkblad.

De klasse Kolom

Programmeer volgende zaken in die klasse:

De klasse Werkblad

Programmeer in de klasse Werkblad:

Voorbeeld

a = Kolom('A', [1, 2, 3, 4, 5])
print(a)	#A:[1, 2, 3, 4, 5]
b = Kolom('B', [10, 20, 30, 40, 50])
print(a + b) #A+B:[11, 22, 33, 44, 55]
print(a + 2) #A+2:[3, 4, 5, 6, 7]
print(2 + a) #A+2:[3, 4, 5, 6, 7]
c = Kolom('C', [100, 200, 300, 400, 500])
print(a*c) #A*C:[100, 400, 900, 1600, 2500]
print(c*40) #C*40:[4000, 8000, 12000, 16000, 20000]
print(40*c) #C*40:[4000, 8000, 12000, 16000, 20000]
print(2*a + b*40 + c) #A*2+B*40+C:[502, 1004, 1506, 2008, 2510]

Inhoud Gegevens_0_out.csv

E;B;F;D;A;C;
-86,0;1945,0;-107,0;1046,0;-624,0;1631,0
925,0;160,0;619,0;69,0;335,0;968,0
482,0;1621,0;435,0;-784,0;830,0;1072,0

blad = Werkblad('Gegevens_0_in.csv')
print(blad)
#[['E', 'B', 'F', 'D', 'A', 'C'], 
# [-86.0, 1945.0, -107.0, 1046.0, -624.0, 1631.0], 
# [925.0, 160.0, 619.0, 69.0, 335.0, 968.0], 
# [482.0, 1621.0, 435.0, -784.0, 830.0, 1072.0]]

blad.get_aantal_kolommen() #6
print(blad(1)) #B:[1945.0, 160.0, 1621.0]


blad += -5 * blad(4) + 5 * blad(0)
print(blad)
#[['E', 'B', 'F', 'D', 'A', 'C', 'A*-5+E*5'], 
#  [-86.0, 1945.0, -107.0, 1046.0, -624.0, 1631.0, 2690.0], 
#  [925.0, 160.0, 619.0, 69.0, 335.0, 968.0, 2950.0], 
#  [482.0, 1621.0, 435.0, -784.0, 830.0, 1072.0, -1740.0]]
blad.schrijf('Gegevens_0_out.csv')

Inhoud Gegevens_0_out.csv

E;B;F;D;A;C;A*-5+E*5
-86,0;1945,0;-107,0;1046,0;-624,0;1631,0;2690,0
925,0;160,0;619,0;69,0;335,0;968,0;2950,0
482,0;1621,0;435,0;-784,0;830,0;1072,0;-1740,0