Skip to content

Instantly share code, notes, and snippets.

@roveo
Created November 13, 2022 13:19
Show Gist options
  • Save roveo/4ad54a81fa00e0943424cc039b7fcb33 to your computer and use it in GitHub Desktop.
Save roveo/4ad54a81fa00e0943424cc039b7fcb33 to your computer and use it in GitHub Desktop.
misc
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 275,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>Расскажите, как за последний год изменилась ваша жизнь?</th>\n",
" <th>А как изменилось положение дел в вашем регионе?</th>\n",
" <th>Что в большей степени повлияло на ухудшение ситуации в регионе?</th>\n",
" <th>Что в большей степени повлияло на улучшение ситуации в регионе?</th>\n",
" <th>За последний год ваше отношение к власти изменилось?</th>\n",
" <th>Как вы думаете, ваши муниципальные власти эффективно исполняют свои обязанности?</th>\n",
" <th>Как вы думаете, региональные власти эффективно исполняют свои обязанности?</th>\n",
" <th>Как бы вы оценили эффективность работы губернатора?</th>\n",
" <th>С каким утверждением вы согласны?</th>\n",
" <th>...</th>\n",
" <th>Как вы думаете, у каких региональных чиновников и ведомств есть свои официальные каналы в Telegram?</th>\n",
" <th>Из региональных СМИ я чаще других читаю/смотрю:</th>\n",
" <th>Из региональных сообществ во ВКонтакте я чаще других посещаю:</th>\n",
" <th>Из региональных сообществ в Одноклассниках я чаще других посещаю:</th>\n",
" <th>Укажите ваш пол</th>\n",
" <th>А в каком муниципальном районе Сахалинской области проживаете?</th>\n",
" <th>Укажите ваш возраст</th>\n",
" <th>Я на Сахалине проживаю</th>\n",
" <th>На данный момент я...</th>\n",
" <th>Оцените доход вашей семьи</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Скорее ухудшилась</td>\n",
" <td>Существенно ухудшилось</td>\n",
" <td>Работа региональных властей</td>\n",
" <td>NaN</td>\n",
" <td>Практически не изменилось</td>\n",
" <td>Муниципальные власти работают хорошо, имеются ...</td>\n",
" <td>Региональные власти работают, скорее, плохо</td>\n",
" <td>Губернатор не работает совсем</td>\n",
" <td>Ни с одним</td>\n",
" <td>...</td>\n",
" <td>Не читаю официальные Telegram-каналы</td>\n",
" <td>Astv.ru  | ОТВ Сахалин-Курилы  | IASAKH.COM</td>\n",
" <td>ЧП САХАЛИН</td>\n",
" <td>Сахалинцы и Курильчане</td>\n",
" <td>Женский</td>\n",
" <td>Долинский городской округ</td>\n",
" <td>60 и более</td>\n",
" <td>С рождения</td>\n",
" <td>На пенсии</td>\n",
" <td>Мы можем без труда купить крупную бытовую техн...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Не изменилась, все так же хорошо</td>\n",
" <td>Существенно улучшилось</td>\n",
" <td>NaN</td>\n",
" <td>Санкции против России | Изменение курса рубля</td>\n",
" <td>Практически не изменилось</td>\n",
" <td>Муниципальные власти работают хорошо, имеются ...</td>\n",
" <td>Региональные власти работают хорошо, имеются п...</td>\n",
" <td>Губернатор работает, но есть моменты, где можн...</td>\n",
" <td>Губернатор принимает верные решения, но чиновн...</td>\n",
" <td>...</td>\n",
" <td>Ни у кого</td>\n",
" <td>Не читаю/ не смотрю СМИ</td>\n",
" <td>По секрету Сахалин | Селфи Сахалин</td>\n",
" <td>Умный Сахалин</td>\n",
" <td>Женский</td>\n",
" <td>Южно-Курильский городской округ</td>\n",
" <td>45-59</td>\n",
" <td>Временно/сезонно по работе</td>\n",
" <td>На пенсии</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Существенно ухудшилась</td>\n",
" <td>1</td>\n",
" <td>Работа региональных властей | Санкции против Р...</td>\n",
" <td>NaN</td>\n",
" <td>Практически не изменилось</td>\n",
" <td>Муниципальные власти работают, но есть моменты...</td>\n",
" <td>Региональные власти работают, но есть моменты,...</td>\n",
" <td>Губернатор работает, скорее, плохо</td>\n",
" <td>Ни с одним</td>\n",
" <td>...</td>\n",
" <td>У  мэров городов (администраций городов)</td>\n",
" <td>«Губернские ведомости»</td>\n",
" <td>ЧП САХАЛИН</td>\n",
" <td>Сахалинцы и Курильчане</td>\n",
" <td>Женский</td>\n",
" <td>Корсаковский городской округ</td>\n",
" <td>60 и более</td>\n",
" <td>С рождения</td>\n",
" <td>Не работаю и не учусь</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>Не изменилась, все так же плохо</td>\n",
" <td>Скорее ухудшилось</td>\n",
" <td>Сами люди</td>\n",
" <td>NaN</td>\n",
" <td>Существенно ухудшилось</td>\n",
" <td>Муниципальны власти работают, скорее, плохо</td>\n",
" <td>Региональные власти работают, скорее, плохо</td>\n",
" <td>Губернатор не работает совсем</td>\n",
" <td>Губернатору не дают принимать решения федераль...</td>\n",
" <td>...</td>\n",
" <td>У губернатора | У  мэров городов (администраци...</td>\n",
" <td>Astv.ru</td>\n",
" <td>Селфи Сахалин</td>\n",
" <td>Сахалинцы и Курильчане | Умный Сахалин</td>\n",
" <td>Мужской</td>\n",
" <td>Невельский городской округ</td>\n",
" <td>60 и более</td>\n",
" <td>Временно/сезонно по работе</td>\n",
" <td>На пенсии</td>\n",
" <td>Денег хватает на продукты и одежду, но покупка...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>Не изменилась, все так же хорошо</td>\n",
" <td>Скорее улучшилось</td>\n",
" <td>NaN</td>\n",
" <td>Сами люди</td>\n",
" <td>Практически не изменилось</td>\n",
" <td>Муниципальные власти работают, но есть моменты...</td>\n",
" <td>Региональные власти работают, скорее, плохо</td>\n",
" <td>Затрудняюсь ответить</td>\n",
" <td>Ни с одним</td>\n",
" <td>...</td>\n",
" <td>У губернатора | У  мэров городов (администраци...</td>\n",
" <td>Astv.ru  | РИА Сахалин-Курилы  | ОТВ Сахалин-К...</td>\n",
" <td>Best Sakhalin Auto</td>\n",
" <td>Сахалинцы и Курильчане</td>\n",
" <td>Женский</td>\n",
" <td>Долинский городской округ</td>\n",
" <td>30-44</td>\n",
" <td>Временно/сезонно по работе</td>\n",
" <td>На пенсии</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 28 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Расскажите, как за последний год изменилась ваша жизнь? \\\n",
"0 1 Скорее ухудшилась \n",
"1 2 Не изменилась, все так же хорошо \n",
"2 3 Существенно ухудшилась \n",
"3 4 Не изменилась, все так же плохо \n",
"4 5 Не изменилась, все так же хорошо \n",
"\n",
" А как изменилось положение дел в вашем регионе? \\\n",
"0 Существенно ухудшилось \n",
"1 Существенно улучшилось \n",
"2 1 \n",
"3 Скорее ухудшилось \n",
"4 Скорее улучшилось \n",
"\n",
" Что в большей степени повлияло на ухудшение ситуации в регионе? \\\n",
"0 Работа региональных властей \n",
"1 NaN \n",
"2 Работа региональных властей | Санкции против Р... \n",
"3 Сами люди \n",
"4 NaN \n",
"\n",
" Что в большей степени повлияло на улучшение ситуации в регионе? \\\n",
"0 NaN \n",
"1 Санкции против России | Изменение курса рубля \n",
"2 NaN \n",
"3 NaN \n",
"4 Сами люди \n",
"\n",
" За последний год ваше отношение к власти изменилось? \\\n",
"0 Практически не изменилось \n",
"1 Практически не изменилось \n",
"2 Практически не изменилось \n",
"3 Существенно ухудшилось \n",
"4 Практически не изменилось \n",
"\n",
" Как вы думаете, ваши муниципальные власти эффективно исполняют свои обязанности? \\\n",
"0 Муниципальные власти работают хорошо, имеются ... \n",
"1 Муниципальные власти работают хорошо, имеются ... \n",
"2 Муниципальные власти работают, но есть моменты... \n",
"3 Муниципальны власти работают, скорее, плохо \n",
"4 Муниципальные власти работают, но есть моменты... \n",
"\n",
" Как вы думаете, региональные власти эффективно исполняют свои обязанности? \\\n",
"0 Региональные власти работают, скорее, плохо \n",
"1 Региональные власти работают хорошо, имеются п... \n",
"2 Региональные власти работают, но есть моменты,... \n",
"3 Региональные власти работают, скорее, плохо \n",
"4 Региональные власти работают, скорее, плохо \n",
"\n",
" Как бы вы оценили эффективность работы губернатора? \\\n",
"0 Губернатор не работает совсем \n",
"1 Губернатор работает, но есть моменты, где можн... \n",
"2 Губернатор работает, скорее, плохо \n",
"3 Губернатор не работает совсем \n",
"4 Затрудняюсь ответить \n",
"\n",
" С каким утверждением вы согласны? ... \\\n",
"0 Ни с одним ... \n",
"1 Губернатор принимает верные решения, но чиновн... ... \n",
"2 Ни с одним ... \n",
"3 Губернатору не дают принимать решения федераль... ... \n",
"4 Ни с одним ... \n",
"\n",
" Как вы думаете, у каких региональных чиновников и ведомств есть свои официальные каналы в Telegram? \\\n",
"0 Не читаю официальные Telegram-каналы \n",
"1 Ни у кого \n",
"2 У  мэров городов (администраций городов) \n",
"3 У губернатора | У  мэров городов (администраци... \n",
"4 У губернатора | У  мэров городов (администраци... \n",
"\n",
" Из региональных СМИ я чаще других читаю/смотрю: \\\n",
"0 Astv.ru  | ОТВ Сахалин-Курилы  | IASAKH.COM \n",
"1 Не читаю/ не смотрю СМИ \n",
"2 «Губернские ведомости» \n",
"3 Astv.ru  \n",
"4 Astv.ru  | РИА Сахалин-Курилы  | ОТВ Сахалин-К... \n",
"\n",
" Из региональных сообществ во ВКонтакте я чаще других посещаю: \\\n",
"0 ЧП САХАЛИН \n",
"1 По секрету Сахалин | Селфи Сахалин \n",
"2 ЧП САХАЛИН \n",
"3 Селфи Сахалин \n",
"4 Best Sakhalin Auto \n",
"\n",
" Из региональных сообществ в Одноклассниках я чаще других посещаю: \\\n",
"0 Сахалинцы и Курильчане \n",
"1 Умный Сахалин \n",
"2 Сахалинцы и Курильчане \n",
"3 Сахалинцы и Курильчане | Умный Сахалин \n",
"4 Сахалинцы и Курильчане \n",
"\n",
" Укажите ваш пол \\\n",
"0 Женский \n",
"1 Женский \n",
"2 Женский \n",
"3 Мужской \n",
"4 Женский \n",
"\n",
" А в каком муниципальном районе Сахалинской области проживаете? \\\n",
"0 Долинский городской округ  \n",
"1 Южно-Курильский городской округ \n",
"2 Корсаковский городской округ \n",
"3 Невельский городской округ \n",
"4 Долинский городской округ  \n",
"\n",
" Укажите ваш возраст Я на Сахалине проживаю На данный момент я... \\\n",
"0 60 и более С рождения На пенсии \n",
"1 45-59 Временно/сезонно по работе На пенсии \n",
"2 60 и более С рождения Не работаю и не учусь \n",
"3 60 и более Временно/сезонно по работе На пенсии \n",
"4 30-44 Временно/сезонно по работе На пенсии \n",
"\n",
" Оцените доход вашей семьи \n",
"0 Мы можем без труда купить крупную бытовую техн... \n",
"1 На продукты денег хватает, но покупка одежды у... \n",
"2 На продукты денег хватает, но покупка одежды у... \n",
"3 Денег хватает на продукты и одежду, но покупка... \n",
"4 На продукты денег хватает, но покупка одежды у... \n",
"\n",
"[5 rows x 28 columns]"
]
},
"execution_count": 275,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"raw = pd.read_excel(\"data.xlsx\").iloc[:,1:]\n",
"raw.head()"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [],
"source": [
"socdem_cols = raw.columns[-6:].to_list()\n",
"questions_order = raw.columns.to_list()"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [],
"source": [
"socdem = raw[socdem_cols].copy()\n",
"socdem.columns = [f\"_{c}\" for c in socdem.columns]"
]
},
{
"cell_type": "code",
"execution_count": 268,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Укажите ваш пол</th>\n",
" <th>Укажите ваш возраст</th>\n",
" <th>Я на Сахалине проживаю</th>\n",
" <th>А в каком муниципальном районе Сахалинской области проживаете?</th>\n",
" <th>Оцените доход вашей семьи</th>\n",
" <th>На данный момент я...</th>\n",
" <th>question</th>\n",
" <th>answer</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Мужской</td>\n",
" <td>18-29</td>\n",
" <td>Более 10 лет</td>\n",
" <td>Корсаковский городской округ</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" <td>Работаю полный/неполный рабочий день</td>\n",
" <td>В этом году о достижениях в каких сферах эконо...</td>\n",
" <td>Нефтегазовые проекты (Сахалин-1, Сахалин-2)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Мужской</td>\n",
" <td>18-29</td>\n",
" <td>Более 10 лет</td>\n",
" <td>Корсаковский городской округ</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" <td>Работаю полный/неполный рабочий день</td>\n",
" <td>В этом году о достижениях в каких сферах эконо...</td>\n",
" <td>Образование</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Мужской</td>\n",
" <td>18-29</td>\n",
" <td>Более 10 лет</td>\n",
" <td>Корсаковский городской округ</td>\n",
" <td>На продукты денег хватает, но покупка одежды у...</td>\n",
" <td>Работаю полный/неполный рабочий день</td>\n",
" <td>В этом году о достижениях в каких сферах эконо...</td>\n",
" <td>Спорт</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Мужской</td>\n",
" <td>60 и более</td>\n",
" <td>Менее 10 лет</td>\n",
" <td>Город Южно-Сахалинск</td>\n",
" <td>Денег хватает на продукты и одежду, но покупка...</td>\n",
" <td>Работаю полный/неполный рабочий день</td>\n",
" <td>В этом году о достижениях в каких сферах эконо...</td>\n",
" <td>Нефтегазовые проекты (Сахалин-1, Сахалин-2)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Мужской</td>\n",
" <td>60 и более</td>\n",
" <td>Менее 10 лет</td>\n",
" <td>Город Южно-Сахалинск</td>\n",
" <td>Денег хватает на продукты и одежду, но покупка...</td>\n",
" <td>Работаю полный/неполный рабочий день</td>\n",
" <td>В этом году о достижениях в каких сферах эконо...</td>\n",
" <td>Транспортное сообщение</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Укажите ваш пол Укажите ваш возраст Я на Сахалине проживаю \\\n",
"0 Мужской 18-29 Более 10 лет \n",
"0 Мужской 18-29 Более 10 лет \n",
"0 Мужской 18-29 Более 10 лет \n",
"1 Мужской 60 и более Менее 10 лет \n",
"1 Мужской 60 и более Менее 10 лет \n",
"\n",
" А в каком муниципальном районе Сахалинской области проживаете? \\\n",
"0 Корсаковский городской округ \n",
"0 Корсаковский городской округ \n",
"0 Корсаковский городской округ \n",
"1 Город Южно-Сахалинск \n",
"1 Город Южно-Сахалинск \n",
"\n",
" Оцените доход вашей семьи \\\n",
"0 На продукты денег хватает, но покупка одежды у... \n",
"0 На продукты денег хватает, но покупка одежды у... \n",
"0 На продукты денег хватает, но покупка одежды у... \n",
"1 Денег хватает на продукты и одежду, но покупка... \n",
"1 Денег хватает на продукты и одежду, но покупка... \n",
"\n",
" На данный момент я... \\\n",
"0 Работаю полный/неполный рабочий день \n",
"0 Работаю полный/неполный рабочий день \n",
"0 Работаю полный/неполный рабочий день \n",
"1 Работаю полный/неполный рабочий день \n",
"1 Работаю полный/неполный рабочий день \n",
"\n",
" question \\\n",
"0 В этом году о достижениях в каких сферах эконо... \n",
"0 В этом году о достижениях в каких сферах эконо... \n",
"0 В этом году о достижениях в каких сферах эконо... \n",
"1 В этом году о достижениях в каких сферах эконо... \n",
"1 В этом году о достижениях в каких сферах эконо... \n",
"\n",
" answer \n",
"0 Нефтегазовые проекты (Сахалин-1, Сахалин-2) \n",
"0 Образование \n",
"0 Спорт \n",
"1 Нефтегазовые проекты (Сахалин-1, Сахалин-2) \n",
"1 Транспортное сообщение "
]
},
"execution_count": 268,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"base = pd.concat([raw, socdem], axis=1).melt(id_vars=socdem_cols, var_name=\"question\", value_name=\"answer\")\n",
"base[\"answer\"] = base[\"answer\"].str.split(\"|\")\n",
"base = base.explode(column=\"answer\")\n",
"base[\"answer\"] = base[\"answer\"].str.strip()\n",
"base[\"question\"] = base[\"question\"].str.strip(\"_\")\n",
"base.head()"
]
},
{
"cell_type": "code",
"execution_count": 269,
"metadata": {},
"outputs": [],
"source": [
"total = pd.DataFrame(data=base.groupby([\"question\", \"answer\"]).size(), columns=[(\"\", \"Всего\")])"
]
},
{
"cell_type": "code",
"execution_count": 270,
"metadata": {},
"outputs": [],
"source": [
"socdem = []\n",
"\n",
"for col in socdem_cols:\n",
" socdem_df = base.groupby([col, \"question\", \"answer\"]).size().unstack(0)\n",
" socdem_df.columns = pd.MultiIndex.from_product([[socdem_df.columns.name], socdem_df.columns])\n",
" socdem.append(socdem_df)\n"
]
},
{
"cell_type": "code",
"execution_count": 271,
"metadata": {},
"outputs": [],
"source": [
"result = pd.concat([total, *socdem], axis=\"columns\")\n",
"result.columns = pd.MultiIndex.from_tuples(result.columns)\n",
"\n",
"counts = raw.count(axis=0).to_dict()\n",
"result.index = pd.MultiIndex.from_tuples(\n",
" [(q, counts[q], a) for q, a in result.index.to_list()],\n",
" names=[\"Вопрос\", \"Всего ответов\", \"Ответ\"],\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {},
"outputs": [],
"source": [
"result.astype(\"Int32\").to_excel(\"result2.xlsx\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.12 64-bit ('base')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "d1c01c1aef5bf133c5cb3f2cf1dcdb7912309035452812152dfa61d47145039e"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment