Используя matplotlib для создания отчета об ответах на опрос, каков наиболее эффективный способ подсчета баллов ЛайкертаPython

Программы на Python
Ответить
Anonymous
 Используя matplotlib для создания отчета об ответах на опрос, каков наиболее эффективный способ подсчета баллов Лайкерта

Сообщение Anonymous »

Я создаю в существующем приложении функциональность, позволяющую пользователю загружать файл Excel и отображать ответы на вопросы опроса. Есть 4 лайкертских вопроса с 2 ответами на комментарии. Соответствующие данные организованы следующим образом:

Код: Выделить всё

              Q1     Q2                           Q3       Q4       Q5          Q6
0   Occasionally  Agree                        Agree  comment  comment   Very Well
1     Frequently  Agree                        Agree      NaN      NaN  Moderately
2     Frequently  Agree                        Agree      NaN      NaN        Well
3     Frequently  Agree   Neither Agree nor Disagree  comment  comment  Moderately
В настоящее время я делаю следующее, чтобы составить список всех вопросов, перечисленных ответов на них, «типа» шкалы Лайкерта и количества записанных ответов на каждый вопрос.

Код: Выделить всё

def read_responses(xl):
responses = []
action = False
data = pd.read_excel(xl)

for name, values in data.items():
if name.endswith("?"):
action = True
if action == True:
data_set = {}
set = values.value_counts(dropna=True).to_dict()
labels, data = list(set.keys()), list(set.values())
data_set['question'] = name
data_set['type'] = id_type(labels)
data_set["responses"] = labels
data_set["values"] = data
responses.append(data_set)
build_chart(responses)
Это циклически проходит по фрейму данных, пропускает первые несколько столбцов сгенерированной системой информации, а затем начинает подсчитывать значения каждого отдельного значения в каждой строке и назначает его счетчик для разделения отдельного списка, который позже отправляется в matplotlib для построения графика вместе с заголовком каждого столбца для использования в качестве заголовка.
В конце концов, это передается в мою функцию построения графика:

Код: Выделить всё

[{'question': 'Q1',
'type': 'likert',
'responses': [Agree],
'values':[4]
}]
Тип определяется на основе следующей функции, которая сравнивает первое значение со значением в списке, содержащем списки всех потенциальных типов Лайкерта. Если этого значения нет ни в одном из списков типов, предполагается, что это вопрос, на который в качестве ответа принимается текстовый комментарий

Код: Выделить всё

def id_type(response):
type = 'comment'
for scale in scales:
for term in scale:
if term == response[0]: type = 'likert'
return type
Оттуда я отправляю его в функцию для вывода на печать в PDF-файл с помощью pdfPages и plt.
Я чувствую, что это уже довольно скудно, но я хочу проверить работоспособность, чтобы увидеть, существует ли более устоявшийся или общепринятый способ оценки опросов?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -efficient
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»