Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
import time
import argparse
import csv
import matplotlib.pyplot
parser = argparse.ArgumentParser()
parser.add_argument("filepath", help="The filepath to the copy of the survey.")
arguments = parser.parse_args()
infile = open(arguments.filepath, encoding="latin-1")
survey = infile.read()
(questions, responses) = (survey.split("\n")[0], survey.split("\n")[1:])
reader = csv.DictReader(responses, fieldnames=questions.split(","))
response_rates = dict.fromkeys(questions.split(","), 0)
questions_answered = []
for response in reader:
response_editable = response.copy()
for field in response:
if response[field] and response[field].strip():
response_rates[field] += 1
else:
response_editable.pop(field)
questions_answered.append(len(response_editable))
survey_length = len(questions.split(","))
print("Number of survey respondents:", len(responses))
print("Number of questions:", survey_length)
print("Average number of questions answered:",
sum(questions_answered) / len(questions_answered))
in_or_above_20th = 0
for respondent in questions_answered:
if respondent >= (survey_length / 10) * 2:
in_or_above_20th += 1
print("Number of survey respondents who answered 20% or more of the questions:",
in_or_above_20th)
ninety_percent = round(survey_length - (survey_length / 10))
in_or_above_90th = 0
for respondent in questions_answered:
if respondent >= ninety_percent:
in_or_above_90th += 1
print("Number of survey respondents who answered 90% or more of the questions:",
in_or_above_90th)
response_rates_sortable = []
for field in response_rates:
response_rates_sortable.append((response_rates[field], field))
response_rates_sortable.sort()
response_rates_sortable.reverse()
for field in response_rates_sortable:
print(field[1] + ":", str(field[0]) + " out of " +
str(len(questions_answered)))
print("----")
for field in response_rates_sortable:
print(field[1] + ":" + "(" + str(field[0]) + ")",
"=" * round(field[0] / 100))
x = list(range(len(questions.split(","))))
y = []
for question in questions.split(","):
y.append(response_rates[question])
assert len(x) == len(y)
matplotlib.pyplot.xlabel("Position of question on survey".title())
matplotlib.pyplot.ylabel("Number of responses to question".title())
matplotlib.pyplot.scatter(x,y)
matplotlib.pyplot.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.