Табулирование данных Django в Pandas - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь создать приложение для составления отчетов / анализа.

Я хочу переместить данные из простого приложения 'опросов' 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 поможет мне обобщить этодля других приложений, но из-за того, что я так плохо справился с простой задачей, я не был уверен, что понимаю, что такое таблица.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...