Я добавил несколько модификаций в ваш скрипт.
Он отлично работает на Python 2.7 для Windows.
Вот код:
import csv
csvname = raw_input("Enter csv name: ")
sbuxfile = csv.reader(open(csvname), delimiter=',', quotechar='|')
# List of Data
row5, row8, row3, row7, avgequity, roe1, roe2 = ([] for i in range(7))
count = 0
# Grab data and numerical values from CSV.
for row in sbuxfile:
count += 1
if count == 8:
row8 = row
elif count == 5:
row5 = row
elif count == 3:
row3 = row
elif count == 7:
row7 = row
a = 1
# Perform calculations for average equity and ROE.
while a < 8 :
if a == 1:
avgequity.append(round(float(row8[a]),2))
roe1.append(float(row5[a]) / float(row8[a]))
roe2.append((float(row5[a]) / float(row3[a])) * (float(row3[a]) / float(row7[a])) * (float(row7[a]) / float(row8[a])))
a+=1 #added this line
else:
avgequity.append(round(float(row8[a]),2) + float(row8[a-1])/2) #rewrote this line as it had an error
roe1.append(float(row5[a]) / float(row8[a]))
roe2.append((float(row5[a]) / float(row3[a])) * (float(row3[a]) / float(row7[a])) * (float(row7[a]) / ((float(row8[a]) + float(row8[a-1]))/2)))
a+=1
print "\nAverage equity is " + str(avgequity) + "\n"
print "ROE method 1 is " + str(roe1) + "\n"
print "ROE method 2 is " + str(roe2)
Вывод был:
Средний капитал составляет [2071,11, 3505,7650000000003, 3325,3650000000002, 3273,6400000000003, 3398,375, 4187,76, 5197,549999999999]
Метод ROE 1 равен [0,12812453225565035, 0,15742791098732495, 0,23651124740462906, 0,2532005689900426, 0,2944854035689894, 0,1283120464917753, 0,2573271287452037]
Метод ROE 2: [0,12812453225565038, 0,17126298080734237, 0,21680660107401206, 0,2613058810726202, 0,29811440335236883, 0,1466466034500227, 0,2814118207249569]