Я пытаюсь создать приложение для составления отчетов / анализа.
Я хочу переместить данные из простого приложения 'опросов' Django в DataFrame для анализа (изначально базовая статистика).Ожидаемый объем информации невелик, поэтому я не оптимизирую производительность.
frame = pd.DataFrame.from_records([row for row in answer_set.values(col_names)], **kwargs)
Затем я могу «присоединиться» к последующим frames
(для разных вопросов) в 'user_id'столбец, при условии, что я делаю его индексом данных.
Моя проблема в том, что ответ также индексируется (но ортогонально) по «вопросу», и в результате я смог добраться только до такой таблицы (это транспонировано, потому что она была непрактично широкой):
answer_fields User1 User2<br>
questionpk 1 1
question__text 'How?' 'How?'
answerfield1 'x' 'x'
answerfield2 'y' 'z'
questionpk 2 2
etc...
Я хочу получить таблицу, подобную этой:
table User User
question question_text 1 2
1 'How?' field1 'x' 'x'
field2 'y' 'z'
Но, насколько я понимаю, это требуетMultiIndex в измерении вопросов, создание столбцов «пользователи», и, если бы я заботился об организации пользователей по демографическим показателям, я не думаю, что у меня тоже может быть multiIndex в этом измерении.Я предпочитаю этот сжатый формат, потому что я хочу предложить возможность создания DataFrame со столбцами, которые пользователь-аналитик хочет профилировать и сравнивать (сравнение ответов с последующими ответами, сопоставленными для пользователя, наиболее очевидно), и в то время как question_text является избыточным как переменнаяэто имеет полезное значение для целей отчетности.Я хотел бы предложить некоторые инструменты из statsmodels и формул patsy, поэтому простые имена для столбцов и строк будут важны.
[У меня есть ощущение, что какая-то логика установки среди ForeignKeys поможет мне обобщить этодля других приложений, но из-за того, что я так плохо справился с простой задачей, я не был уверен, что понимаю, что такое таблица.]