Skip to content

Instantly share code, notes, and snippets.

@sergiks
Created March 18, 2018 09:43
Show Gist options
  • Save sergiks/474721a7f67b583d6bd5428db07b7088 to your computer and use it in GitHub Desktop.
Save sergiks/474721a7f67b583d6bd5428db07b7088 to your computer and use it in GitHub Desktop.
Анализ голосования подконкурса рекламных материалов КСИ
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Анализ голосования\n",
"\n",
"На [форуме](http://forum.ostashkov.ru/showthread.php?t=55180&p=864990&viewfull=1#post864990) опубликованы [данные](https://drive.google.com/file/d/1UVufMsdiJHn1aq8-cENs3JVdBioX07oU/view?usp=sharing) (версия от 17 марта 2018) [голосования](https://intellect-contest.com/vote) по творческим работам - материалам для рекламной кампании Конкурса Созидательного Интеллекта (КСИ). Участники идентифицируются их уникальным серийным номером (СН). Голосовать могли как авторизованные пользователи, так и анонимные. Авторизованные могли ставить оценки от -10 до 10. Анонимные от -1 до 1. В случае анонимного голосования СН отправителя неизвестен.\n",
"\n",
"В той же длинной ветке форума можно найти [сводную таблицу](https://goo.gl/ECrR6r) со ссылками на работы авторов.\n",
"\n",
"Исследование проводил, разбираясь с [pandas](https://pandas.pydata.org/). Надеюсь, кому-то это покажется полезным. Благодарю за предоставленные данные."
]
},
{
"cell_type": "code",
"execution_count": 1098,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import csv\n",
"import datetime as dt\n",
"from random import randrange\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Входные данные"
]
},
{
"cell_type": "code",
"execution_count": 1045,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Файл с данными\n",
"#filename = 'SellSmartVoteDetails06.03.2018.csv'\n",
"#filename = 'Likes15032018.xlsx - Sheet1.csv'\n",
"#filename = 'Likes16032018.csv'\n",
"filename = 'Likes17032018.csv'\n",
"\n",
"# Колонки:\n",
"# КТО,ДАТА,ОЦЕНКА,АВТОР,КОМПЛЕКТ,КОМПОНЕНТ,КОММЕНТАРИЙ\n"
]
},
{
"cell_type": "code",
"execution_count": 1264,
"metadata": {},
"outputs": [],
"source": [
"# Чтение данных\n",
"def readCSV(filename):\n",
" data = []\n",
" with open(filename, 'r') as f:\n",
" csvr = csv.reader(f)\n",
" next(csvr)\n",
" for row in csvr:\n",
" data.append([\n",
" parseInt(row[0]), # для анонимных голосов СН становится нулём\n",
" 3*3600 + int(dt.datetime.strptime(row[1],'%m/%d/%y %H:%M').timestamp()),\n",
" parseInt(row[2]),\n",
" parseInt(row[3]),\n",
" row[4],\n",
" row[5],\n",
" row[6].strip(),\n",
" ])\n",
"\n",
" return data\n",
"\n",
"\n",
"def parseInt(s):\n",
" s = s.strip()\n",
" return int(s) if s else 0"
]
},
{
"cell_type": "code",
"execution_count": 1265,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Прочитаны 27056 строк данных.\n",
"Пример случайной строки №2151:\n",
"[61096, 1518915000, 6, 10475, 'Один', 'плакат', '']\n"
]
}
],
"source": [
"data = readCSV(filename)\n",
"print(\"Прочитаны {} строк данных.\".format(len(data)))\n",
"\n",
"rand_n = randrange(len(data))\n",
"print(\"Пример случайной строки №{}:\\n{}\".format(rand_n, data[rand_n]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### DataFrame из данных"
]
},
{
"cell_type": "code",
"execution_count": 1047,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>from</th>\n",
" <th>ts</th>\n",
" <th>score</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>2018-02-17 02:41:00</td>\n",
" <td>1</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>2018-02-17 02:43:00</td>\n",
" <td>0</td>\n",
" <td>7228</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>2018-02-17 02:45:00</td>\n",
" <td>-1</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>Креатив 2</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>2018-02-17 02:47:00</td>\n",
" <td>1</td>\n",
" <td>9560</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>2018-02-17 02:50:00</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>Видно, что постарались</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" from ts score to set task \\\n",
"0 0 2018-02-17 02:41:00 1 7228 Один листовка \n",
"1 0 2018-02-17 02:43:00 0 7228 Другой визитка \n",
"2 0 2018-02-17 02:45:00 -1 7228 Один Креатив 2 \n",
"3 0 2018-02-17 02:47:00 1 9560 Один Креатив 1 \n",
"4 0 2018-02-17 02:50:00 1 10567 Другой плакат \n",
"\n",
" comment \n",
"0 \n",
"1 \n",
"2 \n",
"3 \n",
"4 Видно, что постарались "
]
},
"execution_count": 1047,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(data, columns=['from','ts','score','to','set','task','comment'])\n",
"\n",
"df['ts'] = pd.to_datetime(df['ts'], unit='s') # из unix timestamp в datetime\n",
"\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Обзор всех оценок"
]
},
{
"cell_type": "code",
"execution_count": 1048,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 27056.000000\n",
"mean 3.985881\n",
"std 4.802022\n",
"min -10.000000\n",
"50% 5.000000\n",
"max 10.000000\n",
"Name: score, dtype: float64"
]
},
"execution_count": 1048,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"overview = df['score'].describe(percentiles=[])\n",
"overview"
]
},
{
"cell_type": "code",
"execution_count": 1049,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Все голоса в значениях от -10.0 до 10.0, среднее 3.99, сигма 4.80, медиана 5.00\n"
]
}
],
"source": [
"print('Все голоса в значениях от {} до {}, среднее {:.2f}, сигма {:.2f}, медиана {:0.2f}'\n",
" .format(overview['min'], overview['max'], overview['mean'], overview['std'], overview['50%'] ))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Креативы\n",
"Какие Наборы и Задания встречаются в голосовании"
]
},
{
"cell_type": "code",
"execution_count": 1050,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Наборы: Один, Другой\n",
"Комплекты: Креатив 1, Креатив 2, Креатив 3, Креатив 4, Креатив 5, визитка, листовка, пакет, плакат\n"
]
}
],
"source": [
"sets = df['set'].unique()\n",
"sets[::-1].sort()\n",
"print('Наборы:', ', '.join(sets))\n",
"\n",
"tasks = df['task'].unique()\n",
"tasks.sort()\n",
"print('Комплекты:', ', '.join(tasks))\n"
]
},
{
"cell_type": "code",
"execution_count": 1051,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Креатив 1:Другой\n",
"Креатив 1:Один\n",
"Креатив 2:Другой\n",
"Креатив 2:Один\n",
"Креатив 3:Другой\n",
"Креатив 3:Один\n",
"Креатив 4:Другой\n",
"Креатив 4:Один\n",
"Креатив 5:Другой\n",
"Креатив 5:Один\n",
"визитка:Другой\n",
"визитка:Один\n",
"листовка:Другой\n",
"листовка:Один\n",
"пакет:Другой\n",
"пакет:Один\n",
"плакат:Другой\n",
"плакат:Один\n"
]
}
],
"source": [
"# добавим колонку объединённого названия задания\n",
"df['taskset'] = df['task'] + ':' + df['set']\n",
"tasksets = df['taskset'].unique()\n",
"tasksets.sort()\n",
"print('\\n'.join(tasksets))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Голоса по креативам"
]
},
{
"cell_type": "code",
"execution_count": 1052,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>taskset</th>\n",
" <th>Сумма баллов</th>\n",
" <th>Число голосов</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>листовка:Один</td>\n",
" <td>14837</td>\n",
" <td>3293</td>\n",
" <td>4.505618</td>\n",
" <td>4.407726</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>листовка:Другой</td>\n",
" <td>10068</td>\n",
" <td>2567</td>\n",
" <td>3.922088</td>\n",
" <td>4.884098</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>плакат:Один</td>\n",
" <td>9489</td>\n",
" <td>2149</td>\n",
" <td>4.415542</td>\n",
" <td>4.522956</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>пакет:Один</td>\n",
" <td>7940</td>\n",
" <td>1751</td>\n",
" <td>4.534552</td>\n",
" <td>4.605690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>визитка:Один</td>\n",
" <td>7646</td>\n",
" <td>1824</td>\n",
" <td>4.191886</td>\n",
" <td>4.581608</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>плакат:Другой</td>\n",
" <td>7102</td>\n",
" <td>1805</td>\n",
" <td>3.934626</td>\n",
" <td>5.021698</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Креатив 1:Один</td>\n",
" <td>6071</td>\n",
" <td>1407</td>\n",
" <td>4.314854</td>\n",
" <td>4.741056</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>визитка:Другой</td>\n",
" <td>5732</td>\n",
" <td>1554</td>\n",
" <td>3.688546</td>\n",
" <td>5.118383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Креатив 5:Один</td>\n",
" <td>5245</td>\n",
" <td>1282</td>\n",
" <td>4.091264</td>\n",
" <td>4.777674</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Креатив 4:Один</td>\n",
" <td>4907</td>\n",
" <td>1259</td>\n",
" <td>3.897538</td>\n",
" <td>4.839045</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>пакет:Другой</td>\n",
" <td>4704</td>\n",
" <td>1272</td>\n",
" <td>3.698113</td>\n",
" <td>4.976109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Креатив 3:Один</td>\n",
" <td>4671</td>\n",
" <td>1253</td>\n",
" <td>3.727853</td>\n",
" <td>4.799843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Креатив 2:Один</td>\n",
" <td>4590</td>\n",
" <td>1266</td>\n",
" <td>3.625592</td>\n",
" <td>4.962351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Креатив 1:Другой</td>\n",
" <td>3678</td>\n",
" <td>1057</td>\n",
" <td>3.479659</td>\n",
" <td>5.004904</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Креатив 5:Другой</td>\n",
" <td>2853</td>\n",
" <td>835</td>\n",
" <td>3.416766</td>\n",
" <td>5.055681</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Креатив 3:Другой</td>\n",
" <td>2810</td>\n",
" <td>832</td>\n",
" <td>3.377404</td>\n",
" <td>4.941961</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Креатив 4:Другой</td>\n",
" <td>2797</td>\n",
" <td>819</td>\n",
" <td>3.415140</td>\n",
" <td>4.685833</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Креатив 2:Другой</td>\n",
" <td>2702</td>\n",
" <td>831</td>\n",
" <td>3.251504</td>\n",
" <td>5.061839</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" taskset Сумма баллов Число голосов mean std\n",
"0 листовка:Один 14837 3293 4.505618 4.407726\n",
"1 листовка:Другой 10068 2567 3.922088 4.884098\n",
"2 плакат:Один 9489 2149 4.415542 4.522956\n",
"3 пакет:Один 7940 1751 4.534552 4.605690\n",
"4 визитка:Один 7646 1824 4.191886 4.581608\n",
"5 плакат:Другой 7102 1805 3.934626 5.021698\n",
"6 Креатив 1:Один 6071 1407 4.314854 4.741056\n",
"7 визитка:Другой 5732 1554 3.688546 5.118383\n",
"8 Креатив 5:Один 5245 1282 4.091264 4.777674\n",
"9 Креатив 4:Один 4907 1259 3.897538 4.839045\n",
"10 пакет:Другой 4704 1272 3.698113 4.976109\n",
"11 Креатив 3:Один 4671 1253 3.727853 4.799843\n",
"12 Креатив 2:Один 4590 1266 3.625592 4.962351\n",
"13 Креатив 1:Другой 3678 1057 3.479659 5.004904\n",
"14 Креатив 5:Другой 2853 835 3.416766 5.055681\n",
"15 Креатив 3:Другой 2810 832 3.377404 4.941961\n",
"16 Креатив 4:Другой 2797 819 3.415140 4.685833\n",
"17 Креатив 2:Другой 2702 831 3.251504 5.061839"
]
},
"execution_count": 1052,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cre_votes = (\n",
" df.groupby('taskset')['score']\n",
" .agg(['sum','count', np.mean, np.std])\n",
" .sort_values(by='sum', ascending=False)\n",
" .rename(columns={'sum':'Сумма баллов', 'count':'Число голосов'})\n",
" .reset_index()\n",
")\n",
"cre_votes"
]
},
{
"cell_type": "code",
"execution_count": 1053,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Максимальное среднее 4.53 у «пакет:Один»\n"
]
}
],
"source": [
"print('Максимальное среднее {:.2f} у «{}»'\n",
" .format(\n",
" cre_votes['mean'].max(),\n",
" cre_votes.loc[cre_votes['mean'].idxmax(), 'taskset']\n",
" )\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ID кандидатов\n",
"За чьи работы есть голоса"
]
},
{
"cell_type": "code",
"execution_count": 1054,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15 ID кандидатов: 1838, 1945, 3032, 5157, 7222, 7228, 9560, 9574, 10475, 10567, 10580, 11984, 12371, 12626, 18918\n"
]
}
],
"source": [
"participants = df['to'].unique()\n",
"participants.sort()\n",
"print(\"{} ID кандидатов:\".format(len(participants)), ', '.join(map(str,participants)))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Никнеймы\n",
"на форуме http://forum.ostashkov.ru/showthread.php?t=55180\n"
]
},
{
"cell_type": "code",
"execution_count": 1055,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Каждому СН есть соответствующий никнейм.\n"
]
}
],
"source": [
"sn_names = {\n",
" 10567: 'Matreshka', 7228: 'Salomeya', 10475: 'alawiner', 10580: 'Svobodin',\n",
" 12371: 'Slipanya', 9574: 'Pchola', 9560: 'Arven', 12626: 'Iro4ka',\n",
" 7222: 'Radiance', 1945: 'Осташ-ка', 1838: 'tariel', 18918: 'Адвокат',\n",
" 5157: '5157', 11984: 'Saal', 3032: 'paparapa'\n",
"}\n",
"\n",
"sns = pd.Series(sn_names, index=sn_names.keys())\n",
"\n",
"def verify_names(sns, participants):\n",
" for sn in sns.keys():\n",
" if sn not in participants:\n",
" raise RuntimeError(\"SN {} not in participants\".format(sn))\n",
" \n",
" for sn in participants:\n",
" if not sn in sn_names.keys():\n",
" raise RuntimeError(\"SN {} not in sn_names\".format(sn))\n",
" \n",
" print(\"Каждому СН есть соответствующий никнейм.\")\n",
"\n",
"verify_names(sns, participants)\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Сумма баллов по участникам"
]
},
{
"cell_type": "code",
"execution_count": 1056,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10567</td>\n",
" <td>15574</td>\n",
" <td>3147</td>\n",
" <td>4.948840</td>\n",
" <td>4.444572</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7228</td>\n",
" <td>13093</td>\n",
" <td>3136</td>\n",
" <td>4.175064</td>\n",
" <td>4.753674</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10580</td>\n",
" <td>11342</td>\n",
" <td>2865</td>\n",
" <td>3.958813</td>\n",
" <td>4.635647</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>10475</td>\n",
" <td>9988</td>\n",
" <td>2771</td>\n",
" <td>3.604475</td>\n",
" <td>4.846544</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12371</td>\n",
" <td>9542</td>\n",
" <td>2837</td>\n",
" <td>3.363412</td>\n",
" <td>4.918673</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>9574</td>\n",
" <td>8203</td>\n",
" <td>1650</td>\n",
" <td>4.971515</td>\n",
" <td>4.462883</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>9560</td>\n",
" <td>6786</td>\n",
" <td>1591</td>\n",
" <td>4.265242</td>\n",
" <td>4.649208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7222</td>\n",
" <td>6379</td>\n",
" <td>1653</td>\n",
" <td>3.859044</td>\n",
" <td>4.720528</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>12626</td>\n",
" <td>6378</td>\n",
" <td>1469</td>\n",
" <td>4.341729</td>\n",
" <td>4.436692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1945</td>\n",
" <td>6245</td>\n",
" <td>1364</td>\n",
" <td>4.578446</td>\n",
" <td>4.607771</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1838</td>\n",
" <td>3731</td>\n",
" <td>1209</td>\n",
" <td>3.086022</td>\n",
" <td>5.321848</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>18918</td>\n",
" <td>3289</td>\n",
" <td>1261</td>\n",
" <td>2.608247</td>\n",
" <td>5.630168</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>5157</td>\n",
" <td>2969</td>\n",
" <td>782</td>\n",
" <td>3.796675</td>\n",
" <td>4.597036</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>3032</td>\n",
" <td>2763</td>\n",
" <td>777</td>\n",
" <td>3.555985</td>\n",
" <td>4.826075</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>11984</td>\n",
" <td>1560</td>\n",
" <td>544</td>\n",
" <td>2.867647</td>\n",
" <td>5.058128</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" СН сумма число среднее сигма\n",
"0 10567 15574 3147 4.948840 4.444572\n",
"1 7228 13093 3136 4.175064 4.753674\n",
"2 10580 11342 2865 3.958813 4.635647\n",
"3 10475 9988 2771 3.604475 4.846544\n",
"4 12371 9542 2837 3.363412 4.918673\n",
"5 9574 8203 1650 4.971515 4.462883\n",
"6 9560 6786 1591 4.265242 4.649208\n",
"7 7222 6379 1653 3.859044 4.720528\n",
"8 12626 6378 1469 4.341729 4.436692\n",
"9 1945 6245 1364 4.578446 4.607771\n",
"10 1838 3731 1209 3.086022 5.321848\n",
"11 18918 3289 1261 2.608247 5.630168\n",
"12 5157 2969 782 3.796675 4.597036\n",
"13 3032 2763 777 3.555985 4.826075\n",
"14 11984 1560 544 2.867647 5.058128"
]
},
"execution_count": 1056,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"top_scores = (df[['score','to']]\n",
" .groupby('to')\n",
" .agg(['sum','count', np.mean, np.std])\n",
" .sort_values(by=[('score','sum')], ascending=False)\n",
" .reset_index()\n",
" )\n",
"\n",
"top_scores.columns = ['СН','сумма','число', 'среднее', 'сигма']\n",
"top_scores"
]
},
{
"cell_type": "code",
"execution_count": 1057,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Максимальное среднее 4.97 у СН 9574\n"
]
}
],
"source": [
"print('Максимальное среднее {:.2f} у СН {}'\n",
" .format(\n",
" top_scores['среднее'].max(),\n",
" top_scores.loc[top_scores['среднее'].idxmax(), 'СН']\n",
" )\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Авторы и креативы"
]
},
{
"cell_type": "code",
"execution_count": 1191,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>sum</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 1</td>\n",
" <td>313</td>\n",
" <td>111</td>\n",
" <td>2.819820</td>\n",
" <td>5.611997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 2</td>\n",
" <td>311</td>\n",
" <td>107</td>\n",
" <td>2.906542</td>\n",
" <td>5.725700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 3</td>\n",
" <td>341</td>\n",
" <td>106</td>\n",
" <td>3.216981</td>\n",
" <td>5.117672</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 4</td>\n",
" <td>354</td>\n",
" <td>109</td>\n",
" <td>3.247706</td>\n",
" <td>4.794202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 5</td>\n",
" <td>317</td>\n",
" <td>108</td>\n",
" <td>2.935185</td>\n",
" <td>5.552255</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" to set task sum count mean std\n",
"0 1838 Другой Креатив 1 313 111 2.819820 5.611997\n",
"1 1838 Другой Креатив 2 311 107 2.906542 5.725700\n",
"2 1838 Другой Креатив 3 341 106 3.216981 5.117672\n",
"3 1838 Другой Креатив 4 354 109 3.247706 4.794202\n",
"4 1838 Другой Креатив 5 317 108 2.935185 5.552255"
]
},
"execution_count": 1191,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"author_cre = (\n",
" df\n",
" .groupby(['to','set','task'])\n",
" ['score']\n",
" .agg(['sum','count','mean','std'])\n",
" .reset_index()\n",
" .sort_values(by=['to','set','task', 'sum'], ascending=[1,0,1,0])\n",
"# .set_index(['to','taskset'])\n",
")\n",
"author_cre.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Число голосов по авторам и по работам "
]
},
{
"cell_type": "code",
"execution_count": 1201,
"metadata": {},
"outputs": [],
"source": [
"crosstab_n = (pd\n",
" .crosstab(\n",
" author_cre['to'],\n",
" [author_cre['task'], author_cre['set']],\n",
" values=author_cre['count'],\n",
" aggfunc=np.sum\n",
" )\n",
" .fillna(0)\n",
" .astype('int32')\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 1202,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>task</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 1</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 2</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 3</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 4</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 5</th>\n",
" <th colspan=\"2\" halign=\"left\">визитка</th>\n",
" <th colspan=\"2\" halign=\"left\">листовка</th>\n",
" <th colspan=\"2\" halign=\"left\">пакет</th>\n",
" <th colspan=\"2\" halign=\"left\">плакат</th>\n",
" </tr>\n",
" <tr>\n",
" <th>set</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>Другой</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",
" <tr>\n",
" <th>to</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></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>1838</th>\n",
" <td>111</td>\n",
" <td>0</td>\n",
" <td>107</td>\n",
" <td>0</td>\n",
" <td>106</td>\n",
" <td>0</td>\n",
" <td>109</td>\n",
" <td>0</td>\n",
" <td>108</td>\n",
" <td>0</td>\n",
" <td>137</td>\n",
" <td>0</td>\n",
" <td>241</td>\n",
" <td>0</td>\n",
" <td>130</td>\n",
" <td>0</td>\n",
" <td>160</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1945</th>\n",
" <td>111</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>130</td>\n",
" <td>133</td>\n",
" <td>213</td>\n",
" <td>217</td>\n",
" <td>122</td>\n",
" <td>120</td>\n",
" <td>154</td>\n",
" <td>164</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3032</th>\n",
" <td>0</td>\n",
" <td>112</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>144</td>\n",
" <td>0</td>\n",
" <td>229</td>\n",
" <td>0</td>\n",
" <td>134</td>\n",
" <td>0</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5157</th>\n",
" <td>110</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>145</td>\n",
" <td>0</td>\n",
" <td>238</td>\n",
" <td>0</td>\n",
" <td>127</td>\n",
" <td>0</td>\n",
" <td>162</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7222</th>\n",
" <td>0</td>\n",
" <td>151</td>\n",
" <td>0</td>\n",
" <td>164</td>\n",
" <td>0</td>\n",
" <td>158</td>\n",
" <td>0</td>\n",
" <td>160</td>\n",
" <td>0</td>\n",
" <td>152</td>\n",
" <td>0</td>\n",
" <td>165</td>\n",
" <td>0</td>\n",
" <td>341</td>\n",
" <td>0</td>\n",
" <td>153</td>\n",
" <td>0</td>\n",
" <td>209</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7228</th>\n",
" <td>128</td>\n",
" <td>152</td>\n",
" <td>132</td>\n",
" <td>147</td>\n",
" <td>134</td>\n",
" <td>152</td>\n",
" <td>127</td>\n",
" <td>148</td>\n",
" <td>137</td>\n",
" <td>153</td>\n",
" <td>171</td>\n",
" <td>174</td>\n",
" <td>292</td>\n",
" <td>334</td>\n",
" <td>151</td>\n",
" <td>201</td>\n",
" <td>196</td>\n",
" <td>207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9560</th>\n",
" <td>0</td>\n",
" <td>158</td>\n",
" <td>0</td>\n",
" <td>151</td>\n",
" <td>0</td>\n",
" <td>147</td>\n",
" <td>0</td>\n",
" <td>144</td>\n",
" <td>0</td>\n",
" <td>150</td>\n",
" <td>0</td>\n",
" <td>171</td>\n",
" <td>0</td>\n",
" <td>318</td>\n",
" <td>0</td>\n",
" <td>154</td>\n",
" <td>0</td>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9574</th>\n",
" <td>0</td>\n",
" <td>161</td>\n",
" <td>0</td>\n",
" <td>144</td>\n",
" <td>0</td>\n",
" <td>140</td>\n",
" <td>0</td>\n",
" <td>143</td>\n",
" <td>0</td>\n",
" <td>149</td>\n",
" <td>0</td>\n",
" <td>179</td>\n",
" <td>0</td>\n",
" <td>344</td>\n",
" <td>0</td>\n",
" <td>183</td>\n",
" <td>0</td>\n",
" <td>207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10475</th>\n",
" <td>108</td>\n",
" <td>138</td>\n",
" <td>109</td>\n",
" <td>136</td>\n",
" <td>112</td>\n",
" <td>137</td>\n",
" <td>108</td>\n",
" <td>137</td>\n",
" <td>110</td>\n",
" <td>139</td>\n",
" <td>140</td>\n",
" <td>176</td>\n",
" <td>245</td>\n",
" <td>308</td>\n",
" <td>140</td>\n",
" <td>158</td>\n",
" <td>174</td>\n",
" <td>196</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10567</th>\n",
" <td>138</td>\n",
" <td>139</td>\n",
" <td>136</td>\n",
" <td>127</td>\n",
" <td>127</td>\n",
" <td>135</td>\n",
" <td>125</td>\n",
" <td>135</td>\n",
" <td>129</td>\n",
" <td>134</td>\n",
" <td>195</td>\n",
" <td>187</td>\n",
" <td>313</td>\n",
" <td>326</td>\n",
" <td>169</td>\n",
" <td>189</td>\n",
" <td>221</td>\n",
" <td>222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10580</th>\n",
" <td>120</td>\n",
" <td>135</td>\n",
" <td>120</td>\n",
" <td>135</td>\n",
" <td>120</td>\n",
" <td>128</td>\n",
" <td>119</td>\n",
" <td>128</td>\n",
" <td>119</td>\n",
" <td>134</td>\n",
" <td>169</td>\n",
" <td>163</td>\n",
" <td>271</td>\n",
" <td>304</td>\n",
" <td>153</td>\n",
" <td>158</td>\n",
" <td>192</td>\n",
" <td>197</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11984</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>144</td>\n",
" <td>0</td>\n",
" <td>226</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>174</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12371</th>\n",
" <td>121</td>\n",
" <td>125</td>\n",
" <td>119</td>\n",
" <td>134</td>\n",
" <td>122</td>\n",
" <td>126</td>\n",
" <td>121</td>\n",
" <td>127</td>\n",
" <td>122</td>\n",
" <td>130</td>\n",
" <td>172</td>\n",
" <td>171</td>\n",
" <td>277</td>\n",
" <td>283</td>\n",
" <td>152</td>\n",
" <td>151</td>\n",
" <td>190</td>\n",
" <td>194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12626</th>\n",
" <td>0</td>\n",
" <td>136</td>\n",
" <td>0</td>\n",
" <td>128</td>\n",
" <td>0</td>\n",
" <td>130</td>\n",
" <td>0</td>\n",
" <td>137</td>\n",
" <td>0</td>\n",
" <td>141</td>\n",
" <td>0</td>\n",
" <td>161</td>\n",
" <td>0</td>\n",
" <td>289</td>\n",
" <td>0</td>\n",
" <td>150</td>\n",
" <td>0</td>\n",
" <td>197</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18918</th>\n",
" <td>110</td>\n",
" <td>0</td>\n",
" <td>108</td>\n",
" <td>0</td>\n",
" <td>111</td>\n",
" <td>0</td>\n",
" <td>110</td>\n",
" <td>0</td>\n",
" <td>110</td>\n",
" <td>0</td>\n",
" <td>151</td>\n",
" <td>0</td>\n",
" <td>251</td>\n",
" <td>0</td>\n",
" <td>128</td>\n",
" <td>0</td>\n",
" <td>182</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"task Креатив 1 Креатив 2 Креатив 3 Креатив 4 Креатив 5 \\\n",
"set Другой Один Другой Один Другой Один Другой Один Другой \n",
"to \n",
"1838 111 0 107 0 106 0 109 0 108 \n",
"1945 111 0 0 0 0 0 0 0 0 \n",
"3032 0 112 0 0 0 0 0 0 0 \n",
"5157 110 0 0 0 0 0 0 0 0 \n",
"7222 0 151 0 164 0 158 0 160 0 \n",
"7228 128 152 132 147 134 152 127 148 137 \n",
"9560 0 158 0 151 0 147 0 144 0 \n",
"9574 0 161 0 144 0 140 0 143 0 \n",
"10475 108 138 109 136 112 137 108 137 110 \n",
"10567 138 139 136 127 127 135 125 135 129 \n",
"10580 120 135 120 135 120 128 119 128 119 \n",
"11984 0 0 0 0 0 0 0 0 0 \n",
"12371 121 125 119 134 122 126 121 127 122 \n",
"12626 0 136 0 128 0 130 0 137 0 \n",
"18918 110 0 108 0 111 0 110 0 110 \n",
"\n",
"task визитка листовка пакет плакат \n",
"set Один Другой Один Другой Один Другой Один Другой Один \n",
"to \n",
"1838 0 137 0 241 0 130 0 160 0 \n",
"1945 0 130 133 213 217 122 120 154 164 \n",
"3032 0 0 144 0 229 0 134 0 158 \n",
"5157 0 145 0 238 0 127 0 162 0 \n",
"7222 152 0 165 0 341 0 153 0 209 \n",
"7228 153 171 174 292 334 151 201 196 207 \n",
"9560 150 0 171 0 318 0 154 0 198 \n",
"9574 149 0 179 0 344 0 183 0 207 \n",
"10475 139 140 176 245 308 140 158 174 196 \n",
"10567 134 195 187 313 326 169 189 221 222 \n",
"10580 134 169 163 271 304 153 158 192 197 \n",
"11984 0 144 0 226 0 0 0 174 0 \n",
"12371 130 172 171 277 283 152 151 190 194 \n",
"12626 141 0 161 0 289 0 150 0 197 \n",
"18918 0 151 0 251 0 128 0 182 0 "
]
},
"execution_count": 1202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crosstab_n"
]
},
{
"cell_type": "code",
"execution_count": 1203,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>task</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 1</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 2</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 3</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 4</th>\n",
" <th colspan=\"2\" halign=\"left\">Креатив 5</th>\n",
" <th colspan=\"2\" halign=\"left\">визитка</th>\n",
" <th colspan=\"2\" halign=\"left\">листовка</th>\n",
" <th colspan=\"2\" halign=\"left\">пакет</th>\n",
" <th colspan=\"2\" halign=\"left\">плакат</th>\n",
" </tr>\n",
" <tr>\n",
" <th>set</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>Другой</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",
" <tr>\n",
" <th>to</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></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>1838</th>\n",
" <td>313</td>\n",
" <td>0</td>\n",
" <td>311</td>\n",
" <td>0</td>\n",
" <td>341</td>\n",
" <td>0</td>\n",
" <td>354</td>\n",
" <td>0</td>\n",
" <td>317</td>\n",
" <td>0</td>\n",
" <td>356</td>\n",
" <td>0</td>\n",
" <td>630</td>\n",
" <td>0</td>\n",
" <td>604</td>\n",
" <td>0</td>\n",
" <td>505</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1945</th>\n",
" <td>475</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>466</td>\n",
" <td>617</td>\n",
" <td>1014</td>\n",
" <td>1098</td>\n",
" <td>454</td>\n",
" <td>525</td>\n",
" <td>746</td>\n",
" <td>850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3032</th>\n",
" <td>0</td>\n",
" <td>349</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>539</td>\n",
" <td>0</td>\n",
" <td>856</td>\n",
" <td>0</td>\n",
" <td>433</td>\n",
" <td>0</td>\n",
" <td>586</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5157</th>\n",
" <td>329</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>574</td>\n",
" <td>0</td>\n",
" <td>1040</td>\n",
" <td>0</td>\n",
" <td>323</td>\n",
" <td>0</td>\n",
" <td>703</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7222</th>\n",
" <td>0</td>\n",
" <td>501</td>\n",
" <td>0</td>\n",
" <td>820</td>\n",
" <td>0</td>\n",
" <td>729</td>\n",
" <td>0</td>\n",
" <td>614</td>\n",
" <td>0</td>\n",
" <td>631</td>\n",
" <td>0</td>\n",
" <td>486</td>\n",
" <td>0</td>\n",
" <td>1287</td>\n",
" <td>0</td>\n",
" <td>515</td>\n",
" <td>0</td>\n",
" <td>796</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7228</th>\n",
" <td>422</td>\n",
" <td>618</td>\n",
" <td>551</td>\n",
" <td>416</td>\n",
" <td>562</td>\n",
" <td>592</td>\n",
" <td>571</td>\n",
" <td>617</td>\n",
" <td>666</td>\n",
" <td>543</td>\n",
" <td>552</td>\n",
" <td>757</td>\n",
" <td>1176</td>\n",
" <td>1634</td>\n",
" <td>467</td>\n",
" <td>1253</td>\n",
" <td>694</td>\n",
" <td>1002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9560</th>\n",
" <td>0</td>\n",
" <td>695</td>\n",
" <td>0</td>\n",
" <td>680</td>\n",
" <td>0</td>\n",
" <td>664</td>\n",
" <td>0</td>\n",
" <td>569</td>\n",
" <td>0</td>\n",
" <td>772</td>\n",
" <td>0</td>\n",
" <td>593</td>\n",
" <td>0</td>\n",
" <td>1355</td>\n",
" <td>0</td>\n",
" <td>634</td>\n",
" <td>0</td>\n",
" <td>824</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9574</th>\n",
" <td>0</td>\n",
" <td>893</td>\n",
" <td>0</td>\n",
" <td>578</td>\n",
" <td>0</td>\n",
" <td>640</td>\n",
" <td>0</td>\n",
" <td>711</td>\n",
" <td>0</td>\n",
" <td>634</td>\n",
" <td>0</td>\n",
" <td>825</td>\n",
" <td>0</td>\n",
" <td>1872</td>\n",
" <td>0</td>\n",
" <td>1031</td>\n",
" <td>0</td>\n",
" <td>1019</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10475</th>\n",
" <td>313</td>\n",
" <td>530</td>\n",
" <td>288</td>\n",
" <td>384</td>\n",
" <td>448</td>\n",
" <td>454</td>\n",
" <td>438</td>\n",
" <td>502</td>\n",
" <td>444</td>\n",
" <td>709</td>\n",
" <td>551</td>\n",
" <td>766</td>\n",
" <td>711</td>\n",
" <td>1190</td>\n",
" <td>475</td>\n",
" <td>591</td>\n",
" <td>519</td>\n",
" <td>675</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10567</th>\n",
" <td>754</td>\n",
" <td>737</td>\n",
" <td>604</td>\n",
" <td>446</td>\n",
" <td>488</td>\n",
" <td>452</td>\n",
" <td>461</td>\n",
" <td>476</td>\n",
" <td>607</td>\n",
" <td>457</td>\n",
" <td>1075</td>\n",
" <td>1015</td>\n",
" <td>1894</td>\n",
" <td>1717</td>\n",
" <td>831</td>\n",
" <td>1098</td>\n",
" <td>1250</td>\n",
" <td>1212</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10580</th>\n",
" <td>413</td>\n",
" <td>606</td>\n",
" <td>361</td>\n",
" <td>553</td>\n",
" <td>310</td>\n",
" <td>427</td>\n",
" <td>295</td>\n",
" <td>391</td>\n",
" <td>253</td>\n",
" <td>542</td>\n",
" <td>769</td>\n",
" <td>733</td>\n",
" <td>1228</td>\n",
" <td>1293</td>\n",
" <td>751</td>\n",
" <td>693</td>\n",
" <td>862</td>\n",
" <td>862</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11984</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>366</td>\n",
" <td>0</td>\n",
" <td>720</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>474</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12371</th>\n",
" <td>380</td>\n",
" <td>474</td>\n",
" <td>317</td>\n",
" <td>261</td>\n",
" <td>493</td>\n",
" <td>257</td>\n",
" <td>351</td>\n",
" <td>358</td>\n",
" <td>384</td>\n",
" <td>394</td>\n",
" <td>649</td>\n",
" <td>680</td>\n",
" <td>957</td>\n",
" <td>1176</td>\n",
" <td>517</td>\n",
" <td>517</td>\n",
" <td>640</td>\n",
" <td>737</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12626</th>\n",
" <td>0</td>\n",
" <td>668</td>\n",
" <td>0</td>\n",
" <td>452</td>\n",
" <td>0</td>\n",
" <td>456</td>\n",
" <td>0</td>\n",
" <td>669</td>\n",
" <td>0</td>\n",
" <td>563</td>\n",
" <td>0</td>\n",
" <td>635</td>\n",
" <td>0</td>\n",
" <td>1359</td>\n",
" <td>0</td>\n",
" <td>650</td>\n",
" <td>0</td>\n",
" <td>926</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18918</th>\n",
" <td>279</td>\n",
" <td>0</td>\n",
" <td>270</td>\n",
" <td>0</td>\n",
" <td>168</td>\n",
" <td>0</td>\n",
" <td>327</td>\n",
" <td>0</td>\n",
" <td>182</td>\n",
" <td>0</td>\n",
" <td>374</td>\n",
" <td>0</td>\n",
" <td>698</td>\n",
" <td>0</td>\n",
" <td>282</td>\n",
" <td>0</td>\n",
" <td>709</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"task Креатив 1 Креатив 2 Креатив 3 Креатив 4 Креатив 5 \\\n",
"set Другой Один Другой Один Другой Один Другой Один Другой \n",
"to \n",
"1838 313 0 311 0 341 0 354 0 317 \n",
"1945 475 0 0 0 0 0 0 0 0 \n",
"3032 0 349 0 0 0 0 0 0 0 \n",
"5157 329 0 0 0 0 0 0 0 0 \n",
"7222 0 501 0 820 0 729 0 614 0 \n",
"7228 422 618 551 416 562 592 571 617 666 \n",
"9560 0 695 0 680 0 664 0 569 0 \n",
"9574 0 893 0 578 0 640 0 711 0 \n",
"10475 313 530 288 384 448 454 438 502 444 \n",
"10567 754 737 604 446 488 452 461 476 607 \n",
"10580 413 606 361 553 310 427 295 391 253 \n",
"11984 0 0 0 0 0 0 0 0 0 \n",
"12371 380 474 317 261 493 257 351 358 384 \n",
"12626 0 668 0 452 0 456 0 669 0 \n",
"18918 279 0 270 0 168 0 327 0 182 \n",
"\n",
"task визитка листовка пакет плакат \n",
"set Один Другой Один Другой Один Другой Один Другой Один \n",
"to \n",
"1838 0 356 0 630 0 604 0 505 0 \n",
"1945 0 466 617 1014 1098 454 525 746 850 \n",
"3032 0 0 539 0 856 0 433 0 586 \n",
"5157 0 574 0 1040 0 323 0 703 0 \n",
"7222 631 0 486 0 1287 0 515 0 796 \n",
"7228 543 552 757 1176 1634 467 1253 694 1002 \n",
"9560 772 0 593 0 1355 0 634 0 824 \n",
"9574 634 0 825 0 1872 0 1031 0 1019 \n",
"10475 709 551 766 711 1190 475 591 519 675 \n",
"10567 457 1075 1015 1894 1717 831 1098 1250 1212 \n",
"10580 542 769 733 1228 1293 751 693 862 862 \n",
"11984 0 366 0 720 0 0 0 474 0 \n",
"12371 394 649 680 957 1176 517 517 640 737 \n",
"12626 563 0 635 0 1359 0 650 0 926 \n",
"18918 0 374 0 698 0 282 0 709 0 "
]
},
"execution_count": 1203,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crosstab_sum = (pd\n",
" .crosstab(\n",
" author_cre['to'],\n",
" [author_cre['task'], author_cre['set']],\n",
" values=author_cre['sum'],\n",
" aggfunc=np.sum\n",
" )\n",
" .fillna(0)\n",
" .astype('int32')\n",
" )\n",
"crosstab_sum"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### СН, получившие максимум баллов по работам"
]
},
{
"cell_type": "code",
"execution_count": 1204,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"task set \n",
"Креатив 1 Другой 10567\n",
" Один 9574\n",
"Креатив 2 Другой 10567\n",
" Один 7222\n",
"Креатив 3 Другой 7228\n",
" Один 7222\n",
"Креатив 4 Другой 7228\n",
" Один 9574\n",
"Креатив 5 Другой 7228\n",
" Один 9560\n",
"визитка Другой 10567\n",
" Один 10567\n",
"листовка Другой 10567\n",
" Один 9574\n",
"пакет Другой 10567\n",
" Один 7228\n",
"плакат Другой 10567\n",
" Один 10567\n",
"dtype: int64"
]
},
"execution_count": 1204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crosstab_sum.idxmax()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Анонимные голоса"
]
},
{
"cell_type": "code",
"execution_count": 1058,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 2721.000000\n",
"mean 0.138920\n",
"std 0.822364\n",
"min -1.000000\n",
"50% 0.000000\n",
"max 1.000000\n",
"Name: score, dtype: float64"
]
},
"execution_count": 1058,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"votes_anon = df[df['from'] == 0]\n",
"votes_anon['score'].describe(percentiles=[])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Авторизованные голоса"
]
},
{
"cell_type": "code",
"execution_count": 1059,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 24335.000000\n",
"mean 4.416026\n",
"std 4.870570\n",
"min -10.000000\n",
"50% 6.000000\n",
"max 10.000000\n",
"Name: score, dtype: float64"
]
},
"execution_count": 1059,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"votes_auth = df[df['from'] > 0]\n",
"votes_auth['score'].describe(percentiles=[])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Селфи\n",
"Голосование кандидатов за самих себя - из числа авторизованных голосов.\n",
"* «Что не запрещено, то можно.»\n",
"* «Сам себя не похвалишь, никто не похвалит!»\n"
]
},
{
"cell_type": "code",
"execution_count": 1060,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 111.000000\n",
"mean 8.504505\n",
"std 2.152689\n",
"min 0.000000\n",
"25% 7.500000\n",
"50% 10.000000\n",
"75% 10.000000\n",
"max 10.000000\n",
"Name: score, dtype: float64"
]
},
"execution_count": 1060,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"votes_self = votes_auth[votes_auth['from'] == votes_auth['to']]\n",
"votes_self['score'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 1061,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th>to</th>\n",
" <th colspan=\"3\" halign=\"left\">score</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>sum</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10580</td>\n",
" <td>150</td>\n",
" <td>18</td>\n",
" <td>8.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7228</td>\n",
" <td>139</td>\n",
" <td>18</td>\n",
" <td>7.722222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12371</td>\n",
" <td>106</td>\n",
" <td>18</td>\n",
" <td>5.888889</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1838</td>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1945</td>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>9574</td>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>18918</td>\n",
" <td>80</td>\n",
" <td>8</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>12626</td>\n",
" <td>79</td>\n",
" <td>9</td>\n",
" <td>8.777778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9560</td>\n",
" <td>74</td>\n",
" <td>8</td>\n",
" <td>9.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>11984</td>\n",
" <td>28</td>\n",
" <td>3</td>\n",
" <td>9.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>7222</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>9.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>10567</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>9.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>3032</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>5157</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>10475</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" to score \n",
" sum count mean\n",
"0 10580 150 18 8.333333\n",
"1 7228 139 18 7.722222\n",
"2 12371 106 18 5.888889\n",
"3 1838 90 9 10.000000\n",
"4 1945 90 9 10.000000\n",
"5 9574 90 9 10.000000\n",
"6 18918 80 8 10.000000\n",
"7 12626 79 9 8.777778\n",
"8 9560 74 8 9.250000\n",
"9 11984 28 3 9.333333\n",
"10 7222 9 1 9.000000\n",
"11 10567 9 1 9.000000\n",
"12 3032 0 0 0.000000\n",
"13 5157 0 0 0.000000\n",
"14 10475 0 0 0.000000"
]
},
"execution_count": 1061,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(votes_self[['score','to']]\n",
" .groupby('to')\n",
" .agg({'score':['sum','count','mean']})\n",
" .reindex(participants, fill_value=0)\n",
" .sort_values(by=('score','sum'), ascending=False)\n",
" .reset_index())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Себяшки с комментариями"
]
},
{
"cell_type": "code",
"execution_count": 1062,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10819</td>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>пакет</td>\n",
" <td>биткоин то и правда падает!</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10797</td>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>за оригинальность</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>5703</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>прошло много времени, но мне все еще нравится</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>526</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>no coments</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>588</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>визитка</td>\n",
" <td>no comments</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>565</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>no coments</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>602</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>пакет</td>\n",
" <td>no comments</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>3560</td>\n",
" <td>10567</td>\n",
" <td>Один</td>\n",
" <td>пакет</td>\n",
" <td>Строго, сдержано.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>10084</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Креативненько и что не мало важно моя работа)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10131</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>Действительно считаю одним из лучших плакотов, если бы это была не моя работа оценку поставил бы такую же</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10225</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>Хоть и моя работа, но больше баллов дать не могу, не довел до ума</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>3301</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 1</td>\n",
" <td>За три вещи благодарен я судьбе: во-первых, что я человек, а не животное; во-вторых, что я мужчина, а не женщина; в-третьих, что я эллин, а не варвар .</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>4831</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>Всегда и у всех учись лучшему. Потому что Все есть во Всем .</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>4985</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 5</td>\n",
" <td>ТОСТ: За развёртывание стандарта 5G !</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>5140</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>Идиоты вообще очень опасны, и даже не потому, что они непременно злы, а потому, что они чужды всяким соображениям и всегда идут напролом, как будто дорога, на которой они очутились, принадлежит им...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>5428</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 4</td>\n",
" <td>— Позвольте-с вас спросить, почему так отвратительно пахнет? Шариков понюхал куртку озабоченно. — Ну, что ж, пахнет... известно: по специальности. Вчера котов душили, душили ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>6438</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 3</td>\n",
" <td>Верю в чудеса;)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>6478</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 2</td>\n",
" <td>Блаженство ума состоит в процессе добывания знаний .</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>5228</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Выгода должна быть взаимной !</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" index to set task \\\n",
"0 10819 1838 Другой пакет \n",
"1 10797 1838 Другой визитка \n",
"2 5703 7222 Один листовка \n",
"3 526 9574 Один листовка \n",
"4 588 9574 Один визитка \n",
"5 565 9574 Один плакат \n",
"6 602 9574 Один пакет \n",
"7 3560 10567 Один пакет \n",
"8 10084 11984 Другой листовка \n",
"9 10131 11984 Другой плакат \n",
"10 10225 11984 Другой визитка \n",
"11 3301 18918 Другой Креатив 1 \n",
"12 4831 18918 Другой визитка \n",
"13 4985 18918 Другой Креатив 5 \n",
"14 5140 18918 Другой плакат \n",
"15 5428 18918 Другой Креатив 4 \n",
"16 6438 18918 Другой Креатив 3 \n",
"17 6478 18918 Другой Креатив 2 \n",
"18 5228 18918 Другой листовка \n",
"\n",
" comment \n",
"0 биткоин то и правда падает! \n",
"1 за оригинальность \n",
"2 прошло много времени, но мне все еще нравится \n",
"3 no coments \n",
"4 no comments \n",
"5 no coments \n",
"6 no comments \n",
"7 Строго, сдержано. \n",
"8 Креативненько и что не мало важно моя работа) \n",
"9 Действительно считаю одним из лучших плакотов, если бы это была не моя работа оценку поставил бы такую же \n",
"10 Хоть и моя работа, но больше баллов дать не могу, не довел до ума \n",
"11 За три вещи благодарен я судьбе: во-первых, что я человек, а не животное; во-вторых, что я мужчина, а не женщина; в-третьих, что я эллин, а не варвар . \n",
"12 Всегда и у всех учись лучшему. Потому что Все есть во Всем . \n",
"13 ТОСТ: За развёртывание стандарта 5G ! \n",
"14 Идиоты вообще очень опасны, и даже не потому, что они непременно злы, а потому, что они чужды всяким соображениям и всегда идут напролом, как будто дорога, на которой они очутились, принадлежит им... \n",
"15 — Позвольте-с вас спросить, почему так отвратительно пахнет? Шариков понюхал куртку озабоченно. — Ну, что ж, пахнет... известно: по специальности. Вчера котов душили, душили ... \n",
"16 Верю в чудеса;) \n",
"17 Блаженство ума состоит в процессе добывания знаний . \n",
"18 Выгода должна быть взаимной ! "
]
},
"execution_count": 1062,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(\n",
" df[(df['to']==df['from']) & (df['comment'])][['to','set','task','comment']]\n",
" .sort_values(by='to')\n",
" .reset_index()\n",
")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Авторы оценивают соперников"
]
},
{
"cell_type": "code",
"execution_count": 1069,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10567</td>\n",
" <td>441</td>\n",
" <td>127</td>\n",
" <td>3.472441</td>\n",
" <td>5.365715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10580</td>\n",
" <td>265</td>\n",
" <td>113</td>\n",
" <td>2.345133</td>\n",
" <td>4.352278</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9574</td>\n",
" <td>231</td>\n",
" <td>65</td>\n",
" <td>3.553846</td>\n",
" <td>5.709178</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>12371</td>\n",
" <td>195</td>\n",
" <td>108</td>\n",
" <td>1.805556</td>\n",
" <td>4.926484</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12626</td>\n",
" <td>189</td>\n",
" <td>57</td>\n",
" <td>3.315789</td>\n",
" <td>4.721372</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>7222</td>\n",
" <td>141</td>\n",
" <td>69</td>\n",
" <td>2.043478</td>\n",
" <td>6.189257</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>10475</td>\n",
" <td>122</td>\n",
" <td>123</td>\n",
" <td>0.991870</td>\n",
" <td>5.477968</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7228</td>\n",
" <td>117</td>\n",
" <td>116</td>\n",
" <td>1.008621</td>\n",
" <td>5.347890</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9560</td>\n",
" <td>87</td>\n",
" <td>60</td>\n",
" <td>1.450000</td>\n",
" <td>6.320333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1945</td>\n",
" <td>45</td>\n",
" <td>47</td>\n",
" <td>0.957447</td>\n",
" <td>3.671023</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>5157</td>\n",
" <td>39</td>\n",
" <td>31</td>\n",
" <td>1.258065</td>\n",
" <td>4.404299</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>3032</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>0.612903</td>\n",
" <td>4.454791</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>11984</td>\n",
" <td>-8</td>\n",
" <td>19</td>\n",
" <td>-0.421053</td>\n",
" <td>4.705975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1838</td>\n",
" <td>-11</td>\n",
" <td>47</td>\n",
" <td>-0.234043</td>\n",
" <td>4.324917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>18918</td>\n",
" <td>-183</td>\n",
" <td>54</td>\n",
" <td>-3.388889</td>\n",
" <td>4.865809</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" СН сумма число среднее сигма\n",
"0 10567 441 127 3.472441 5.365715\n",
"1 10580 265 113 2.345133 4.352278\n",
"2 9574 231 65 3.553846 5.709178\n",
"3 12371 195 108 1.805556 4.926484\n",
"4 12626 189 57 3.315789 4.721372\n",
"5 7222 141 69 2.043478 6.189257\n",
"6 10475 122 123 0.991870 5.477968\n",
"7 7228 117 116 1.008621 5.347890\n",
"8 9560 87 60 1.450000 6.320333\n",
"9 1945 45 47 0.957447 3.671023\n",
"10 5157 39 31 1.258065 4.404299\n",
"11 3032 19 31 0.612903 4.454791\n",
"12 11984 -8 19 -0.421053 4.705975\n",
"13 1838 -11 47 -0.234043 4.324917\n",
"14 18918 -183 54 -3.388889 4.865809"
]
},
"execution_count": 1069,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from_competition = (\n",
" votes_auth[(votes_auth['from'].isin(participants)) & (votes_auth['from'] != votes_auth['to'])]\n",
" [['score','to']]\n",
" .groupby('to')\n",
" .agg({'score':['sum','count','mean','std']})\n",
" .sort_values(by=('score','sum'), ascending=False)\n",
" .reset_index()\n",
")\n",
"from_competition.columns=['СН','сумма','число','среднее','сигма']\n",
"from_competition"
]
},
{
"cell_type": "code",
"execution_count": 1207,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Высшая средняя оценка от соперников 3.55 - у работ СН 9574\n",
"Утопительная средняя оценка от соперников -3.39 - у работ СН 18918\n"
]
}
],
"source": [
"def show_competition_maxmin(df):\n",
" max_value = df['среднее'].max()\n",
" print('Высшая средняя оценка от соперников {:0.2f} - у работ СН {}'\n",
" .format( max_value, df.loc[ df['среднее'].idxmax(), 'СН'])\n",
" )\n",
" \n",
" min_value = df['среднее'].min()\n",
" print('Утопительная средняя оценка от соперников {:0.2f} - у работ СН {}'\n",
" .format( min_value, df.loc[ df['среднее'].idxmin(), 'СН'])\n",
" )\n",
"\n",
"\n",
"show_competition_maxmin(from_competition)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Большинство участников выиграло от голосов соперников.\n",
"\n",
"Проиграли только трое. Больше всего коллеги «утопили» СН 18918"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Кто топил ~~Муму~~ СН 18918 ?"
]
},
{
"cell_type": "code",
"execution_count": 1208,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>12371</td>\n",
" <td>-51</td>\n",
" <td>9</td>\n",
" <td>-5.666667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>12626</td>\n",
" <td>-45</td>\n",
" <td>9</td>\n",
" <td>-5.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10580</td>\n",
" <td>-35</td>\n",
" <td>9</td>\n",
" <td>-3.888889</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9560</td>\n",
" <td>-30</td>\n",
" <td>8</td>\n",
" <td>-3.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>9574</td>\n",
" <td>-11</td>\n",
" <td>9</td>\n",
" <td>-1.222222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1838</td>\n",
" <td>-10</td>\n",
" <td>9</td>\n",
" <td>-1.111111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7222</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" сн сумма число среднее\n",
"0 12371 -51 9 -5.666667\n",
"1 12626 -45 9 -5.000000\n",
"2 10580 -35 9 -3.888889\n",
"3 9560 -30 8 -3.750000\n",
"4 9574 -11 9 -1.222222\n",
"5 1838 -10 9 -1.111111\n",
"6 7222 -1 1 -1.000000"
]
},
"execution_count": 1208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def whocares(SN):\n",
" df = (\n",
" votes_auth[\n",
" (votes_auth['from'].isin(participants)) \n",
" & (votes_auth['from'] != votes_auth['to']) \n",
" & (votes_auth['to'] == SN)\n",
" ]\n",
" [['score','from']]\n",
" .groupby('from')\n",
" .agg({'score':['sum','count','mean']})\n",
" .sort_values(by=('score','sum'), ascending=True)\n",
" .reset_index()\n",
" )\n",
" \n",
" #df.columns = [' '.join(col).strip() for col in df.columns.values]\n",
" df.columns = df.columns.get_level_values(1)\n",
" df.columns = ['сн','сумма','число','среднее']\n",
" return df\n",
"\n",
"whocares(18918)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Порядок работ на странице\n",
"На страницах голосования работы представлены в определённом порядке. Поскольку страницу надо прокручивать, вероятно, что первые работы получили больше голосов, чем нижние.\n",
"\n",
"Firstman [сообщил](http://forum.ostashkov.ru/showthread.php?t=55180&p=864322&viewfull=1#post864322), что порядок СН в каждой категории одинаков:\n",
"\n",
"> Все работы в каждой категории (листовка, пакет, постер итд) идут в одинаковом порядке по СН."
]
},
{
"cell_type": "code",
"execution_count": 1077,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Число работ на странице: 21\n"
]
}
],
"source": [
"# Листовка двусторонняя\n",
"order_listovki = [7222, 7228, 9560, 9574, 10475, 10567, 10580, 12371, 12626, 7228, 10567, 10580, \n",
" 12371, 1838, 18918, 10475, 5157, 11984, 3032, 1945, 1945]\n",
"print('Число работ на странице: {}'.format(len(order_listovki)))\n",
"for sn in order_listovki:\n",
" if not sn in participants:\n",
" print(sn, 'not in participants')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Пропавший 3032\n",
"**Upd.** Нашёлся."
]
},
{
"cell_type": "code",
"execution_count": 1078,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3032 отдал 0 голосов, получил 777\n"
]
}
],
"source": [
"def give_get(sn):\n",
" print('{} отдал {} голосов, получил {}'.format(\n",
" sn,\n",
" len(df[df['from']==sn]),\n",
" len(df[df['to']==sn])\n",
" ))\n",
"\n",
"give_get(3032)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Фокус голосов\n",
"Среди неанонимных голосов для каждого голосовавшего СН считаем<br>\n",
"`focus = (число отданных голосов) / (число получателей голосов)^2`\n",
" \n",
"* Максимум соответствует множеству голосов в адрес работ только одного кандидата.\n",
"* Минимум означает равномерное распределение голосов среди нескольких адресатов.\n",
"* Положительные и отрицательные голоса рассмотрим отдельно"
]
},
{
"cell_type": "code",
"execution_count": 1084,
"metadata": {},
"outputs": [],
"source": [
"def weight_votes(src, sign=1, col_name = 'k'):\n",
" df = (\n",
" src[\n",
" (~src['from'].isin(participants))\n",
" & ((src.score > 0) if sign > 0 else (src.score < 0))\n",
" ]\n",
" .groupby('from')\n",
" .agg({'score':['sum','count','mean','std'], 'to':[pd.Series.nunique, np.max]})\n",
" .sort_values(by=[('to','nunique'), ('score','sum')], ascending=[True, (sign < 0)])\n",
" .reset_index()\n",
" )\n",
"\n",
" df[col_name] = np.sign(sign) * df[('score','sum')] / df[('to','nunique')].pow(2)\n",
" df.loc[df[('to','nunique')] > 1, ('to','amax')] = 0\n",
" df.columns = [' '.join(col).strip().replace('amax', 'sn') for col in df.columns.values]\n",
"\n",
" # Бенефициары сольных голосов\n",
" beneficiars = (df[ df[('to nunique')] == 1]\n",
" .groupby('to sn')\n",
" .agg({'k':'sum'})\n",
" .sort_values('k', ascending=False)\n",
" .reset_index()\n",
" )\n",
" beneficiars.columns = beneficiars.columns.get_level_values(0)\n",
" beneficiars['k'] = beneficiars['k'].astype('int32')\n",
"\n",
" no_bene = [x for x in participants if not x in beneficiars['to sn'].values]\n",
"\n",
" df.columns = ['СН','сумма','число','среднее','сигма','получатели','СН единственного получателя','вес']\n",
"\n",
" return {'df': df, 'bene': beneficiars, 'no_bene': no_bene}"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"### Положительные"
]
},
{
"cell_type": "code",
"execution_count": 1085,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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>СН единственного получателя</th>\n",
" <th>вес</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10431</td>\n",
" <td>80</td>\n",
" <td>8</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>1945</td>\n",
" <td>80.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>20554</td>\n",
" <td>50</td>\n",
" <td>5</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>33941</td>\n",
" <td>50</td>\n",
" <td>5</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10580</td>\n",
" <td>50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>26322</td>\n",
" <td>40</td>\n",
" <td>4</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10475</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>23630</td>\n",
" <td>39</td>\n",
" <td>5</td>\n",
" <td>7.800000</td>\n",
" <td>1.643168</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>39.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>7469</td>\n",
" <td>29</td>\n",
" <td>3</td>\n",
" <td>9.666667</td>\n",
" <td>0.577350</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>29.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>20334</td>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>11984</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>22718</td>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>28007</td>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>43232</td>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>10.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>7228</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>25893</td>\n",
" <td>18</td>\n",
" <td>2</td>\n",
" <td>9.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>18.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>44914</td>\n",
" <td>16</td>\n",
" <td>2</td>\n",
" <td>8.000000</td>\n",
" <td>1.414214</td>\n",
" <td>1</td>\n",
" <td>10567</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" СН сумма число среднее сигма получатели \\\n",
"0 10431 80 8 10.000000 0.000000 1 \n",
"1 20554 50 5 10.000000 0.000000 1 \n",
"2 33941 50 5 10.000000 0.000000 1 \n",
"3 26322 40 4 10.000000 0.000000 1 \n",
"4 23630 39 5 7.800000 1.643168 1 \n",
"5 7469 29 3 9.666667 0.577350 1 \n",
"6 20334 20 2 10.000000 0.000000 1 \n",
"7 22718 20 2 10.000000 0.000000 1 \n",
"8 28007 20 2 10.000000 0.000000 1 \n",
"9 43232 20 2 10.000000 0.000000 1 \n",
"10 25893 18 2 9.000000 0.000000 1 \n",
"11 44914 16 2 8.000000 1.414214 1 \n",
"\n",
" СН единственного получателя вес \n",
"0 1945 80.0 \n",
"1 10567 50.0 \n",
"2 10580 50.0 \n",
"3 10475 40.0 \n",
"4 10567 39.0 \n",
"5 10567 29.0 \n",
"6 11984 20.0 \n",
"7 10567 20.0 \n",
"8 10567 20.0 \n",
"9 7228 20.0 \n",
"10 10567 18.0 \n",
"11 10567 16.0 "
]
},
"execution_count": 1085,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_plus = weight_votes(votes_auth, +1)\n",
"focus_plus['df'].head(12)"
]
},
{
"cell_type": "code",
"execution_count": 1086,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>from</th>\n",
" <th>ts</th>\n",
" <th>score</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" <th>taskset</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16429</th>\n",
" <td>62649</td>\n",
" <td>2018-02-28 22:37:00</td>\n",
" <td>8</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>привлекает внимание</td>\n",
" <td>листовка:Другой</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16432</th>\n",
" <td>62649</td>\n",
" <td>2018-02-28 22:38:00</td>\n",
" <td>8</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>хороший дизайн</td>\n",
" <td>визитка:Другой</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" from ts score to set task \\\n",
"16429 62649 2018-02-28 22:37:00 8 10567 Другой листовка \n",
"16432 62649 2018-02-28 22:38:00 8 10567 Другой визитка \n",
"\n",
" comment taskset \n",
"16429 привлекает внимание листовка:Другой \n",
"16432 хороший дизайн визитка:Другой "
]
},
"execution_count": 1086,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def show_votes(sn):\n",
" return df[df['from']==sn]\n",
"\n",
"show_votes(62649)"
]
},
{
"cell_type": "code",
"execution_count": 1088,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 459.000000\n",
"mean 4.505284\n",
"std 6.365460\n",
"min 0.416667\n",
"25% 1.432063\n",
"50% 2.697778\n",
"75% 5.542222\n",
"max 80.000000\n",
"Name: вес, dtype: float64"
]
},
"execution_count": 1088,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_plus['df']['вес'].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Сфокусированность по кандидатам"
]
},
{
"cell_type": "code",
"execution_count": 1089,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>to sn</th>\n",
" <th>k</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10567</td>\n",
" <td>265</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1945</td>\n",
" <td>108</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7222</td>\n",
" <td>86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9574</td>\n",
" <td>79</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7228</td>\n",
" <td>78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>10475</td>\n",
" <td>77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>10580</td>\n",
" <td>57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>9560</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>11984</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>12626</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>12371</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>18918</td>\n",
" <td>9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" to sn k\n",
"0 10567 265\n",
"1 1945 108\n",
"2 7222 86\n",
"3 9574 79\n",
"4 7228 78\n",
"5 10475 77\n",
"6 10580 57\n",
"7 9560 40\n",
"8 11984 20\n",
"9 12626 10\n",
"10 12371 9\n",
"11 18918 9"
]
},
"execution_count": 1089,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_plus['bene']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Эти СН получили указанные в колонке *k* баллы в результате голосов от авторизованных участников,<br>\n",
"которые оставили положительные голоса за работы **только одного кандидата**.\n",
"\n",
"Есть вероятность накрутки, когда куратор просит курируемых проголосовать за конкретные работы, предоставляя им прямые ссылки на свои работы / скрин с четкой инструкцией как голосовать."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Не получившие \"сольных\" голосов честные участники:"
]
},
{
"cell_type": "code",
"execution_count": 1090,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1838, 3032, 5157]"
]
},
"execution_count": 1090,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_plus['no_bene']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Негативные\n",
"Кого «топили» авторизованные пользователи, проставив негативные голоса только одному кандидату.\n",
"\n",
"Это не так интересно, т.к. топить скорее стали бы не одного, а нескольких."
]
},
{
"cell_type": "code",
"execution_count": 1091,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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>СН единственного получателя</th>\n",
" <th>вес</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>20243</td>\n",
" <td>-20</td>\n",
" <td>2</td>\n",
" <td>-10.000000</td>\n",
" <td>0.00000</td>\n",
" <td>1</td>\n",
" <td>7228</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9613</td>\n",
" <td>-10</td>\n",
" <td>1</td>\n",
" <td>-10.000000</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>7222</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>15248</td>\n",
" <td>-10</td>\n",
" <td>3</td>\n",
" <td>-3.333333</td>\n",
" <td>0.57735</td>\n",
" <td>1</td>\n",
" <td>18918</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>31953</td>\n",
" <td>-10</td>\n",
" <td>1</td>\n",
" <td>-10.000000</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>7222</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>35648</td>\n",
" <td>-10</td>\n",
" <td>1</td>\n",
" <td>-10.000000</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>7222</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" СН сумма число среднее сигма получатели \\\n",
"0 20243 -20 2 -10.000000 0.00000 1 \n",
"1 9613 -10 1 -10.000000 NaN 1 \n",
"2 15248 -10 3 -3.333333 0.57735 1 \n",
"3 31953 -10 1 -10.000000 NaN 1 \n",
"4 35648 -10 1 -10.000000 NaN 1 \n",
"\n",
" СН единственного получателя вес \n",
"0 7228 20.0 \n",
"1 7222 10.0 \n",
"2 18918 10.0 \n",
"3 7222 10.0 \n",
"4 7222 10.0 "
]
},
"execution_count": 1091,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_minus = weight_votes(votes_auth, -1)\n",
"focus_minus['df'].head()"
]
},
{
"cell_type": "code",
"execution_count": 1092,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>to sn</th>\n",
" <th>k</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10475</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7222</td>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7228</td>\n",
" <td>32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1838</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18918</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>9560</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>9574</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>11984</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>12371</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>5157</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1945</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>3032</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>10567</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>10580</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" to sn k\n",
"0 10475 55\n",
"1 7222 46\n",
"2 7228 32\n",
"3 1838 13\n",
"4 18918 12\n",
"5 9560 5\n",
"6 9574 5\n",
"7 11984 4\n",
"8 12371 4\n",
"9 5157 3\n",
"10 1945 1\n",
"11 3032 1\n",
"12 10567 1\n",
"13 10580 1"
]
},
"execution_count": 1092,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_minus['bene']"
]
},
{
"cell_type": "code",
"execution_count": 1093,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[12626]"
]
},
"execution_count": 1093,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"focus_minus['no_bene']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Голоса по кандидатам\n",
"Индексы кому и от-кого"
]
},
{
"cell_type": "code",
"execution_count": 1094,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\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>sum</th>\n",
" <th>count</th>\n",
" </tr>\n",
" <tr>\n",
" <th>to</th>\n",
" <th>from</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"5\" valign=\"top\">1838</th>\n",
" <th>1838</th>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10570</th>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12642</th>\n",
" <td>90</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10555</th>\n",
" <td>87</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12480</th>\n",
" <td>84</td>\n",
" <td>9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sum count\n",
"to from \n",
"1838 1838 90 9\n",
" 10570 90 9\n",
" 12642 90 9\n",
" 10555 87 9\n",
" 12480 84 9"
]
},
"execution_count": 1094,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"graph = (votes_auth\n",
" .groupby(['to','from'])['score']\n",
" .agg(['sum','count'])\n",
" .reset_index()\n",
" .sort_values(by=['to','sum'], ascending=[1,0])\n",
" .set_index(['to','from'])\n",
" )\n",
"graph.head()"
]
},
{
"cell_type": "code",
"execution_count": 1095,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" sum count\n",
"from \n",
"1838 90 9\n",
"10570 90 9\n",
"12642 90 9\n",
"10555 87 9\n",
"12480 84 9\n",
"9660 80 9\n",
"18173 80 8\n",
"9649 76 9\n",
"27576 75 9\n",
"9594 73 9\n",
" sum count\n",
"from \n",
"20148 -30 3\n",
"10280 -36 9\n",
"11441 -45 9\n",
"37434 -46 9\n",
"10149 -47 9\n",
"61583 -50 5\n",
"43371 -52 6\n",
"1916 -54 8\n",
"28811 -60 9\n",
"19678 -69 9\n"
]
}
],
"source": [
"def votes_for(sn):\n",
" print(graph.loc[sn].head(10))\n",
" print(graph.loc[sn].tail(10))\n",
"\n",
"votes_for(1838)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Всего 1 голос"
]
},
{
"cell_type": "code",
"execution_count": 1096,
"metadata": {},
"outputs": [],
"source": [
"n_votes = df.groupby('from')['score'].agg(['count','sum'])\n"
]
},
{
"cell_type": "code",
"execution_count": 1097,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>sum</th>\n",
" </tr>\n",
" <tr>\n",
" <th>from</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>39806</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33662</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64500</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59355</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59175</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58957</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52725</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50510</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48445</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44404</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40549</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11895</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38981</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36816</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34026</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64922</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33434</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29234</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18663</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22502</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24028</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29057</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25848</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30069</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9179</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31782</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44126</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63750</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47147</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57433</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60824</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21621</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54080</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36478</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49547</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45806</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32929</th>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30190</th>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36056</th>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64850</th>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40105</th>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48582</th>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20697</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20930</th>\n",
" <td>1</td>\n",
" <td>-3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45330</th>\n",
" <td>1</td>\n",
" <td>-10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count sum\n",
"from \n",
"39806 1 10\n",
"33662 1 10\n",
"64500 1 10\n",
"59355 1 10\n",
"59175 1 10\n",
"58957 1 10\n",
"52725 1 10\n",
"50510 1 10\n",
"48445 1 10\n",
"44404 1 10\n",
"40549 1 10\n",
"11895 1 10\n",
"38981 1 10\n",
"36816 1 10\n",
"34026 1 10\n",
"64922 1 10\n",
"33434 1 10\n",
"29234 1 10\n",
"18663 1 10\n",
"22502 1 10\n",
"24028 1 10\n",
"29057 1 10\n",
"25848 1 10\n",
"30069 1 10\n",
"9179 1 9\n",
"31782 1 9\n",
"44126 1 9\n",
"63750 1 9\n",
"47147 1 9\n",
"57433 1 9\n",
"60824 1 8\n",
"21621 1 8\n",
"54080 1 8\n",
"36478 1 8\n",
"49547 1 8\n",
"45806 1 8\n",
"32929 1 7\n",
"30190 1 7\n",
"36056 1 6\n",
"64850 1 6\n",
"40105 1 6\n",
"48582 1 5\n",
"20697 1 4\n",
"20930 1 -3\n",
"45330 1 -10"
]
},
"execution_count": 1097,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n_votes[ n_votes['count'] ==1].sort_values(by='sum', ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Графики!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Среди голосовавших за кандидата N нарисуем их же голоса по другим.\n",
"\n",
"Один голосующий - одна точка.\n",
"\n",
"* горизонтальная ось: сумма голосов за других\n",
"* вертикальная ось: количество других получателей.\n"
]
},
{
"cell_type": "code",
"execution_count": 1230,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"def sn_for_others(sn):\n",
" '''\n",
" Для данного СН найдём всех, оценивших его работы,\n",
" и находим все их голоса за _прочие_ СН.\n",
" Исключая Авторов.\n",
" '''\n",
" if not sn in participants:\n",
" print('СН {} не является автором.'.format(sn))\n",
" return\n",
" else:\n",
" print('Голосовавшие за СН {} голосуют за прочих:'.format(sn))\n",
" \n",
" voters = graph.loc[sn].index.values\n",
" return (\n",
" df[\n",
" (df['from'].isin(voters)) # голосовал за СН\n",
" &\n",
" (~df['from'].isin(participants)) # НЕ Автор\n",
" &\n",
" (df['to'] != sn) # голос НЕ за указанный СН\n",
" ]\n",
" .groupby(['from'])\n",
" ['score','to']\n",
" .agg({'score':'sum', 'to':pd.Series.nunique})\n",
" )\n",
"\n",
"def chart_for_others(sn):\n",
" snfo = sn_for_others(sn)\n",
" sns.jointplot(x=\"to\", y=\"score\", data=snfo);\n"
]
},
{
"cell_type": "code",
"execution_count": 1235,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Голосовавшие за СН 7222 голосуют за прочих:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAGoCAYAAAAw6SAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0lPW97/HPlxA0UDWg1MrFDSqiRm4aRYXlZVca1IrU\n6hZKd6l2b109aGvdJwqrtl5qK6f04nYpunVrZZ8qolQjVo4gVWt1K4oCclEU0WKCuyAQRUAJ4Xv+\nyCTNZSaZTOaZZ55n3q+1ZpH8Mpl8c2E+8/s9v4u5uwAAiKtuYRcAAECQCDoAQKwRdACAWCPoAACx\nRtABAGKNoAMAxBpBBwCINYIOABBrBB0AINa6h11AiNgSBkDUWdgFRAE9OgBArBVyjw5AAXto6caw\nS2jyrdGHh11CrNGjAwDEGkEHAIg1gg4AEGsEHQAg1gg6AECsEXQAgFgj6AAAsUbQAQBijaADAMQa\nQQcAiDWCDgAQawQdACDWCDoAQKwRdACAWCPoAACxRtABAGKNoAMAxBpBBwCINYIOABBrBB0AINYI\nOgBArBF0AIBYI+gAALFG0AEAYo2gAwDEGkEHAIg1gg4AEGsEHQAg1gg6AECsEXQAgFgj6AAAsUbQ\nAQBijaADAMQaQQcAiDWCDgAQawQdACDWCDoAQKwRdACAWCPoAACxRtABAGKNoAMAxBpBBwCIte5h\nFwDE1UNLN4ZdQpNvjT487BKA0NCjAwDEGkEHAIg1hi4jLF+GxhgWA5DP6NEBAGKNHl0n5UsvCgCQ\nHoIOscILkfzH7wi5xtAlACDW6NGhy3iFnv/4HaGQmbuHXUMozOxpSYeEXUfCIZI+DruINFFrMKg1\n+6JSp5R5rR+7+/hsFxM3BRt0+cTMlrl7edh1pINag0Gt2ReVOqVo1RpFXKMDAMQaQQcAiDWCLj/c\nE3YBnUCtwaDW7ItKnVK0ao0crtEBAGKNHh0AINYIOgBArBF0AIBYI+gAALFWsEE3fvx4l8SNGzdu\nUb6lLabPeWkp2KD7+OOo7AwEAF1XyM95BRt0AIDCQNABAGKNoAMAxBrn0TVTV1en6upqff7552GX\nAmTF/vvvrwEDBqi4uDjsUoDQEHTNVFdX64ADDtCgQYNkZmGXA3SJu2vr1q2qrq7W4MGDwy4HCA1D\nl818/vnnOvjggwk5xIKZ6eCDD2aEAgWPoGuFkEOc8PcMEHQAgJgj6BCap59+WkOHDtVRRx2lmTNn\nJr3P3XffrWHDhmnkyJEaO3as1q5dK0l69dVXNXLkSI0cOVIjRozQ448/nsvSm3zve9/TiBEjNHz4\ncF100UX67LPP2txn69atOuuss/SlL31JV155ZUZfZ86cORoyZIiGDBmiOXPmNLXPmzdPw4cPV1lZ\nma699tqMvw8g1ty9IG8nnniit7Z27do2bXFQV1cXyOPu3bu3S597xBFH+HvvvedffPGFDx8+3Nes\nWdPmfp988knT20888YRXVFS4u/vOnTubvq9NmzZ53759A/s+29O8vh/96Ed+6623trnPZ5995n/5\ny1/8rrvu8mnTpnX6a2zdutUHDx7sW7du9W3btvngwYN927Zt/vHHH/vAgQN98+bN7u7+ne98x5cs\nWdLm8+P6dx0Hj79R7afd+icfdN0f/bRb/+SPv1Hd2Yfo0nNeDKT1vdOjyyMffPCBjjnmGE2dOrWp\nh7Br1y5J0uuvv64zzjhDJ554oioqKvTRRx9Jku69916ddNJJGjFihL75zW823f+73/2urrnmGp11\n1lm67rrr9Oc//7mpBzRq1Cjt2LFD7q7Kykodf/zxGjZsmObNmydJev7553XmmWfqoosu0jHHHKMp\nU6bIEwf0Dho0SDfffLPGjh2rRx99NOPv9dVXX9VRRx2lI444Qj169NCkSZP0xBNPtLnfgQce2PT2\nzp07m6459ezZU927N0wa/vzzz1tcizr33HO1adOmNo915pln6uqrr9Zpp52m448/Xq+++mrG9beu\nz921e/fupNfEevXqpbFjx2r//fdv87HFixfr1FNP1QknnKCLL744aY9w0aJFGjdunPr06aPevXtr\n3Lhxevrpp7VhwwYdffTR6tu3ryTp7LPP1h/+8Icuf0/IjarlNZrx2CrV1O6WS6qp3a0Zj61S1fKa\nsEuLHYIuz6xbt06XX3653nzzTR144IGaPXu26urqdNVVV2n+/Pl6/fXXddlll+nHP/6xJOnCCy/U\na6+9ppUrV+rYY4/Vfffd1/RY77zzjpYsWaJf//rX+tWvfqU777xTK1as0F/+8heVlJToscce04oV\nK7Ry5UotWbJElZWVTQG6fPly3XbbbVq7dq02bNigl156qelx999/f7344ouaNGlSi9offPDBpjBt\nfrvooovafJ81NTUaOHBg0/sDBgxQTU3y/+B33nmnjjzySF177bW6/fbbm9qXLl2qsrIyDRs2THff\nfXdT8C1cuFD9+vVL+lg7d+7Uf//3f2v27Nm67LLLkv78k30PI0eOVG1tbdLHvPTSS/WVr3xFb7/9\ntq666qqk90nm448/1i233KIlS5bojTfeUHl5uX7zm9+0uV+qn9VRRx2lt99+Wx988IH27t2rqqoq\nffjhh2l/fYRr1qJ12l1X36Jtd129Zi1aF1JF8cU6ujwzcOBAjRkzRpL07W9/W7fffrvGjx+v1atX\na9y4cZKk+vp6HXbYYZKk1atX6/rrr1dtba0+++wzVVRUND3WxRdfrKKiIknSmDFjdM0112jKlCm6\n8MILNWDAAL344ouaPHmyioqKdOihh+qMM87Qa6+9pgMPPFAnn3yyBgwYIEkaOXKkPvjgA40dO1aS\ndMkllyStfcqUKZoyZUpa32djD7G5VDMEp02bpmnTpumhhx7SLbfc0nSNavTo0VqzZo3eeustTZ06\nVeecc07SXlNzkydPliSdfvrp+vTTT1VbW6vS0tKmjw8dOlQrVqxI63to9Lvf/U719fW66qqrNG/e\nPF166aVpfd4rr7yitWvXNv2+9+zZo1NPPbXN/VL9rHr37q277rpLl1xyibp166bTTjtNGzZs6FTt\nCM+m2t2dakfmCLo80/rJ3szk7iorK9PLL7/c5v7f/e53VVVVpREjRuiBBx7Q888/3/SxXr16Nb09\nffp0nXfeeVq4cKFOOeUULVmyJOkTaKP99tuv6e2ioiLt3bs36eM29+CDD2rWrFlt2o866ijNnz+/\nRduAAQNa9D6qq6tT9sIaTZo0Sd///vfbtB977LHq1auXVq9erfLy8nYfI9nPt7l169alDPLnn3++\nRSg2V1RUpEsuuUSzZs1KO+jcXePGjdPcuXNbtC9dulRXXHGFJOnmm2/WgAEDWvxeq6urdeaZZ0qS\nzj//fJ1//vmSpHvuuafphQ3yX7/SEtUkCbV+pSUhVBNvDF3mmY0bNzYF2ty5czV27FgNHTpUW7Zs\naWqvq6vTmjVrJEk7duzQYYcdprq6Oj344IMpH/e9997TsGHDdN1116m8vFxvv/22Tj/9dM2bN0/1\n9fXasmWLXnjhBZ188skZ1z5lyhStWLGiza11yEnSSSedpHfffVfvv/++9uzZo4cfflgTJkxoc793\n33236e2nnnpKQ4YMkSS9//77TeH717/+VevWrdOgQYMkSV/96ldTDoM2Xod88cUXddBBB+mggw5q\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a250ac278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"chart_for_others(participants[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ничего интересного такой график не выявил. Похожи для всех авторов. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Голоса, проголосовавших за определённый СН"
]
},
{
"cell_type": "code",
"execution_count": 1239,
"metadata": {},
"outputs": [],
"source": [
"def company(sn):\n",
" '''\n",
" Для данного СН найдём всех, оценивших его работы,\n",
" и находим все их голоса.\n",
" '''\n",
" voters = graph.loc[sn].index.values\n",
" return (df[df['from'].isin(voters)]\n",
" .groupby(['to'])\n",
" ['score']\n",
" .agg(['sum','count','mean','std'])\n",
"# .sort_values(by=['from','to'])\n",
"# .set_index(['from','to'])\n",
" )\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 1240,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Как голосовали проголосовавшие за 7228\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sum</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" </tr>\n",
" <tr>\n",
" <th>to</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1838</th>\n",
" <td>3746</td>\n",
" <td>1110</td>\n",
" <td>3.374775</td>\n",
" <td>5.435754</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1945</th>\n",
" <td>5816</td>\n",
" <td>1187</td>\n",
" <td>4.899747</td>\n",
" <td>4.628808</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3032</th>\n",
" <td>2689</td>\n",
" <td>694</td>\n",
" <td>3.874640</td>\n",
" <td>4.916635</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5157</th>\n",
" <td>2888</td>\n",
" <td>703</td>\n",
" <td>4.108108</td>\n",
" <td>4.644603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7222</th>\n",
" <td>6193</td>\n",
" <td>1388</td>\n",
" <td>4.461816</td>\n",
" <td>4.806342</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7228</th>\n",
" <td>13027</td>\n",
" <td>2780</td>\n",
" <td>4.685971</td>\n",
" <td>4.806843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9560</th>\n",
" <td>6482</td>\n",
" <td>1376</td>\n",
" <td>4.710756</td>\n",
" <td>4.694978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9574</th>\n",
" <td>7595</td>\n",
" <td>1400</td>\n",
" <td>5.425000</td>\n",
" <td>4.436199</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10475</th>\n",
" <td>9697</td>\n",
" <td>2475</td>\n",
" <td>3.917980</td>\n",
" <td>4.927787</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10567</th>\n",
" <td>14677</td>\n",
" <td>2727</td>\n",
" <td>5.382105</td>\n",
" <td>4.413090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10580</th>\n",
" <td>10988</td>\n",
" <td>2577</td>\n",
" <td>4.263873</td>\n",
" <td>4.665960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11984</th>\n",
" <td>1503</td>\n",
" <td>481</td>\n",
" <td>3.124740</td>\n",
" <td>5.204668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12371</th>\n",
" <td>9392</td>\n",
" <td>2556</td>\n",
" <td>3.674491</td>\n",
" <td>5.022344</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12626</th>\n",
" <td>6203</td>\n",
" <td>1320</td>\n",
" <td>4.699242</td>\n",
" <td>4.455627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18918</th>\n",
" <td>3114</td>\n",
" <td>1136</td>\n",
" <td>2.741197</td>\n",
" <td>5.795632</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sum count mean std\n",
"to \n",
"1838 3746 1110 3.374775 5.435754\n",
"1945 5816 1187 4.899747 4.628808\n",
"3032 2689 694 3.874640 4.916635\n",
"5157 2888 703 4.108108 4.644603\n",
"7222 6193 1388 4.461816 4.806342\n",
"7228 13027 2780 4.685971 4.806843\n",
"9560 6482 1376 4.710756 4.694978\n",
"9574 7595 1400 5.425000 4.436199\n",
"10475 9697 2475 3.917980 4.927787\n",
"10567 14677 2727 5.382105 4.413090\n",
"10580 10988 2577 4.263873 4.665960\n",
"11984 1503 481 3.124740 5.204668\n",
"12371 9392 2556 3.674491 5.022344\n",
"12626 6203 1320 4.699242 4.455627\n",
"18918 3114 1136 2.741197 5.795632"
]
},
"execution_count": 1240,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# для примера, кого-то из Авторов:\n",
"sn = participants[5]\n",
"print('Как голосовали проголосовавшие за', sn)\n",
"company(sn)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Число сессий голосования\n",
"Сессия - последовательность голосов от одного СН, временн**а**я пауза между соседними в которой не превышает порог в N минут."
]
},
{
"cell_type": "code",
"execution_count": 1243,
"metadata": {},
"outputs": [],
"source": [
"def vote_sessions(sn, delta='1 hour'):\n",
" '''\n",
" Для данного СН собрать его сессии голосования с числом голосов в каждой.\n",
" '''\n",
" tss = df[df['from'] == sn]['ts'].sort_values()\n",
" \n",
" threshold = pd.Timedelta(delta)\n",
" previous = 0\n",
" sessions = [0]\n",
" for ts in tss:\n",
" if not previous:\n",
" previous = ts\n",
" sessions[len(sessions) - 1] += 1\n",
" continue\n",
" delta = ts - previous\n",
" if delta > threshold:\n",
" sessions.append(1)\n",
" else:\n",
" sessions[len(sessions) - 1] += 1\n",
" previous = ts\n",
" return sessions"
]
},
{
"cell_type": "code",
"execution_count": 1245,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 2, 11, 13, 18, 11, 5, 8, 62, 2, 3, 2, 7, 20]"
]
},
"execution_count": 1245,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vote_sessions(15248, '5 minutes')"
]
},
{
"cell_type": "code",
"execution_count": 1249,
"metadata": {},
"outputs": [],
"source": [
"def get_voters(delta='1 hours'):\n",
" sns = df['from'].unique()\n",
" sns = np.delete( sns, 0)\n",
" sns.sort()\n",
" print('{} проголосовавших СН'.format(len(sns)))\n",
"\n",
" voters = pd.DataFrame(sns, columns=['sn'])\n",
" voters['sessions'] = voters['sn'].apply( vote_sessions, delta=delta)\n",
" voters['is_candidate'] = voters['sn'].isin(participants)\n",
" \n",
" voters['votes'] = voters['sessions'].apply(np.sum)\n",
" voters['n_sessions'] = voters['sessions'].apply(len)\n",
" return voters.sort_values('n_sessions', ascending=0).reset_index()\n"
]
},
{
"cell_type": "code",
"execution_count": 1250,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"476 проголосовавших СН\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>sn</th>\n",
" <th>sessions</th>\n",
" <th>is_candidate</th>\n",
" <th>votes</th>\n",
" <th>n_sessions</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>133</td>\n",
" <td>15248</td>\n",
" <td>[2, 2, 11, 13, 18, 11, 5, 8, 62, 2, 5, 7, 20]</td>\n",
" <td>False</td>\n",
" <td>166</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>144</td>\n",
" <td>18918</td>\n",
" <td>[1, 1, 5, 3, 9, 3, 1, 17]</td>\n",
" <td>True</td>\n",
" <td>40</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>275</td>\n",
" <td>34865</td>\n",
" <td>[9, 3, 8, 2, 2, 17, 4, 37]</td>\n",
" <td>False</td>\n",
" <td>82</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>199</td>\n",
" <td>27153</td>\n",
" <td>[8, 11, 3, 3, 13, 30, 6, 1]</td>\n",
" <td>False</td>\n",
" <td>75</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>215</td>\n",
" <td>28811</td>\n",
" <td>[4, 4, 2, 5, 5, 145]</td>\n",
" <td>False</td>\n",
" <td>165</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>266</td>\n",
" <td>33979</td>\n",
" <td>[42, 21, 5, 15, 39, 44]</td>\n",
" <td>False</td>\n",
" <td>166</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>87</td>\n",
" <td>10580</td>\n",
" <td>[52, 43, 22, 40, 1, 8]</td>\n",
" <td>True</td>\n",
" <td>166</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>97</td>\n",
" <td>11102</td>\n",
" <td>[1, 20, 74, 50, 6, 15]</td>\n",
" <td>False</td>\n",
" <td>166</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>35</td>\n",
" <td>9560</td>\n",
" <td>[57, 18, 24, 21, 11, 27]</td>\n",
" <td>True</td>\n",
" <td>158</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>297</td>\n",
" <td>37450</td>\n",
" <td>[3, 18, 21, 21, 20, 83]</td>\n",
" <td>False</td>\n",
" <td>166</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" index sn sessions is_candidate \\\n",
"0 133 15248 [2, 2, 11, 13, 18, 11, 5, 8, 62, 2, 5, 7, 20] False \n",
"1 144 18918 [1, 1, 5, 3, 9, 3, 1, 17] True \n",
"2 275 34865 [9, 3, 8, 2, 2, 17, 4, 37] False \n",
"3 199 27153 [8, 11, 3, 3, 13, 30, 6, 1] False \n",
"4 215 28811 [4, 4, 2, 5, 5, 145] False \n",
"5 266 33979 [42, 21, 5, 15, 39, 44] False \n",
"6 87 10580 [52, 43, 22, 40, 1, 8] True \n",
"7 97 11102 [1, 20, 74, 50, 6, 15] False \n",
"8 35 9560 [57, 18, 24, 21, 11, 27] True \n",
"9 297 37450 [3, 18, 21, 21, 20, 83] False \n",
"\n",
" votes n_sessions \n",
"0 166 13 \n",
"1 40 8 \n",
"2 82 8 \n",
"3 75 8 \n",
"4 165 6 \n",
"5 166 6 \n",
"6 166 6 \n",
"7 166 6 \n",
"8 158 6 \n",
"9 166 6 "
]
},
"execution_count": 1250,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"voters = get_voters(delta='10 minutes')\n",
"voters.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 1251,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>n_sessions</th>\n",
" <th>votes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>13</td>\n",
" <td>166</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>8</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>8</td>\n",
" <td>82</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>8</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>6</td>\n",
" <td>165</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" n_sessions votes\n",
"0 13 166\n",
"1 8 40\n",
"2 8 82\n",
"3 8 75\n",
"4 6 165"
]
},
"execution_count": 1251,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"voters[['n_sessions', 'votes']].head()"
]
},
{
"cell_type": "code",
"execution_count": 1252,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAGoCAYAAAAaWdG6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X14VdWZ9/HfbUg1WjpURSsJDFopKm9h5M3iG1qNjlYR\ntYrY0acdaftYx+pMqlSmtZY+OoNjW0fHVqujUxSslkY7OlK1olMLKDZIfEOrIiRSQTEVJbUh3M8f\n5yQm4Rw4J+ydfVb293NduZKzsrPPnRDOL2vttdcydxcAAKVul6QLAACgEAQWACAIBBYAIAgEFgAg\nCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAj9ki5gJ7FMB4C+wJIuIAT0sAAAQQi9h9Ujdy1b06Ov\nO2fikIgrAQAUih4WACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQW\nACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAg\nCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgE\nFgAgCAQWACAIBBYAIAgEFgAgCAQWACAIBBYAIAgEFgAgCAQWACAI/ZIuICR3LVtT9NecM3FIDJUA\nQPrQwwIABIHAAgAEgcACAASBwAIABIHAAgAEgcACAASBwAIABIHAAgAEgRuHSxA3KAPAtszdk66h\nx8zsIUl7J11HDntLejvpInqAuntfqLWHWrdUmrW/7e4nJF1EqQs6sEqVmS1393FJ11Es6u59odYe\nat1S2LWnHdewAABBILAAAEEgsOJxc9IF9BB1975Qaw+1bins2lONa1gAgCDQwwIABIHAAgAEgcAC\nAASBwAIABIHAAgAEIejAOuGEE1wSb7zxxlvobwXpo695BQs6sN5+u9SWAwOA+KT9NS/owAIApAeB\nBQAIAoEFAAgCgQUACAKBBQAIAoEFAAgCgQUACAKBBQAIAoEFAAhCv6QL6E1DL39gm7bV15wUxPln\n1zVo/rK1anNXmZmmTxysOVNHRXLuUB133WK9sv6DjsfD9tlDD196dHIFIbXq6ps0d9EqvdncokED\nKlRbM1xTx1YmXVafk5oeVq4w2V57KZ1/dl2D5i1do7bs7tBt7pq3dI1m1zXs9LlD1T2sJOmV9R/o\n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\n2eb4888/X3V1dRozZoxuv/12LV68uONze+yxR8fHl19+uU466SQ9+OCDmjRpkh555JGcodFu1113\n7fi4rKxMW7ZsyXnezorpYVVVVWnt2o/+2zU2Nm7T02n3yCOP6Pvf/74ef/zxLnVdccUVuuKKKyRJ\n55xzjoYNG5b3+2mX6+fbXU96WAsWLNCNN9643ed+9tlntWXLFh166KEdbVu3btWSJUtUUdF1VKSm\npkZvvfWWxo0bp5/+9KfbPW8cSvU1LwmlFli5/qzr8j/Z3W+WdLMkjRs3rqTWPWLYrm9Zs2aNlixZ\nosMOO0zz58/X4YcfruHDh2vDhg0d7a2trXr55Zc1YsQIbdq0Sfvtt59aW1t15513qrIy9+/Cq6++\nqlGjRmnUqFFasmSJXnrpJR155JH6yU9+ovPOO08bN27UE088oblz5+qll17qUe3F9LDGjx+vV155\nRa+//roqKyu1YMEC3XXXXdscV19fr6985St66KGHtM8++3S0t7W1qbm5WXvttZdWrlyplStX6vjj\nj5ckzZo1SxMmTNBpp522zfnuu+8+zZo1Sx988IEWL16cc3ZisT2sVatW6d1339Vhhx223eNyXeM6\n/vjjdcMNN6i2tlaStGLFClVXV2vRokVF1RC1Un7N622lNumiUdLgTo+rJL0ZxYlXX3NSUe3AwQcf\nrDvuuEOjR4/Wxo0b9bWvfU0f+9jHdO+99+qyyy7TmDFjVF1drd/97neSpO9973uaOHGijjvuOB10\n0EF5z/vDH/5QI0eO1JgxY1RRUaETTzxRp512mkaPHq0xY8bomGOO0b/+67/qU5/6VK98n/369dMN\nN9ygmpoaHXzwwfrCF76gESNGSOo6aaK2tlbvv/++zjzzTFVXV+uUU06RlFn38YgjjtAhhxyimTNn\nat68eR1Dgg0NDXm/jwkTJuikk07SpEmT9M///M95e3XFmD9/vs4+++xtemvV1dVdHv/85z/fJrCu\nv/56LV++XKNHj9YhhxyiH//4xzmf4/rrr1dVVZUaGxs1evRo/f3f/70k6Y9//KOqqqp03XXXac6c\nOaqqqtJ77723098TPmLbG4robWbWT9LLko6V1CTpaUnnuPvzuY4fN26cL1++vBcrRG958cUXdfDB\nByf2/KtXr9bJJ5+s5557LrEa+oKampqcPZQrr7xSH//4x/VP//RPCVSVrDy/2wUtgdFHX/MKXv6j\n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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a24f85e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"sns.jointplot(x=\"n_sessions\", y=\"votes\", data=voters[['n_sessions', 'votes']]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Вес голоса как ф-я времени на раздумье\n",
"Так-себе гипотеза, что время с предыдущего голоса Участник проводит, раздумывая над следующим. Вероятнее, это не так, и он просто листает другие секции, проматывает другие работы, отвечает на звонки и т.п."
]
},
{
"cell_type": "code",
"execution_count": 1253,
"metadata": {},
"outputs": [],
"source": [
"def time_votes():\n",
" sns = dict()\n",
" for index, row in df.iterrows():\n",
" ts = row['ts']\n",
" sn = row['from']\n",
" if sn == 0:\n",
" continue\n",
" if sn in sns:\n",
" v = ts - sns[sn]\n",
" else:\n",
" v = np.nan\n",
" sns[sn] = ts\n",
" df.at[index, 'ttt'] = v\n"
]
},
{
"cell_type": "code",
"execution_count": 1254,
"metadata": {},
"outputs": [],
"source": [
"df['ttt'] = np.nan\n",
"time_votes()"
]
},
{
"cell_type": "code",
"execution_count": 1255,
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime, timedelta\n",
"df['tttm'] = df['ttt'] / timedelta (minutes=1)"
]
},
{
"cell_type": "code",
"execution_count": 1256,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>from</th>\n",
" <th>ts</th>\n",
" <th>score</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" <th>taskset</th>\n",
" <th>ttt</th>\n",
" <th>tttm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>225</th>\n",
" <td>10580</td>\n",
" <td>2018-02-17 16:58:00</td>\n",
" <td>5</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td></td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 00:54:00</td>\n",
" <td>54</td>\n",
" </tr>\n",
" <tr>\n",
" <th>268</th>\n",
" <td>10580</td>\n",
" <td>2018-02-17 17:19:00</td>\n",
" <td>3</td>\n",
" <td>12626</td>\n",
" <td>Один</td>\n",
" <td>Креатив 4</td>\n",
" <td></td>\n",
" <td>Креатив 4:Один</td>\n",
" <td>0 days 00:15:00</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>290</th>\n",
" <td>26562</td>\n",
" <td>2018-02-17 17:34:00</td>\n",
" <td>8</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td></td>\n",
" <td>визитка:Другой</td>\n",
" <td>0 days 00:41:00</td>\n",
" <td>41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>448</th>\n",
" <td>9486</td>\n",
" <td>2018-02-17 21:30:00</td>\n",
" <td>10</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>Фраза про «хорошие руки» так привлекательна...</td>\n",
" <td>плакат:Другой</td>\n",
" <td>0 days 00:23:00</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1377</th>\n",
" <td>52264</td>\n",
" <td>2018-02-17 23:42:00</td>\n",
" <td>8</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>мало текста</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 00:30:00</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1614</th>\n",
" <td>41923</td>\n",
" <td>2018-02-17 23:55:00</td>\n",
" <td>5</td>\n",
" <td>10475</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 01:03:00</td>\n",
" <td>63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1792</th>\n",
" <td>52264</td>\n",
" <td>2018-02-18 00:11:00</td>\n",
" <td>-10</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>выглядит слишком дешево и подозрительно</td>\n",
" <td>визитка:Другой</td>\n",
" <td>0 days 00:28:00</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2033</th>\n",
" <td>52264</td>\n",
" <td>2018-02-18 00:28:00</td>\n",
" <td>-10</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>пакет</td>\n",
" <td>отталкивает</td>\n",
" <td>пакет:Другой</td>\n",
" <td>0 days 00:17:00</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2190</th>\n",
" <td>32045</td>\n",
" <td>2018-02-18 00:57:00</td>\n",
" <td>1</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>пакет</td>\n",
" <td></td>\n",
" <td>пакет:Один</td>\n",
" <td>0 days 00:14:00</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2407</th>\n",
" <td>52264</td>\n",
" <td>2018-02-18 01:14:00</td>\n",
" <td>5</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td>силуэт человека стал плохо различим</td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 00:46:00</td>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3370</th>\n",
" <td>27153</td>\n",
" <td>2018-02-18 08:05:00</td>\n",
" <td>8</td>\n",
" <td>12626</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>Информативно, но не цепляет оформление.</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:27:00</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4349</th>\n",
" <td>31678</td>\n",
" <td>2018-02-18 09:58:00</td>\n",
" <td>6</td>\n",
" <td>18918</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:38:00</td>\n",
" <td>38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4430</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 10:04:00</td>\n",
" <td>-10</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 4</td>\n",
" <td>Коллекционер Филиппов путал понятия филателист и фетишист, поэтому часто нюхал марки и складывал в альбом женское нижнее бельё ...</td>\n",
" <td>Креатив 4:Один</td>\n",
" <td>0 days 02:35:00</td>\n",
" <td>155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4564</th>\n",
" <td>54754</td>\n",
" <td>2018-02-18 10:26:00</td>\n",
" <td>0</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td>надо доработать</td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 10:26:00</td>\n",
" <td>626</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4786</th>\n",
" <td>27153</td>\n",
" <td>2018-02-18 10:59:00</td>\n",
" <td>3</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Не информативно</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 02:33:00</td>\n",
" <td>153</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4793</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 11:00:00</td>\n",
" <td>-10</td>\n",
" <td>9560</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td>à la guerre comme à la guerre</td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 00:56:00</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4988</th>\n",
" <td>54427</td>\n",
" <td>2018-02-18 11:29:00</td>\n",
" <td>10</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td></td>\n",
" <td>визитка:Другой</td>\n",
" <td>0 days 00:18:00</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5008</th>\n",
" <td>22383</td>\n",
" <td>2018-02-18 11:32:00</td>\n",
" <td>10</td>\n",
" <td>9560</td>\n",
" <td>Один</td>\n",
" <td>Креатив 3</td>\n",
" <td>Хорошо мотивирует</td>\n",
" <td>Креатив 3:Один</td>\n",
" <td>0 days 00:11:00</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5044</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 11:39:00</td>\n",
" <td>-10</td>\n",
" <td>12626</td>\n",
" <td>Один</td>\n",
" <td>Креатив 4</td>\n",
" <td>Если проблему можно решить за деньги, то это не проблема, это расходы )</td>\n",
" <td>Креатив 4:Один</td>\n",
" <td>0 days 00:11:00</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5172</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 12:11:00</td>\n",
" <td>-10</td>\n",
" <td>10580</td>\n",
" <td>Один</td>\n",
" <td>Креатив 4</td>\n",
" <td>Глупым, в грубом значении этого слова, Струнникова назвать было нельзя, но и умен он был лишь настолько, чтобы, как говорится, сальных свечей не есть и стеклом не утираться .</td>\n",
" <td>Креатив 4:Один</td>\n",
" <td>0 days 00:17:00</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5187</th>\n",
" <td>27153</td>\n",
" <td>2018-02-18 12:18:00</td>\n",
" <td>8</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Хорошо, но не для всех и мало информации</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 01:18:00</td>\n",
" <td>78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5197</th>\n",
" <td>51184</td>\n",
" <td>2018-02-18 12:20:00</td>\n",
" <td>3</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>визитка</td>\n",
" <td>Неплохо, чёрно-белая тематика с цветными буквами. Тени будущих &amp;quot;умных&amp;quot; на фоне мегаполиса. Задумка понятна</td>\n",
" <td>визитка:Другой</td>\n",
" <td>0 days 00:32:00</td>\n",
" <td>32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5315</th>\n",
" <td>64118</td>\n",
" <td>2018-02-18 12:42:00</td>\n",
" <td>9</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Приятные цвета, но зачем же &amp;quot;всех&amp;quot;</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 00:20:00</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5551</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 13:14:00</td>\n",
" <td>-10</td>\n",
" <td>9560</td>\n",
" <td>Один</td>\n",
" <td>Креатив 4</td>\n",
" <td>- Привет, Жора! Как провёл отпуск? - Отдыхал дикарём: пятизвёздочный отель, песчаный пляж, бассейн, &amp;quot;all inclusive&amp;quot;, куча девушек... - Я таки не понял: почему дикарём? - Ты бы видел, ...</td>\n",
" <td>Креатив 4:Один</td>\n",
" <td>0 days 00:13:00</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5610</th>\n",
" <td>18918</td>\n",
" <td>2018-02-18 13:32:00</td>\n",
" <td>-10</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>Креатив 5</td>\n",
" <td>Герман, на что это похоже?</td>\n",
" <td>Креатив 5:Один</td>\n",
" <td>0 days 00:13:00</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5616</th>\n",
" <td>27153</td>\n",
" <td>2018-02-18 13:34:00</td>\n",
" <td>9</td>\n",
" <td>10580</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Qr-code и твердая десятка</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 01:14:00</td>\n",
" <td>74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5716</th>\n",
" <td>52215</td>\n",
" <td>2018-02-18 14:13:00</td>\n",
" <td>4</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>много лишнего</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:45:00</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5957</th>\n",
" <td>7222</td>\n",
" <td>2018-02-18 14:44:00</td>\n",
" <td>4</td>\n",
" <td>12626</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>очень симпатишно) но идея... при чем здесь соты?</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:19:00</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6057</th>\n",
" <td>10580</td>\n",
" <td>2018-02-18 14:55:00</td>\n",
" <td>-1</td>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 21:33:00</td>\n",
" <td>1293</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6131</th>\n",
" <td>27153</td>\n",
" <td>2018-02-18 15:24:00</td>\n",
" <td>5</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>визитка</td>\n",
" <td>Слишком игровое оформление, визитка - первое впечатление, а эта несерьезная</td>\n",
" <td>визитка:Один</td>\n",
" <td>0 days 01:32:00</td>\n",
" <td>92</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\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",
" </tr>\n",
" <tr>\n",
" <th>22945</th>\n",
" <td>37450</td>\n",
" <td>2018-03-02 19:14:00</td>\n",
" <td>6</td>\n",
" <td>9574</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:43:00</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22986</th>\n",
" <td>9649</td>\n",
" <td>2018-03-02 20:20:00</td>\n",
" <td>9</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:35:00</td>\n",
" <td>35</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23092</th>\n",
" <td>28403</td>\n",
" <td>2018-03-02 20:33:00</td>\n",
" <td>7</td>\n",
" <td>10580</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>Красиво, но плохо видно текс</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:11:00</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23317</th>\n",
" <td>37450</td>\n",
" <td>2018-03-02 21:30:00</td>\n",
" <td>4</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td></td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 02:14:00</td>\n",
" <td>134</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23338</th>\n",
" <td>37450</td>\n",
" <td>2018-03-02 21:49:00</td>\n",
" <td>4</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>визитка</td>\n",
" <td></td>\n",
" <td>визитка:Один</td>\n",
" <td>0 days 00:17:00</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23359</th>\n",
" <td>37450</td>\n",
" <td>2018-03-02 22:11:00</td>\n",
" <td>2</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>пакет</td>\n",
" <td>Сложно представить пакет с таким изображением.</td>\n",
" <td>пакет:Один</td>\n",
" <td>0 days 00:20:00</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23403</th>\n",
" <td>50522</td>\n",
" <td>2018-03-02 23:43:00</td>\n",
" <td>8</td>\n",
" <td>1945</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>текст и цвета хорошие</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 01:07:00</td>\n",
" <td>67</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23802</th>\n",
" <td>28753</td>\n",
" <td>2018-03-03 14:43:00</td>\n",
" <td>6</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>пакет</td>\n",
" <td></td>\n",
" <td>пакет:Один</td>\n",
" <td>0 days 23:52:00</td>\n",
" <td>1432</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24057</th>\n",
" <td>12211</td>\n",
" <td>2018-03-03 17:39:00</td>\n",
" <td>9</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>10 days 19:29:00</td>\n",
" <td>15569</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24385</th>\n",
" <td>37434</td>\n",
" <td>2018-03-03 20:00:00</td>\n",
" <td>7</td>\n",
" <td>1945</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>13 days 02:32:00</td>\n",
" <td>18872</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24387</th>\n",
" <td>37450</td>\n",
" <td>2018-03-03 20:40:00</td>\n",
" <td>6</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td></td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 22:08:00</td>\n",
" <td>1328</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25228</th>\n",
" <td>39275</td>\n",
" <td>2018-03-04 20:16:00</td>\n",
" <td>6</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Журнал крокодил</td>\n",
" <td>листовка:Другой</td>\n",
" <td>2 days 12:12:00</td>\n",
" <td>3612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25281</th>\n",
" <td>34865</td>\n",
" <td>2018-03-04 22:15:00</td>\n",
" <td>9</td>\n",
" <td>7228</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Всё понятно и всё видно, однако складывается впечатление - кому он нужен без сливок в мозгах. Вот если бы - продаю сливки умного... (34865)</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:11:00</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25313</th>\n",
" <td>34865</td>\n",
" <td>2018-03-04 22:34:00</td>\n",
" <td>10</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Отлично. Начиная с ясного неба, придающими рекламе ясность и прозрачность действия, с отражением древнейшего созидания к совершенству. (34865)</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:11:00</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25605</th>\n",
" <td>32550</td>\n",
" <td>2018-03-05 09:42:00</td>\n",
" <td>8</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>Красиво; кратко, но чересчур. Не ясна суть конкурса и нет ссылки, где об этой информации можно узнать</td>\n",
" <td>листовка:Один</td>\n",
" <td>1 days 19:39:00</td>\n",
" <td>2619</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25701</th>\n",
" <td>34865</td>\n",
" <td>2018-03-05 15:28:00</td>\n",
" <td>8</td>\n",
" <td>7228</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>пОдайте их нам... будет лучше. (34865)</td>\n",
" <td>плакат:Другой</td>\n",
" <td>0 days 16:39:00</td>\n",
" <td>999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25704</th>\n",
" <td>34865</td>\n",
" <td>2018-03-05 15:56:00</td>\n",
" <td>6</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Ни о чём (СН 34865)</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 00:26:00</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25710</th>\n",
" <td>34865</td>\n",
" <td>2018-03-05 16:13:00</td>\n",
" <td>7</td>\n",
" <td>9560</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Автор плаката не получит вознаграждения в 500 тыс. руб. и пассивный доход, потому как новый участник КСИ не будет знать какой ему указать № СН куратора при своей регистрации.</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 00:14:00</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25877</th>\n",
" <td>9826</td>\n",
" <td>2018-03-06 10:00:00</td>\n",
" <td>10</td>\n",
" <td>10567</td>\n",
" <td>Другой</td>\n",
" <td>плакат</td>\n",
" <td>Все кратко и доходчиво. Хороший шрифт. Еще бы расшифровать КСИ, было бы лучше</td>\n",
" <td>плакат:Другой</td>\n",
" <td>3 days 19:58:00</td>\n",
" <td>5518</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26315</th>\n",
" <td>9826</td>\n",
" <td>2018-03-06 11:13:00</td>\n",
" <td>7</td>\n",
" <td>10580</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>Слишком темный плакат</td>\n",
" <td>плакат:Один</td>\n",
" <td>0 days 00:53:00</td>\n",
" <td>53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26504</th>\n",
" <td>34865</td>\n",
" <td>2018-03-07 01:35:00</td>\n",
" <td>6</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>визитка</td>\n",
" <td>Уже отвечал в листовках и плакатах (СН 34865)</td>\n",
" <td>визитка:Один</td>\n",
" <td>1 days 08:39:00</td>\n",
" <td>1959</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26683</th>\n",
" <td>34865</td>\n",
" <td>2018-03-08 23:48:00</td>\n",
" <td>8</td>\n",
" <td>10475</td>\n",
" <td>Один</td>\n",
" <td>визитка</td>\n",
" <td>На фоне многих... (СН 34865)</td>\n",
" <td>визитка:Один</td>\n",
" <td>1 days 22:10:00</td>\n",
" <td>2770</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26725</th>\n",
" <td>18156</td>\n",
" <td>2018-03-09 20:40:00</td>\n",
" <td>10</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 5</td>\n",
" <td></td>\n",
" <td>Креатив 5:Другой</td>\n",
" <td>17 days 20:04:00</td>\n",
" <td>25684</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26777</th>\n",
" <td>63540</td>\n",
" <td>2018-03-11 13:46:00</td>\n",
" <td>3</td>\n",
" <td>11984</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Листовка выполнена в шутливом стиле, а проект кси не развлекательный и не ориентирован на пожилых людей</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 01:05:00</td>\n",
" <td>65</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26912</th>\n",
" <td>9601</td>\n",
" <td>2018-03-12 14:36:00</td>\n",
" <td>1</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>Креатив 1</td>\n",
" <td></td>\n",
" <td>Креатив 1:Один</td>\n",
" <td>0 days 00:28:00</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26989</th>\n",
" <td>25175</td>\n",
" <td>2018-03-13 17:28:00</td>\n",
" <td>7</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td></td>\n",
" <td>плакат:Один</td>\n",
" <td>8 days 15:15:00</td>\n",
" <td>12435</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27010</th>\n",
" <td>43686</td>\n",
" <td>2018-03-13 18:31:00</td>\n",
" <td>6</td>\n",
" <td>3032</td>\n",
" <td>Один</td>\n",
" <td>плакат</td>\n",
" <td>несерьезный стиль</td>\n",
" <td>плакат:Один</td>\n",
" <td>1 days 22:15:00</td>\n",
" <td>2775</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27011</th>\n",
" <td>43686</td>\n",
" <td>2018-03-13 18:43:00</td>\n",
" <td>10</td>\n",
" <td>1945</td>\n",
" <td>Другой</td>\n",
" <td>пакет</td>\n",
" <td>наилучший вариант</td>\n",
" <td>пакет:Другой</td>\n",
" <td>0 days 00:12:00</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27028</th>\n",
" <td>34578</td>\n",
" <td>2018-03-14 17:30:00</td>\n",
" <td>8</td>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>Тоже неплохо, но чего-то не хватает.</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:23:00</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27036</th>\n",
" <td>18156</td>\n",
" <td>2018-03-14 22:08:00</td>\n",
" <td>10</td>\n",
" <td>1838</td>\n",
" <td>Другой</td>\n",
" <td>Креатив 4</td>\n",
" <td></td>\n",
" <td>Креатив 4:Другой</td>\n",
" <td>5 days 01:28:00</td>\n",
" <td>7288</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>192 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" from ts score to set task \\\n",
"225 10580 2018-02-17 16:58:00 5 7222 Один Креатив 1 \n",
"268 10580 2018-02-17 17:19:00 3 12626 Один Креатив 4 \n",
"290 26562 2018-02-17 17:34:00 8 12371 Другой визитка \n",
"448 9486 2018-02-17 21:30:00 10 10567 Другой плакат \n",
"1377 52264 2018-02-17 23:42:00 8 7222 Один плакат \n",
"1614 41923 2018-02-17 23:55:00 5 10475 Один листовка \n",
"1792 52264 2018-02-18 00:11:00 -10 12371 Другой визитка \n",
"2033 52264 2018-02-18 00:28:00 -10 12371 Другой пакет \n",
"2190 32045 2018-02-18 00:57:00 1 7222 Один пакет \n",
"2407 52264 2018-02-18 01:14:00 5 7222 Один Креатив 1 \n",
"3370 27153 2018-02-18 08:05:00 8 12626 Один листовка \n",
"4349 31678 2018-02-18 09:58:00 6 18918 Другой листовка \n",
"4430 18918 2018-02-18 10:04:00 -10 7222 Один Креатив 4 \n",
"4564 54754 2018-02-18 10:26:00 0 7222 Один Креатив 1 \n",
"4786 27153 2018-02-18 10:59:00 3 7222 Один плакат \n",
"4793 18918 2018-02-18 11:00:00 -10 9560 Один Креатив 1 \n",
"4988 54427 2018-02-18 11:29:00 10 10567 Другой визитка \n",
"5008 22383 2018-02-18 11:32:00 10 9560 Один Креатив 3 \n",
"5044 18918 2018-02-18 11:39:00 -10 12626 Один Креатив 4 \n",
"5172 18918 2018-02-18 12:11:00 -10 10580 Один Креатив 4 \n",
"5187 27153 2018-02-18 12:18:00 8 9574 Один плакат \n",
"5197 51184 2018-02-18 12:20:00 3 11984 Другой визитка \n",
"5315 64118 2018-02-18 12:42:00 9 7222 Один плакат \n",
"5551 18918 2018-02-18 13:14:00 -10 9560 Один Креатив 4 \n",
"5610 18918 2018-02-18 13:32:00 -10 7228 Один Креатив 5 \n",
"5616 27153 2018-02-18 13:34:00 9 10580 Один плакат \n",
"5716 52215 2018-02-18 14:13:00 4 7222 Один листовка \n",
"5957 7222 2018-02-18 14:44:00 4 12626 Один листовка \n",
"6057 10580 2018-02-18 14:55:00 -1 1838 Другой листовка \n",
"6131 27153 2018-02-18 15:24:00 5 7228 Один визитка \n",
"... ... ... ... ... ... ... \n",
"22945 37450 2018-03-02 19:14:00 6 9574 Один листовка \n",
"22986 9649 2018-03-02 20:20:00 9 11984 Другой листовка \n",
"23092 28403 2018-03-02 20:33:00 7 10580 Один листовка \n",
"23317 37450 2018-03-02 21:30:00 4 7222 Один плакат \n",
"23338 37450 2018-03-02 21:49:00 4 7222 Один визитка \n",
"23359 37450 2018-03-02 22:11:00 2 7222 Один пакет \n",
"23403 50522 2018-03-02 23:43:00 8 1945 Другой листовка \n",
"23802 28753 2018-03-03 14:43:00 6 7222 Один пакет \n",
"24057 12211 2018-03-03 17:39:00 9 12371 Другой листовка \n",
"24385 37434 2018-03-03 20:00:00 7 1945 Один листовка \n",
"24387 37450 2018-03-03 20:40:00 6 7222 Один Креатив 1 \n",
"25228 39275 2018-03-04 20:16:00 6 11984 Другой листовка \n",
"25281 34865 2018-03-04 22:15:00 9 7228 Другой листовка \n",
"25313 34865 2018-03-04 22:34:00 10 12371 Другой листовка \n",
"25605 32550 2018-03-05 09:42:00 8 7222 Один листовка \n",
"25701 34865 2018-03-05 15:28:00 8 7228 Другой плакат \n",
"25704 34865 2018-03-05 15:56:00 6 7222 Один плакат \n",
"25710 34865 2018-03-05 16:13:00 7 9560 Один плакат \n",
"25877 9826 2018-03-06 10:00:00 10 10567 Другой плакат \n",
"26315 9826 2018-03-06 11:13:00 7 10580 Один плакат \n",
"26504 34865 2018-03-07 01:35:00 6 7222 Один визитка \n",
"26683 34865 2018-03-08 23:48:00 8 10475 Один визитка \n",
"26725 18156 2018-03-09 20:40:00 10 12371 Другой Креатив 5 \n",
"26777 63540 2018-03-11 13:46:00 3 11984 Другой листовка \n",
"26912 9601 2018-03-12 14:36:00 1 7222 Один Креатив 1 \n",
"26989 25175 2018-03-13 17:28:00 7 7222 Один плакат \n",
"27010 43686 2018-03-13 18:31:00 6 3032 Один плакат \n",
"27011 43686 2018-03-13 18:43:00 10 1945 Другой пакет \n",
"27028 34578 2018-03-14 17:30:00 8 1838 Другой листовка \n",
"27036 18156 2018-03-14 22:08:00 10 1838 Другой Креатив 4 \n",
"\n",
" comment \\\n",
"225 \n",
"268 \n",
"290 \n",
"448 Фраза про «хорошие руки» так привлекательна... \n",
"1377 мало текста \n",
"1614 \n",
"1792 выглядит слишком дешево и подозрительно \n",
"2033 отталкивает \n",
"2190 \n",
"2407 силуэт человека стал плохо различим \n",
"3370 Информативно, но не цепляет оформление. \n",
"4349 \n",
"4430 Коллекционер Филиппов путал понятия филателист и фетишист, поэтому часто нюхал марки и складывал в альбом женское нижнее бельё ... \n",
"4564 надо доработать \n",
"4786 Не информативно \n",
"4793 à la guerre comme à la guerre \n",
"4988 \n",
"5008 Хорошо мотивирует \n",
"5044 Если проблему можно решить за деньги, то это не проблема, это расходы ) \n",
"5172 Глупым, в грубом значении этого слова, Струнникова назвать было нельзя, но и умен он был лишь настолько, чтобы, как говорится, сальных свечей не есть и стеклом не утираться . \n",
"5187 Хорошо, но не для всех и мало информации \n",
"5197 Неплохо, чёрно-белая тематика с цветными буквами. Тени будущих &quot;умных&quot; на фоне мегаполиса. Задумка понятна \n",
"5315 Приятные цвета, но зачем же &quot;всех&quot; \n",
"5551 - Привет, Жора! Как провёл отпуск? - Отдыхал дикарём: пятизвёздочный отель, песчаный пляж, бассейн, &quot;all inclusive&quot;, куча девушек... - Я таки не понял: почему дикарём? - Ты бы видел, ... \n",
"5610 Герман, на что это похоже? \n",
"5616 Qr-code и твердая десятка \n",
"5716 много лишнего \n",
"5957 очень симпатишно) но идея... при чем здесь соты? \n",
"6057 \n",
"6131 Слишком игровое оформление, визитка - первое впечатление, а эта несерьезная \n",
"... ... \n",
"22945 \n",
"22986 \n",
"23092 Красиво, но плохо видно текс \n",
"23317 \n",
"23338 \n",
"23359 Сложно представить пакет с таким изображением. \n",
"23403 текст и цвета хорошие \n",
"23802 \n",
"24057 \n",
"24385 \n",
"24387 \n",
"25228 Журнал крокодил \n",
"25281 Всё понятно и всё видно, однако складывается впечатление - кому он нужен без сливок в мозгах. Вот если бы - продаю сливки умного... (34865) \n",
"25313 Отлично. Начиная с ясного неба, придающими рекламе ясность и прозрачность действия, с отражением древнейшего созидания к совершенству. (34865) \n",
"25605 Красиво; кратко, но чересчур. Не ясна суть конкурса и нет ссылки, где об этой информации можно узнать \n",
"25701 пОдайте их нам... будет лучше. (34865) \n",
"25704 Ни о чём (СН 34865) \n",
"25710 Автор плаката не получит вознаграждения в 500 тыс. руб. и пассивный доход, потому как новый участник КСИ не будет знать какой ему указать № СН куратора при своей регистрации. \n",
"25877 Все кратко и доходчиво. Хороший шрифт. Еще бы расшифровать КСИ, было бы лучше \n",
"26315 Слишком темный плакат \n",
"26504 Уже отвечал в листовках и плакатах (СН 34865) \n",
"26683 На фоне многих... (СН 34865) \n",
"26725 \n",
"26777 Листовка выполнена в шутливом стиле, а проект кси не развлекательный и не ориентирован на пожилых людей \n",
"26912 \n",
"26989 \n",
"27010 несерьезный стиль \n",
"27011 наилучший вариант \n",
"27028 Тоже неплохо, но чего-то не хватает. \n",
"27036 \n",
"\n",
" taskset ttt tttm \n",
"225 Креатив 1:Один 0 days 00:54:00 54 \n",
"268 Креатив 4:Один 0 days 00:15:00 15 \n",
"290 визитка:Другой 0 days 00:41:00 41 \n",
"448 плакат:Другой 0 days 00:23:00 23 \n",
"1377 плакат:Один 0 days 00:30:00 30 \n",
"1614 листовка:Один 0 days 01:03:00 63 \n",
"1792 визитка:Другой 0 days 00:28:00 28 \n",
"2033 пакет:Другой 0 days 00:17:00 17 \n",
"2190 пакет:Один 0 days 00:14:00 14 \n",
"2407 Креатив 1:Один 0 days 00:46:00 46 \n",
"3370 листовка:Один 0 days 00:27:00 27 \n",
"4349 листовка:Другой 0 days 00:38:00 38 \n",
"4430 Креатив 4:Один 0 days 02:35:00 155 \n",
"4564 Креатив 1:Один 0 days 10:26:00 626 \n",
"4786 плакат:Один 0 days 02:33:00 153 \n",
"4793 Креатив 1:Один 0 days 00:56:00 56 \n",
"4988 визитка:Другой 0 days 00:18:00 18 \n",
"5008 Креатив 3:Один 0 days 00:11:00 11 \n",
"5044 Креатив 4:Один 0 days 00:11:00 11 \n",
"5172 Креатив 4:Один 0 days 00:17:00 17 \n",
"5187 плакат:Один 0 days 01:18:00 78 \n",
"5197 визитка:Другой 0 days 00:32:00 32 \n",
"5315 плакат:Один 0 days 00:20:00 20 \n",
"5551 Креатив 4:Один 0 days 00:13:00 13 \n",
"5610 Креатив 5:Один 0 days 00:13:00 13 \n",
"5616 плакат:Один 0 days 01:14:00 74 \n",
"5716 листовка:Один 0 days 00:45:00 45 \n",
"5957 листовка:Один 0 days 00:19:00 19 \n",
"6057 листовка:Другой 0 days 21:33:00 1293 \n",
"6131 визитка:Один 0 days 01:32:00 92 \n",
"... ... ... ... \n",
"22945 листовка:Один 0 days 00:43:00 43 \n",
"22986 листовка:Другой 0 days 00:35:00 35 \n",
"23092 листовка:Один 0 days 00:11:00 11 \n",
"23317 плакат:Один 0 days 02:14:00 134 \n",
"23338 визитка:Один 0 days 00:17:00 17 \n",
"23359 пакет:Один 0 days 00:20:00 20 \n",
"23403 листовка:Другой 0 days 01:07:00 67 \n",
"23802 пакет:Один 0 days 23:52:00 1432 \n",
"24057 листовка:Другой 10 days 19:29:00 15569 \n",
"24385 листовка:Один 13 days 02:32:00 18872 \n",
"24387 Креатив 1:Один 0 days 22:08:00 1328 \n",
"25228 листовка:Другой 2 days 12:12:00 3612 \n",
"25281 листовка:Другой 0 days 00:11:00 11 \n",
"25313 листовка:Другой 0 days 00:11:00 11 \n",
"25605 листовка:Один 1 days 19:39:00 2619 \n",
"25701 плакат:Другой 0 days 16:39:00 999 \n",
"25704 плакат:Один 0 days 00:26:00 26 \n",
"25710 плакат:Один 0 days 00:14:00 14 \n",
"25877 плакат:Другой 3 days 19:58:00 5518 \n",
"26315 плакат:Один 0 days 00:53:00 53 \n",
"26504 визитка:Один 1 days 08:39:00 1959 \n",
"26683 визитка:Один 1 days 22:10:00 2770 \n",
"26725 Креатив 5:Другой 17 days 20:04:00 25684 \n",
"26777 листовка:Другой 0 days 01:05:00 65 \n",
"26912 Креатив 1:Один 0 days 00:28:00 28 \n",
"26989 плакат:Один 8 days 15:15:00 12435 \n",
"27010 плакат:Один 1 days 22:15:00 2775 \n",
"27011 пакет:Другой 0 days 00:12:00 12 \n",
"27028 листовка:Другой 0 days 00:23:00 23 \n",
"27036 Креатив 4:Другой 5 days 01:28:00 7288 \n",
"\n",
"[192 rows x 10 columns]"
]
},
"execution_count": 1256,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[df['tttm'] > 10]"
]
},
{
"cell_type": "code",
"execution_count": 1257,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Время размышления известно и меньше 5 минут у 23470 авторизованных голосов, \n",
"больше 10 минут или неизвестно у 865 голосов\n"
]
}
],
"source": [
"time_to_think = 5\n",
"smart_votes = df[(df['tttm']>=0) & (df['tttm'] < time_to_think)]\n",
"print('Время размышления известно и меньше {} минут у {} авторизованных голосов,\\\n",
" \\nбольше 10 минут или неизвестно у {} голосов'\n",
" .format(\n",
" time_to_think,\n",
" len(smart_votes),\n",
" len(\n",
" df[\n",
" (\n",
" (df['tttm'].isnull()) \n",
" |\n",
" (df['tttm'] >= time_to_think)\n",
" )\n",
" &\n",
" (df['from'] > 0)\n",
" ]\n",
" )\n",
" )\n",
" )\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1258,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>from</th>\n",
" <th>ts</th>\n",
" <th>score</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" <th>taskset</th>\n",
" <th>ttt</th>\n",
" <th>tttm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:30:00</td>\n",
" <td>9</td>\n",
" <td>12371</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:31:00</td>\n",
" <td>9</td>\n",
" <td>10580</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>люблю роботов :)</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:32:00</td>\n",
" <td>7</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:33:00</td>\n",
" <td>5</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:33:00</td>\n",
" <td>5</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>слишком ярко</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:00:00</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" from ts score to set task \\\n",
"77 13035 2018-02-17 14:30:00 9 12371 Один листовка \n",
"78 13035 2018-02-17 14:31:00 9 10580 Другой листовка \n",
"79 13035 2018-02-17 14:32:00 7 12371 Другой листовка \n",
"80 13035 2018-02-17 14:33:00 5 7222 Один листовка \n",
"81 13035 2018-02-17 14:33:00 5 7228 Один листовка \n",
"\n",
" comment taskset ttt tttm \n",
"77 листовка:Один 0 days 00:01:00 1 \n",
"78 люблю роботов :) листовка:Другой 0 days 00:01:00 1 \n",
"79 листовка:Другой 0 days 00:01:00 1 \n",
"80 листовка:Один 0 days 00:01:00 1 \n",
"81 слишком ярко листовка:Один 0 days 00:00:00 0 "
]
},
"execution_count": 1258,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smart_votes.head()"
]
},
{
"cell_type": "code",
"execution_count": 1259,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nSg888ECLf/bf//736tevn0466SR16NBBU6ZM0UMPPRTJyW9+/ZgunjxVL9Xs1+TJk/X444/rSA0k\n3n33Xd0SQtB4AAANaUlEQVR8882aM2fOYdvnzZunefPmRfafP3++xo8fr3Hjxql///76wQ9+0OKf\nK86iRYs0derUhvsLFizQsGHDVF1dra9//euqq4uuAtGpUyeNGjVKHTt2lPRxYWts69Yt2vXGn/Q3\nf/M3eY233CXtnFsvSY3XfqhJb2usm6T97l7bxD5ASW1/fbMu+dJ0vfTSSzrmmGP0s5/9TIcOHdI3\nv/lNLVmyROvWrdNXv/pVXXvttZKkSZMm6fnnn9eLL76oU089Vb/4xS8anuu1117T6tWr9eMf/1g/\n+tGP9NOf/lTr16/XU089pcrKSi1dulTr16/Xiy++qNWrV2v27NkNRfOFF17Qrbfeqj/+8Y/aunWr\nnnnmmYbn7dixo55++mlNmTLlsNgXLlx42CGz+q/JkydHfs5du3apd++P+yJWVVVp167omm1v/vdu\nndAz9TZt166dPvnJT2rv3r2SpG3btmnIkCE6++yz9dRTTzV8z3e/+1195zvf0Sc+8YnDnuvyyy+P\nPXwppYrtwoULtX79ej3wwAOK685x6aWXxv589957b+xzStJ7772nFStW6JJLLpEkvfLKK7r//vv1\nzDPPaP369aqoqNDChQuzfn+9uO7/jz30S43924lMgsqzgh2WNLPVkk6Ieehad38o27fFbMv8bchl\nn8ZxzJQ0U5L69Gn7M4DQNpzQs5eGnDlCknTZZZfpJz/5icaNG6eNGzdqzJgxklKH9Hr06CFJ2rhx\no+bMmaP9+/fr3Xff1dixH59u/sIXvtBw2HDkyJGaNWuWpk2bpkmTJqmqqkpPP/20pk6dqoqKCh1/\n/PE6++yz9fzzz+uYY47RsGHDVFVVJUmqrq7W9u3bNWrUKEmpD/k406ZN07Rp03L6OeNGX3Ef0nFv\nUDNTjx49tGPHDnXr1k3r1q3ThAkT9PLLL2vr1q3asmWLbrnllobzc7kYM2aMunXrJin1B8PTTz+t\noUMPO63fMLJtjl/96lcaOXJkwyHJxx9/XOvWrdOZZ54pSTp48KCOO+64Zj+vJK18eKluuDU6Em2p\nzM+8EGY+tkTBipu7f74F31YjqXF77CpJuzP2eUtSFzNrlx69xe3TOI47JN0hpfqstSAmoNkyP+DN\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a251270b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.jointplot(x=\"tttm\", y=\"score\", data=smart_votes[['score', 'tttm']]);"
]
},
{
"cell_type": "code",
"execution_count": 1260,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>from</th>\n",
" <th>ts</th>\n",
" <th>score</th>\n",
" <th>to</th>\n",
" <th>set</th>\n",
" <th>task</th>\n",
" <th>comment</th>\n",
" <th>taskset</th>\n",
" <th>ttt</th>\n",
" <th>tttm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:30:00</td>\n",
" <td>9</td>\n",
" <td>12371</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:31:00</td>\n",
" <td>9</td>\n",
" <td>10580</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td>люблю роботов :)</td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:32:00</td>\n",
" <td>7</td>\n",
" <td>12371</td>\n",
" <td>Другой</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Другой</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:33:00</td>\n",
" <td>5</td>\n",
" <td>7222</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td></td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:01:00</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>13035</td>\n",
" <td>2018-02-17 14:33:00</td>\n",
" <td>5</td>\n",
" <td>7228</td>\n",
" <td>Один</td>\n",
" <td>листовка</td>\n",
" <td>слишком ярко</td>\n",
" <td>листовка:Один</td>\n",
" <td>0 days 00:00:00</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" from ts score to set task \\\n",
"77 13035 2018-02-17 14:30:00 9 12371 Один листовка \n",
"78 13035 2018-02-17 14:31:00 9 10580 Другой листовка \n",
"79 13035 2018-02-17 14:32:00 7 12371 Другой листовка \n",
"80 13035 2018-02-17 14:33:00 5 7222 Один листовка \n",
"81 13035 2018-02-17 14:33:00 5 7228 Один листовка \n",
"\n",
" comment taskset ttt tttm \n",
"77 листовка:Один 0 days 00:01:00 1 \n",
"78 люблю роботов :) листовка:Другой 0 days 00:01:00 1 \n",
"79 листовка:Другой 0 days 00:01:00 1 \n",
"80 листовка:Один 0 days 00:01:00 1 \n",
"81 слишком ярко листовка:Один 0 days 00:00:00 0 "
]
},
"execution_count": 1260,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smart_votes.head()"
]
},
{
"cell_type": "code",
"execution_count": 1261,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ssokolov/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py:2352: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" self[k1] = value[k2]\n"
]
}
],
"source": [
"smart_votes[['tttm']] = smart_votes[['tttm']].astype('int32')"
]
},
{
"cell_type": "code",
"execution_count": 1262,
"metadata": {},
"outputs": [],
"source": [
"v_weights = (smart_votes\n",
" .groupby(['to'])['tttm']\n",
" .agg(['sum','count','mean','std'])\n",
" .sort_values(by='mean')\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 1263,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sum</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" </tr>\n",
" <tr>\n",
" <th>to</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>12371</th>\n",
" <td>779</td>\n",
" <td>2542</td>\n",
" <td>0.306452</td>\n",
" <td>0.624904</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10580</th>\n",
" <td>799</td>\n",
" <td>2579</td>\n",
" <td>0.309810</td>\n",
" <td>0.604952</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1838</th>\n",
" <td>363</td>\n",
" <td>1098</td>\n",
" <td>0.330601</td>\n",
" <td>0.612087</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12626</th>\n",
" <td>442</td>\n",
" <td>1321</td>\n",
" <td>0.334595</td>\n",
" <td>0.622865</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10475</th>\n",
" <td>845</td>\n",
" <td>2461</td>\n",
" <td>0.343356</td>\n",
" <td>0.631447</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18918</th>\n",
" <td>400</td>\n",
" <td>1126</td>\n",
" <td>0.355240</td>\n",
" <td>0.657202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10567</th>\n",
" <td>1014</td>\n",
" <td>2730</td>\n",
" <td>0.371429</td>\n",
" <td>0.668446</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5157</th>\n",
" <td>265</td>\n",
" <td>702</td>\n",
" <td>0.377493</td>\n",
" <td>0.689191</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9560</th>\n",
" <td>514</td>\n",
" <td>1361</td>\n",
" <td>0.377663</td>\n",
" <td>0.642766</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3032</th>\n",
" <td>260</td>\n",
" <td>684</td>\n",
" <td>0.380117</td>\n",
" <td>0.674976</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1945</th>\n",
" <td>466</td>\n",
" <td>1175</td>\n",
" <td>0.396596</td>\n",
" <td>0.726234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9574</th>\n",
" <td>557</td>\n",
" <td>1396</td>\n",
" <td>0.398997</td>\n",
" <td>0.715801</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7228</th>\n",
" <td>1084</td>\n",
" <td>2689</td>\n",
" <td>0.403124</td>\n",
" <td>0.699440</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7222</th>\n",
" <td>515</td>\n",
" <td>1129</td>\n",
" <td>0.456156</td>\n",
" <td>0.710908</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11984</th>\n",
" <td>231</td>\n",
" <td>477</td>\n",
" <td>0.484277</td>\n",
" <td>0.740673</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sum count mean std\n",
"to \n",
"12371 779 2542 0.306452 0.624904\n",
"10580 799 2579 0.309810 0.604952\n",
"1838 363 1098 0.330601 0.612087\n",
"12626 442 1321 0.334595 0.622865\n",
"10475 845 2461 0.343356 0.631447\n",
"18918 400 1126 0.355240 0.657202\n",
"10567 1014 2730 0.371429 0.668446\n",
"5157 265 702 0.377493 0.689191\n",
"9560 514 1361 0.377663 0.642766\n",
"3032 260 684 0.380117 0.674976\n",
"1945 466 1175 0.396596 0.726234\n",
"9574 557 1396 0.398997 0.715801\n",
"7228 1084 2689 0.403124 0.699440\n",
"7222 515 1129 0.456156 0.710908\n",
"11984 231 477 0.484277 0.740673"
]
},
"execution_count": 1263,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v_weights"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Проверка на дубли\n",
"Повторная. Проверил, удалил, снова понадобилось, на всякий\n"
]
},
{
"cell_type": "code",
"execution_count": 1177,
"metadata": {},
"outputs": [],
"source": [
"def checkup(df):\n",
" print('Колонки:', ', '.join(list(df.columns)))\n",
" dupes = (\n",
" df[ df['from'] != 0 ] # исключая анонимные с from=0\n",
" .groupby(['from','to','set','task'])['score']\n",
" .agg(['count']) \n",
" )\n",
" dupes = dupes[dupes['count'] > 1]\n",
" print(len(dupes), 'голосов с идентичными СН-от-кого, СН-кому, набором и заданием')\n"
]
},
{
"cell_type": "code",
"execution_count": 1178,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Колонки: from, ts, score, to, set, task, comment, taskset, ttt, tttm\n",
"0 голосов с идентичными СН-от-кого, СН-кому, набором и заданием\n"
]
}
],
"source": [
"checkup(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Выводы\n",
"Не выявлено новых косяков в опубликованных данных по голосованию, старые исправлены. \n",
"\n",
"Надо бы подумать, какие могут быть корреляции в данных, позволяющие отличить независимое голосование от предвзятого. Идеи, предложения – вэлкам на `[email protected]`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment