def calculate_feedback(grouped): result = {} for username in grouped: if not is_valid_matrikel_nummer(username): continue value = grouped[username] feedback_lengths = [int(line[COMMENT_LENGTH_COL]) for line in value] median_feedback = median(feedback_lengths) result[username] = median_feedback return result
def handle_forum_entries(grouped): result = {} for username in grouped: if not is_valid_matrikel_nummer(username): continue value = grouped[username] written_count = len(value) subject_lengths = [int(line[SUBJ_COL]) for line in value] text_lengths = [int(line[TEXT_COL]) for line in value] result[username] = (written_count, average(subject_lengths), median(text_lengths)) return result
def calculate_avg_score(grouped): result = {} for username in grouped: if not is_valid_matrikel_nummer(username): continue value = grouped[username] by_result_id = groupby(value, [RESULT_ID_COL]) result_scores = [float(line[0][RESULT_SCORE_COL]) \ for line in by_result_id.values()] avg_score = average(result_scores) num_scores = len(by_result_id.keys()) max_score = max(result_scores) if max_score == 0: quality_score = 0 else: quality_score = float(sum(result_scores)) / float(max_score) result[username] = (quality_score, avg_score, num_scores) return result
def count_pluses(d): return dict((x, len(d[x])) for x in d\ if is_valid_matrikel_nummer(x))
def calculate_read(grouped): return dict((username, len(grouped[username])) for username in grouped\ if is_valid_matrikel_nummer(username))