我的班級樣本CSV數據超過500行,它看起來像這樣組織CSV數據和計算平均成績
courseid title teacher avggpa students As Bs Cs Ds Fs
101 Math Stevens 3.15 105 25.2 45.1 16.7 10.1 2.9
101 Math Stevens 2.98 95 20.2 30.1 30.5 11.5 5.4
101 Math Smith 3.33 120 33.1 40.1 10.2 7.6 4.3
103 English Jane 3.55 108 20.5 16.2 16.5 20.5 10.2
103 English Jane 3.47 100 25.2 38.0 22.0 7.0 2.0
202 Science Roberts 2.67 80 12.0 35.0 27.5 12.5 8.3
(假裝那些用逗號分隔的,我只是它打印了出來。用於格式化也百分比加起來還不到100%,但假裝他們這樣做)
到目前爲止我有什麼是:
with open(filename, 'rb') as f:
reader = csv.reader(f, delimiter=',')
next(reader, None) #to skip header
self.data = list(reader)
case_list = []
for entry in self.data:
case = {'course_number': entry[1], 'course_title': entry[2], 'teacher': entry[3]... #and so on for each header
case_list.append(case)
所以我有字典的列表,其中每個dictio中nary條目是來自csv文件的一行。
我的目標是合併和平均來自教授同一課程的教師不止一次的avggpa和As,Bs,Cs,Ds,Fs。所以在我的例子中,我想平均Steven和Jane的課程成績,然後用視覺來表示。如果一位老師只教一門課程,我還想用視覺來代表他的成績。
我很努力想出一種方法來確定一位教師是否教授多門課程。按照循環遍歷列表的方式,檢查courseid和teacher是否已經在字典中,然後調用函數來平均gpas,但是我似乎無法想出邏輯。
任何幫助將不勝感激,如果需要更多的澄清,請讓我知道。如果還有比我最初做的更好的組織csv數據的方法,請讓我知道!
除非你被要求不要,我建議使用熊貓這個項目。 – DyZ
@DYZ這是一個自我項目,所以我一定會看看熊貓 –