Free Online Information Resources Survey analysis¶

FOIR types¶

In [70]:
import csv
import matplotlib.pyplot as plt
% matplotlib inline
from operator import itemgetter
import numpy as np
In [52]:
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])
In [123]:
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)
In [124]:
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)
In [126]:
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)
In [132]:
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()

Student demographics¶

In [87]:
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]}
In [84]:
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
            
In [98]:
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 native languages¶

In [89]:
student_langs = group_by_key(student_demographics, "native language")
student_langs_sorted = sorted(student_langs.items(),key=itemgetter(1), reverse=True)
# student_langs_sorted
In [114]:
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 enrollment status¶

In [ ]:
student_demographics = map_abrv_to_name(student_demographics,'enrollment',enrollment_lookup)
# student_demographics
In [105]:
student_grade = group_by_key(student_demographics, "enrollment")
student_grade_sorted = sorted(student_grade.items(),key=itemgetter(1), reverse=True)
In [97]:
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",
}
In [108]:
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()