import csv
import matplotlib.pyplot as plt
% matplotlib inline
from operator import itemgetter
import numpy as np
type_lists = []
with open("resource_types.csv") as fin:
reader = csv.reader(fin)
for i,row in enumerate(reader):
if i == 0:
pass
else:
type_lists.append(row[1])
types = []
for t in type_lists:
tl = t.split(", ")
tl = [x.strip() for x in tl if not x.startswith("Other") and not x.startswith("apps")]
types.extend(tl)
# len(types)
foir_type_lookup = {
"qna":"q&a sites",
"course":"free online courses",
"audio":"audio streams/downloads",
"gov":"gov & institutional sites",
"book":"ebooks",
"forum":"forums/message boards",
"news":"news sites",
"social":"social media",
"image":"image repos",
"encyc":"encyclopedia sites",
"tutor":"tutorial/how-to sites",
"dict":"dictionary/thesaurus sites",
"video":"video streams/downloads",
}
for i,t in enumerate(types):
types[i] = foir_type_lookup[types[i]]
# types
# len(types)
FOIR_type_counts = {x:0 for x in set(types)}
for t in types:
FOIR_type_counts[t] += 1
FOIR_type_counts_sorted = sorted(FOIR_type_counts.items(),key=itemgetter(1), reverse=True)
# print(FOIR_type_counts_sorted)
import numpy as np
plt.rcParams.update({'font.size': 16})
X = np.arange(len(FOIR_type_counts))
fig = plt.figure(figsize=(15, 10), dpi=300)
plt.bar(X, FOIR_type_counts.values(), width=0.5, color=np.random.rand(4,1))
plt.title('Types of Free Online Information Resources used by students')
plt.xticks(X, FOIR_type_counts.keys(), rotation=70)
ymax = max(FOIR_type_counts.values()) + 5
plt.ylim(0, ymax)
plt.xlabel('FOIR type')
plt.ylabel('respondents')
plt.show()
import csv
import matplotlib.pyplot as plt
% matplotlib inline
from operator import itemgetter
student_demographics = {}
with open("student_type_lang_area_of_study.csv") as fin:
reader = csv.reader(fin)
for i,row in enumerate(reader):
if i == 0:
pass
else:
student_demographics[row[0]] = {"enrollment":row[1],"native language":row[2],"area of study":row[3]}
def group_by_key(diction,dkey):
grouped = {}
for v in diction.values():
# print(v[dkey])
if v[dkey] in grouped.keys():
# print(v[dkey])
grouped[v[dkey]] += 1
else:
grouped[v[dkey]] = 1
return grouped
def map_abrv_to_name(data_diction,dkey,lookup):
for k,v in data_diction.items():
data_diction[k][dkey] = lookup[v[dkey]]
return data_diction
student_langs = group_by_key(student_demographics, "native language")
student_langs_sorted = sorted(student_langs.items(),key=itemgetter(1), reverse=True)
# student_langs_sorted
fig = plt.figure(figsize=(20, 20), dpi=300)
labels = [x[0] for x in student_langs_sorted]
sizes = [x[1] for x in student_langs_sorted]
plt.pie(sizes, labels=labels,
autopct='%1.1f%%', startangle=140)
plt.axis('equal')
plt.show()
student_demographics = map_abrv_to_name(student_demographics,'enrollment',enrollment_lookup)
# student_demographics
student_grade = group_by_key(student_demographics, "enrollment")
student_grade_sorted = sorted(student_grade.items(),key=itemgetter(1), reverse=True)
enrollment_lookup = {
"ug-se":"undergraduate-senior",
"ug-so":"undergraduate-sophomore",
"ug-fr":"undergraduate-freshman",
"ug-ju":"undergraduate-junior",
"g-phd":"graduate-phd",
"g-m":"graduate-masters",
"exchange-student":"exchange-student",
"g-cert":"graduate-certificate",
"postgraduate":"postgraduate",
"g-jd":"graduate-law",
}
plt.rcParams.update({'font.size': 22})
fig = plt.figure(figsize=(20, 20), dpi=300)
labels = [x[0] for x in student_grade_sorted]
sizes = [x[1] for x in student_grade_sorted]
plt.pie(sizes, labels=labels,
autopct='%1.1f%%', startangle=140)
plt.axis('equal')
plt.show()