├── README.md
├── get_object_activity.ipynb
├── serch_groups.ipynb
├── users_intersection.ipynb
├── get_club_id.ipynb
└── get_post_by_hashtag.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # Бесплатные скрипты для ВКонтакте
2 |
3 | ##Видео-инструкция по запуску
4 | https://www.youtube.com/watch?v=5ME-N2iOJe4
5 |
6 | ## Как запустить скрипт
7 |
8 | 1. Скачать https://www.continuum.io/downloads Python 3.5 для вашей операционной системы
9 | 2. Дождаться установки
10 | 3. Отредактировать ярлык у Jupiter Notebook (сменить рабочу папку)
11 | 
12 | 4. Запустить Jupiter Notebook
13 | 5. Скачать файл скрипта и переместить в рабочую папку
14 | 6. Запустить скрипт
15 | 
16 | 7. Следовать инструкции в скрипте
17 |
--------------------------------------------------------------------------------
/get_object_activity.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Сбор ID из поста"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "Автор: Шмаков Сергей\n",
15 | "* http://freesmm.ru\n",
16 | "* https://vk.com/smmblog\n",
17 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
18 | "* https://youtube.com/smmblog\n",
19 | "\n",
20 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34161499\n",
21 | "\n",
22 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс, который я составил и будем всем счастье! http://freesmm.tilda.ws/page241764.html"
23 | ]
24 | },
25 | {
26 | "cell_type": "markdown",
27 | "metadata": {},
28 | "source": [
29 | "**Что умеет скрипт:**\n",
30 | "* собирать данные тех, кто лайкал и репостил\n",
31 | "* собирать данные тех, кто комментировал\n",
32 | "* записывать только ID тех, кто лайкал-репостил и/или комментировал\n",
33 | "\n",
34 | "**Ограничения:**\n",
35 | "* собирает данные о первых 2000 лайках\n",
36 | "* собирает данные о первых 400 комментариях\n",
37 | "> для большинства этого будет более чем достаточно."
38 | ]
39 | },
40 | {
41 | "cell_type": "markdown",
42 | "metadata": {},
43 | "source": [
44 | "Запустите последовательно блоки кода"
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "execution_count": 1,
50 | "metadata": {
51 | "collapsed": true
52 | },
53 | "outputs": [],
54 | "source": [
55 | "import requests\n",
56 | "import time as t \n",
57 | "import csv\n",
58 | "import datetime as dt\n",
59 | "from datetime import datetime, date, time, timedelta"
60 | ]
61 | },
62 | {
63 | "cell_type": "markdown",
64 | "metadata": {},
65 | "source": [
66 | "Получить токен (перейдите по ссылке) - https://oauth.vk.com/authorize?client_id=5453402&display=page&redirect_uri=http://localhost&scope=&response_type=token&v=5.53"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": 34,
72 | "metadata": {
73 | "collapsed": true
74 | },
75 | "outputs": [],
76 | "source": [
77 | "token = 'Сюда вставить токен авторизации'"
78 | ]
79 | },
80 | {
81 | "cell_type": "code",
82 | "execution_count": 28,
83 | "metadata": {
84 | "collapsed": false
85 | },
86 | "outputs": [],
87 | "source": [
88 | "def get_post_activity(owner_id,post_id):\n",
89 | " print ('Цербер начал работу в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
90 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_get_object_activity?owner_id='+str(owner_id)+\n",
91 | " '&post_id='+str(post_id)+'&type=post&access_token='+token).json()['response']\n",
92 | "\n",
93 | " user_id_like = []\n",
94 | " for i in r[0]:\n",
95 | " user_id_like.append(i['id'])\n",
96 | "\n",
97 | " user_id_comments = []\n",
98 | " for i in r[1]:\n",
99 | " user_id_comments.append(i['from_id'])\n",
100 | " print ('Цербер собрал данные:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
101 | " return user_id_like,user_id_comments"
102 | ]
103 | },
104 | {
105 | "cell_type": "markdown",
106 | "metadata": {},
107 | "source": [
108 | "В блоке ниже, отредактируйте owner_id и post_id\n",
109 | "\n",
110 | "Пример: https://new.vk.com/smmblog?w=wall-38369814_20348\n",
111 | "* первая цифра (38369814) – это **owner_id**\n",
112 | "* вторая цифра (20348) – это **post_id**"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 29,
118 | "metadata": {
119 | "collapsed": false
120 | },
121 | "outputs": [
122 | {
123 | "name": "stdout",
124 | "output_type": "stream",
125 | "text": [
126 | "Цербер начал работу в: 20:44:27\n",
127 | "Цербер собрал данные: 20:44:28\n",
128 | "Wall time: 664 ms\n"
129 | ]
130 | }
131 | ],
132 | "source": [
133 | "owner_id = -43116499 #id сообщества с минусом\n",
134 | "post_id = 576005 #id поста\n",
135 | "%time user_id_like, user_id_comments = get_post_activity(owner_id,post_id)"
136 | ]
137 | },
138 | {
139 | "cell_type": "markdown",
140 | "metadata": {},
141 | "source": [
142 | "## Запись данных"
143 | ]
144 | },
145 | {
146 | "cell_type": "markdown",
147 | "metadata": {},
148 | "source": [
149 | "### Вариант 1 - только лайки\\репосты"
150 | ]
151 | },
152 | {
153 | "cell_type": "markdown",
154 | "metadata": {},
155 | "source": [
156 | "\n",
157 | "Запишет тех, кто лайкал и репостил"
158 | ]
159 | },
160 | {
161 | "cell_type": "code",
162 | "execution_count": 31,
163 | "metadata": {
164 | "collapsed": false
165 | },
166 | "outputs": [],
167 | "source": [
168 | "a = open('post'+str(owner_id)+'-'+str(post_id)+'.txt', 'a')\n",
169 | "for i in user_id_like:\n",
170 | " a.write(str(i)+'\\n') #писать мож\n",
171 | "a.close() \n",
172 | "print ('Цербер записал данные')"
173 | ]
174 | },
175 | {
176 | "cell_type": "markdown",
177 | "metadata": {},
178 | "source": [
179 | "### Вариант 2 - только комментарии"
180 | ]
181 | },
182 | {
183 | "cell_type": "markdown",
184 | "metadata": {},
185 | "source": [
186 | "Запишет тех, кто комментировал"
187 | ]
188 | },
189 | {
190 | "cell_type": "code",
191 | "execution_count": 32,
192 | "metadata": {
193 | "collapsed": true
194 | },
195 | "outputs": [],
196 | "source": [
197 | "a = open('post'+str(owner_id)+'-'+str(post_id)+'.txt', 'a')\n",
198 | "for i in user_id_comments:\n",
199 | " a.write(str(i)+'\\n') #писать мож\n",
200 | "a.close() \n",
201 | "print ('Цербер записал данные')"
202 | ]
203 | },
204 | {
205 | "cell_type": "markdown",
206 | "metadata": {},
207 | "source": [
208 | "### Вариант 3 - лайки + репосты\n",
209 | "Запишет сразу и тех, и других."
210 | ]
211 | },
212 | {
213 | "cell_type": "code",
214 | "execution_count": 33,
215 | "metadata": {
216 | "collapsed": true
217 | },
218 | "outputs": [],
219 | "source": [
220 | "a = open('post'+str(owner_id)+'-'+str(post_id)+'.txt', 'w')\n",
221 | "for i in user_id_like:\n",
222 | " a.write(str(i)+'\\n') #писать мож\n",
223 | "for i in user_id_comments:\n",
224 | " a.write(str(i)+'\\n') #писать мож\n",
225 | "a.close()\n",
226 | "print ('Цербер записал данные')"
227 | ]
228 | },
229 | {
230 | "cell_type": "code",
231 | "execution_count": null,
232 | "metadata": {
233 | "collapsed": true
234 | },
235 | "outputs": [],
236 | "source": [
237 | "def():\n",
238 | " for i in range(1,30000000):\n",
239 | " a.write(str(i)+'\\n') #писать мож"
240 | ]
241 | }
242 | ],
243 | "metadata": {
244 | "kernelspec": {
245 | "display_name": "Python 3",
246 | "language": "python",
247 | "name": "python3"
248 | },
249 | "language_info": {
250 | "codemirror_mode": {
251 | "name": "ipython",
252 | "version": 3
253 | },
254 | "file_extension": ".py",
255 | "mimetype": "text/x-python",
256 | "name": "python",
257 | "nbconvert_exporter": "python",
258 | "pygments_lexer": "ipython3",
259 | "version": "3.5.1"
260 | }
261 | },
262 | "nbformat": 4,
263 | "nbformat_minor": 0
264 | }
265 |
--------------------------------------------------------------------------------
/serch_groups.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "Автор: Шмаков Сергей\n",
8 | "* http://freesmm.ru\n",
9 | "* https://vk.com/smmblog\n",
10 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
11 | "* https://youtube.com/smmblog\n",
12 | "\n",
13 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34157816\n",
14 | "\n",
15 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс, который я составил и будем всем счастье! http://freesmm.tilda.ws/page241764.html"
16 | ]
17 | },
18 | {
19 | "cell_type": "markdown",
20 | "metadata": {},
21 | "source": [
22 | "# Поиск сообществ в ВКонтакте"
23 | ]
24 | },
25 | {
26 | "cell_type": "markdown",
27 | "metadata": {},
28 | "source": [
29 | "Что умеет скрипт:\n",
30 | "* Собирать 1000 групп по запросу с возможностью выбора типа сообществ (группа\\встреча\\паблик)\n",
31 | "* Записывать данные (id, название, ссылку) в csv\n",
32 | "\n",
33 | "To Dо (чего нет, но хотелось бы добавить):\n",
34 | "* добавить поиск по стране/городу\n",
35 | "* сортировки "
36 | ]
37 | },
38 | {
39 | "cell_type": "markdown",
40 | "metadata": {},
41 | "source": [
42 | ">запустите последоствательно блоки с кодом. следуйте инструкциям."
43 | ]
44 | },
45 | {
46 | "cell_type": "code",
47 | "execution_count": 5,
48 | "metadata": {
49 | "collapsed": true
50 | },
51 | "outputs": [],
52 | "source": [
53 | "import requests\n",
54 | "import time as t \n",
55 | "import csv\n",
56 | "from datetime import datetime, date, time, timedelta\n",
57 | "import numpy as np\n",
58 | "import pandas as pd\n",
59 | "from pandas import DataFrame"
60 | ]
61 | },
62 | {
63 | "cell_type": "markdown",
64 | "metadata": {},
65 | "source": [
66 | "Ссылка для получения токена: https://oauth.vk.com/authorize?client_id=5453402&display=page&redirect_uri=http://localhost&scope=&response_type=token&v=5.53"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": 6,
72 | "metadata": {
73 | "collapsed": true
74 | },
75 | "outputs": [],
76 | "source": [
77 | "token = 'вставьте сюда токен, полученный по ссылке выше'"
78 | ]
79 | },
80 | {
81 | "cell_type": "code",
82 | "execution_count": 15,
83 | "metadata": {
84 | "collapsed": false
85 | },
86 | "outputs": [],
87 | "source": [
88 | "def search_groups():\n",
89 | " print('Цербер начал работу в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
90 | " q = str(input('Введите поисковый запрос:'))\n",
91 | " type_group = str(input('Введите тип сообществ. page, group, event.\\nОставьте пустым, чтобы вернул все типы сообществ:'))\n",
92 | " sort = 0\n",
93 | "\n",
94 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_search_groups?q='+\n",
95 | " str(q)+'&sort='+str(sort)+'&type='+str(type_group)+'&access_token='+token).json()['response']\n",
96 | " \n",
97 | " count_groups = r[0]\n",
98 | " \n",
99 | " name = []\n",
100 | " id = []\n",
101 | " type = []\n",
102 | " screen_name= []\n",
103 | " \n",
104 | " #создаем пустой словарь, в который будем помещать информацию по каждой группе, для последующего импорта во frame\n",
105 | " data_list = {'name':name,\n",
106 | " 'screen_name':screen_name,\n",
107 | " 'id':id,\n",
108 | " 'type':type}\n",
109 | "\n",
110 | " for i in r[1]:\n",
111 | " name.append(i['name'])\n",
112 | " screen_name.append('https://vk.com/'+str(i['screen_name']))\n",
113 | " id.append(i['id'])\n",
114 | " type.append(i['type'])\n",
115 | "\n",
116 | " frame = DataFrame(data_list)\n",
117 | " print('Цербер обработал данные в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
118 | " print('Запускайте последовательно блоки ниже')\n",
119 | " return frame, count_groups"
120 | ]
121 | },
122 | {
123 | "cell_type": "markdown",
124 | "metadata": {},
125 | "source": [
126 | "# Сбор списка сообществ"
127 | ]
128 | },
129 | {
130 | "cell_type": "code",
131 | "execution_count": 17,
132 | "metadata": {
133 | "collapsed": false
134 | },
135 | "outputs": [
136 | {
137 | "name": "stdout",
138 | "output_type": "stream",
139 | "text": [
140 | "Цербер начал работу в: 00:12:09\n",
141 | "Введите поисковый запрос:smm\n",
142 | "Введите тип сообществ. page, group, event.\n",
143 | "Оставьте пустым, чтобы вернул все типы сообществ:\n",
144 | "Цербер обработал данные в: 00:12:58\n",
145 | "Запускайте последовательно блоки ниже\n",
146 | "Найдено сообществ: 5956\n"
147 | ]
148 | }
149 | ],
150 | "source": [
151 | "frame, count_groups = search_groups()\n",
152 | "print ('Найдено сообществ:',count_groups)"
153 | ]
154 | },
155 | {
156 | "cell_type": "code",
157 | "execution_count": null,
158 | "metadata": {
159 | "collapsed": true
160 | },
161 | "outputs": [],
162 | "source": [
163 | "frame.to_csv('example.csv') #запишет все данные в csv файл"
164 | ]
165 | },
166 | {
167 | "cell_type": "code",
168 | "execution_count": 18,
169 | "metadata": {
170 | "collapsed": false
171 | },
172 | "outputs": [
173 | {
174 | "data": {
175 | "text/html": [
176 | "
\n",
177 | "
\n",
178 | " \n",
179 | " \n",
180 | " | \n",
181 | " id | \n",
182 | " name | \n",
183 | " screen_name | \n",
184 | " type | \n",
185 | "
\n",
186 | " \n",
187 | " \n",
188 | " \n",
189 | " | 0 | \n",
190 | " 19542789 | \n",
191 | " ВКонтакте для бизнеса | \n",
192 | " https://vk.com/adsnews | \n",
193 | " page | \n",
194 | "
\n",
195 | " \n",
196 | " | 1 | \n",
197 | " 43503600 | \n",
198 | " SMMщики | \n",
199 | " https://vk.com/smm_pub | \n",
200 | " page | \n",
201 | "
\n",
202 | " \n",
203 | " | 2 | \n",
204 | " 4489985 | \n",
205 | " Вики-разметка / SMM ВКонтакте | \n",
206 | " https://vk.com/wk | \n",
207 | " page | \n",
208 | "
\n",
209 | " \n",
210 | " | 3 | \n",
211 | " 38369814 | \n",
212 | " SMM блог | \n",
213 | " https://vk.com/smmblog | \n",
214 | " page | \n",
215 | "
\n",
216 | " \n",
217 | " | 4 | \n",
218 | " 79389828 | \n",
219 | " SMM planner | \n",
220 | " https://vk.com/smmplanner | \n",
221 | " group | \n",
222 | "
\n",
223 | " \n",
224 | "
\n",
225 | "
"
226 | ],
227 | "text/plain": [
228 | " id name screen_name type\n",
229 | "0 19542789 ВКонтакте для бизнеса https://vk.com/adsnews page\n",
230 | "1 43503600 SMMщики https://vk.com/smm_pub page\n",
231 | "2 4489985 Вики-разметка / SMM ВКонтакте https://vk.com/wk page\n",
232 | "3 38369814 SMM блог https://vk.com/smmblog page\n",
233 | "4 79389828 SMM planner https://vk.com/smmplanner group"
234 | ]
235 | },
236 | "execution_count": 18,
237 | "metadata": {},
238 | "output_type": "execute_result"
239 | }
240 | ],
241 | "source": [
242 | "frame.head() #покажет первые 5 сообществ"
243 | ]
244 | },
245 | {
246 | "cell_type": "code",
247 | "execution_count": 20,
248 | "metadata": {
249 | "collapsed": false
250 | },
251 | "outputs": [
252 | {
253 | "data": {
254 | "text/plain": [
255 | "0 https://vk.com/adsnews\n",
256 | "1 https://vk.com/smm_pub\n",
257 | "2 https://vk.com/wk\n",
258 | "3 https://vk.com/smmblog\n",
259 | "4 https://vk.com/smmplanner\n",
260 | "5 https://vk.com/smmprosales\n",
261 | "6 https://vk.com/opencart_seo_smm\n",
262 | "7 https://vk.com/viproject.agency\n",
263 | "8 https://vk.com/marketing_reklama_smm\n",
264 | "9 https://vk.com/smmrf\n",
265 | "Name: screen_name, dtype: object"
266 | ]
267 | },
268 | "execution_count": 20,
269 | "metadata": {},
270 | "output_type": "execute_result"
271 | }
272 | ],
273 | "source": [
274 | "frame['screen_name'][0:10] #покажет 10 сообществ. можно регулировать. + ссылки кликабельны"
275 | ]
276 | }
277 | ],
278 | "metadata": {
279 | "kernelspec": {
280 | "display_name": "Python 3",
281 | "language": "python",
282 | "name": "python3"
283 | },
284 | "language_info": {
285 | "codemirror_mode": {
286 | "name": "ipython",
287 | "version": 3
288 | },
289 | "file_extension": ".py",
290 | "mimetype": "text/x-python",
291 | "name": "python",
292 | "nbconvert_exporter": "python",
293 | "pygments_lexer": "ipython3",
294 | "version": "3.5.1"
295 | }
296 | },
297 | "nbformat": 4,
298 | "nbformat_minor": 0
299 | }
300 |
--------------------------------------------------------------------------------
/users_intersection.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Цербер: пересечение между сообществами"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "Автор: Шмаков Сергей\n",
15 | "* http://freesmm.ru\n",
16 | "* https://vk.com/smmblog\n",
17 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
18 | "* https://youtube.com/smmblog\n",
19 | "\n",
20 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34161499\n",
21 | "\n",
22 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс, который я составил и будем всем счастье! http://freesmm.tilda.ws/page241764.html"
23 | ]
24 | },
25 | {
26 | "cell_type": "markdown",
27 | "metadata": {},
28 | "source": [
29 | "Задача:\n",
30 | "> получить список ID пользователей, которые состоят сразу в 3-х сообществах."
31 | ]
32 | },
33 | {
34 | "cell_type": "markdown",
35 | "metadata": {},
36 | "source": [
37 | "Сравнивать будем:\n",
38 | "* https://vk.com/smmblog\n",
39 | "* https://vk.com/bizness_online\n",
40 | "* https://vk.com/cerebro_vk"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": null,
46 | "metadata": {
47 | "collapsed": true
48 | },
49 | "outputs": [],
50 | "source": [
51 | "Vm8WB2Uy_v0"
52 | ]
53 | },
54 | {
55 | "cell_type": "markdown",
56 | "metadata": {},
57 | "source": [
58 | "Получить токен: https://oauth.vk.com/authorize?client_id=5453402&display=page&redirect_uri=http://localhost&scope=&response_type=token&v=5.53"
59 | ]
60 | },
61 | {
62 | "cell_type": "code",
63 | "execution_count": 24,
64 | "metadata": {
65 | "collapsed": true
66 | },
67 | "outputs": [],
68 | "source": [
69 | "token = '' #вставить в ковычки токен"
70 | ]
71 | },
72 | {
73 | "cell_type": "code",
74 | "execution_count": 1,
75 | "metadata": {
76 | "collapsed": true
77 | },
78 | "outputs": [],
79 | "source": [
80 | "import requests\n",
81 | "import time as t \n",
82 | "import csv\n",
83 | "from datetime import datetime, date, time, timedelta\n",
84 | "import random"
85 | ]
86 | },
87 | {
88 | "cell_type": "markdown",
89 | "metadata": {},
90 | "source": [
91 | "Функция для сбора ID из сообщества\n",
92 | "взята из готового скрипта - https://github.com/kepatopoc/vk-scripts/blob/master/get_club_id.ipynb"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "execution_count": 6,
98 | "metadata": {
99 | "collapsed": true
100 | },
101 | "outputs": [],
102 | "source": [
103 | "def get_members_list_id(owner_id): \n",
104 | " members_list = [] #изначально пустой список участников\n",
105 | "\n",
106 | " #первый запрос на 25000, чтобы получить первые 25000 и количество участников группы\n",
107 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
108 | " str(owner_id)+'&offset='+str(0)+'&count='+str(25000)+'&access_token='+token).json()['response']\n",
109 | " members_count = r[0] #количество участников\n",
110 | " \n",
111 | " print('В сообществе', owner_id, 'участников :',members_count)\n",
112 | " \n",
113 | " members_list.extend(r[1]) #вносим первые 25000 ID \n",
114 | " \n",
115 | " if members_count > 25000:\n",
116 | " print('В сообществе',owner_id,'больше 25000 участников. Цербер запускает цикл')\n",
117 | " for offset in range(25000, members_count, 25000):\n",
118 | " count = offset + 25000\n",
119 | "\n",
120 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
121 | " str(owner_id)+'&offset='+str(offset)+'&count='+str(count)+'&access_token='+token).json()['response']\n",
122 | "\n",
123 | " members_list.extend(r[1]) #вносим все последующие ID пачками по 25000 ID\n",
124 | "\n",
125 | "\n",
126 | " #t.sleep(.35) #задержки между запросом --- ВАЖНО: если будут возникать проблемы - расскоментировать \n",
127 | " print('Цербер закончил сбор ID для')\n",
128 | " else:\n",
129 | " print('В сообществе меньше 25000 участников. Цербер закончил сбор ID для')\n",
130 | "\n",
131 | " return members_list"
132 | ]
133 | },
134 | {
135 | "cell_type": "markdown",
136 | "metadata": {},
137 | "source": [
138 | "Запускаем функцию для каждого сообщества.\n",
139 | "\n",
140 | "**%time** - для вывода времени, за которое выполняется функция"
141 | ]
142 | },
143 | {
144 | "cell_type": "code",
145 | "execution_count": 11,
146 | "metadata": {
147 | "collapsed": false
148 | },
149 | "outputs": [
150 | {
151 | "name": "stdout",
152 | "output_type": "stream",
153 | "text": [
154 | "В сообществе 38369814 участников : 28945\n",
155 | "В сообществе 38369814 больше 25000 участников. Цербер запускает цикл\n",
156 | "Цербер закончил сбор ID для\n",
157 | "Wall time: 1.32 s\n",
158 | "В сообществе 73662138 участников : 136479\n",
159 | "В сообществе 73662138 больше 25000 участников. Цербер запускает цикл\n",
160 | "Цербер закончил сбор ID для\n",
161 | "Wall time: 4.92 s\n",
162 | "В сообществе 40018862 участников : 104536\n",
163 | "В сообществе 40018862 больше 25000 участников. Цербер запускает цикл\n",
164 | "Цербер закончил сбор ID для\n",
165 | "Wall time: 3.63 s\n"
166 | ]
167 | }
168 | ],
169 | "source": [
170 | "%time smmblog = get_members_list_id(38369814)\n",
171 | "%time cerebro = get_members_list_id(73662138)\n",
172 | "%time imaya = get_members_list_id(40018862)"
173 | ]
174 | },
175 | {
176 | "cell_type": "markdown",
177 | "metadata": {},
178 | "source": [
179 | "выводим на экран количество собранных ID"
180 | ]
181 | },
182 | {
183 | "cell_type": "code",
184 | "execution_count": 13,
185 | "metadata": {
186 | "collapsed": false
187 | },
188 | "outputs": [
189 | {
190 | "data": {
191 | "text/plain": [
192 | "269960"
193 | ]
194 | },
195 | "execution_count": 13,
196 | "metadata": {},
197 | "output_type": "execute_result"
198 | }
199 | ],
200 | "source": [
201 | "count = len(smmblog + cerebro + imaya)\n",
202 | "count #269 000 за 10 сек. о как."
203 | ]
204 | },
205 | {
206 | "cell_type": "markdown",
207 | "metadata": {},
208 | "source": [
209 | "Сколько участников состоит только в одном из 3х сообществ."
210 | ]
211 | },
212 | {
213 | "cell_type": "code",
214 | "execution_count": 18,
215 | "metadata": {
216 | "collapsed": false
217 | },
218 | "outputs": [
219 | {
220 | "data": {
221 | "text/plain": [
222 | "225804"
223 | ]
224 | },
225 | "execution_count": 18,
226 | "metadata": {},
227 | "output_type": "execute_result"
228 | }
229 | ],
230 | "source": [
231 | "uniq_3 = set(smmblog) | set(cerebro) | set(imaya)\n",
232 | "len(groups_3)"
233 | ]
234 | },
235 | {
236 | "cell_type": "markdown",
237 | "metadata": {},
238 | "source": [
239 | "
\n",
240 | "Получил уникальные, то есть без каких-либо пересечений. \n",
241 | "Получается что всего 44000 сидит в трёх сообществах.\n"
242 | ]
243 | },
244 | {
245 | "cell_type": "markdown",
246 | "metadata": {},
247 | "source": [
248 | "
\n"
249 | ]
250 | },
251 | {
252 | "cell_type": "code",
253 | "execution_count": 21,
254 | "metadata": {
255 | "collapsed": false
256 | },
257 | "outputs": [
258 | {
259 | "data": {
260 | "text/plain": [
261 | "6499"
262 | ]
263 | },
264 | "execution_count": 21,
265 | "metadata": {},
266 | "output_type": "execute_result"
267 | }
268 | ],
269 | "source": [
270 | "groups_3 = set(smmblog) & set(cerebro) & set(imaya)\n",
271 | "len(groups_3)"
272 | ]
273 | },
274 | {
275 | "cell_type": "markdown",
276 | "metadata": {},
277 | "source": [
278 | "
"
279 | ]
280 | },
281 | {
282 | "cell_type": "markdown",
283 | "metadata": {},
284 | "source": [
285 | "6499 состоят сразу в трёх сообществах. Это значение без проблем можем записать в csv"
286 | ]
287 | },
288 | {
289 | "cell_type": "markdown",
290 | "metadata": {},
291 | "source": [
292 | "## Запись данных в csv"
293 | ]
294 | },
295 | {
296 | "cell_type": "code",
297 | "execution_count": 23,
298 | "metadata": {
299 | "collapsed": true
300 | },
301 | "outputs": [],
302 | "source": [
303 | "with open('3 группы.csv', 'w', newline='') as csvfile:\n",
304 | " datawriter = csv.writer(csvfile, delimiter=',',\n",
305 | " quotechar='|', quoting=csv.QUOTE_MINIMAL)\n",
306 | " datawriter.writerow(groups_3)"
307 | ]
308 | },
309 | {
310 | "cell_type": "markdown",
311 | "metadata": {},
312 | "source": [
313 | "Всё. файл можно загружать в ретаргетинг.\n",
314 | "\n",
315 | "Таким образом из нескольких частей был составлен простой скрипт по поиску тех, кто находится в нескольких сообщества. Заняло это неболее 10 минут при наличии готовых компоментов и понимании что делать."
316 | ]
317 | }
318 | ],
319 | "metadata": {
320 | "kernelspec": {
321 | "display_name": "Python 3",
322 | "language": "python",
323 | "name": "python3"
324 | },
325 | "language_info": {
326 | "codemirror_mode": {
327 | "name": "ipython",
328 | "version": 3
329 | },
330 | "file_extension": ".py",
331 | "mimetype": "text/x-python",
332 | "name": "python",
333 | "nbconvert_exporter": "python",
334 | "pygments_lexer": "ipython3",
335 | "version": "3.5.1"
336 | }
337 | },
338 | "nbformat": 4,
339 | "nbformat_minor": 0
340 | }
341 |
--------------------------------------------------------------------------------
/get_club_id.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Сбор ID участников сообщества (группа, паблик, встреча) ВКонтакте"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "Автор: Шмаков Сергей\n",
15 | "* http://freesmm.ru\n",
16 | "* https://vk.com/smmblog\n",
17 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
18 | "* https://youtube.com/smmblog\n",
19 | "\n",
20 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34128076\n",
21 | "\n",
22 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс, который я составил и будем всем счастье! http://freesmm.tilda.ws/page241764.html"
23 | ]
24 | },
25 | {
26 | "cell_type": "markdown",
27 | "metadata": {},
28 | "source": [
29 | "Для корректной работы скрипта **необходимо получить ТОКЕН** и вставить его в одном из блоков\n",
30 | "\n",
31 | "**Как получить токен, для запуска приложений**:\n",
32 | "* Перейдите по ссылке: https://oauth.vk.com/authorize?client_id=5453402&display=page&redirect_uri=http://localhost&scope=&response_type=token&v=5.53\n",
33 | "* Скопируйте токен из адресной строки и вставьте в ячейку\n",
34 | "\n",
35 | "> Токен никуда не передаётся. О нём знаете только Вы и приложение ВКонтакте, которое не отображает токенов. Только количество установок приложения\n",
36 | "\n",
37 | ""
38 | ]
39 | },
40 | {
41 | "cell_type": "markdown",
42 | "metadata": {},
43 | "source": [
44 | "Последовательно запустите блоки"
45 | ]
46 | },
47 | {
48 | "cell_type": "markdown",
49 | "metadata": {},
50 | "source": [
51 | "## Когда сообщество одно"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 1,
57 | "metadata": {
58 | "collapsed": true
59 | },
60 | "outputs": [],
61 | "source": [
62 | "import requests\n",
63 | "import time as t \n",
64 | "import csv\n",
65 | "from datetime import datetime, date, time, timedelta\n",
66 | "\n",
67 | "token = 'bce88fab620ffb6de808026706b0f3b83912ea85d553e1249082ee1267f2d9e5c3cc718ecb9a5e3b61fec2b9cff1e'"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "execution_count": 16,
73 | "metadata": {
74 | "collapsed": false
75 | },
76 | "outputs": [],
77 | "source": [
78 | "def write_txt(members_list, owner_id): \n",
79 | " a = open('members_club'+str(owner_id)+'.txt', 'w')\n",
80 | " for i in members_list:\n",
81 | " a.write(str(i)+'\\n') #писать мож\n",
82 | " a.close() "
83 | ]
84 | },
85 | {
86 | "cell_type": "code",
87 | "execution_count": 18,
88 | "metadata": {
89 | "collapsed": false
90 | },
91 | "outputs": [],
92 | "source": [
93 | "def get_members_list_id(owner_id):\n",
94 | " print('Цербер начал работать в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
95 | " \n",
96 | " members_list = [] #изначально пустой список участников\n",
97 | "\n",
98 | " #первый запрос на 25000, чтобы получить первые 25000 и количество участников группы\n",
99 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
100 | " str(owner_id)+'&offset='+str(0)+'&count='+str(25000)+'&access_token='+token).json()['response']\n",
101 | " members_count = r[0] #количество участников\n",
102 | " \n",
103 | " print('Количество участников в сообществе:',members_count)\n",
104 | " \n",
105 | " members_list.extend(r[1]) #вносим первые 25000 ID \n",
106 | " \n",
107 | " if members_count > 25000:\n",
108 | " print('В сообществе больше 25000 участников. Цербер запускает цикл')\n",
109 | " for offset in range(25000, members_count, 25000):\n",
110 | " count = offset + 25000\n",
111 | "\n",
112 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
113 | " str(owner_id)+'&offset='+str(offset)+'&count='+str(count)+'&access_token='+token).json()['response']\n",
114 | "\n",
115 | " members_list.extend(r[1]) #вносим все последующие ID пачками по 25000 ID\n",
116 | "\n",
117 | "\n",
118 | " #t.sleep(.35) #задержки между запросом --- ВАЖНО: если будут возникать проблемы - расскоментировать \n",
119 | " print('Цербер закончил сбор ID')\n",
120 | " else:\n",
121 | " print('В сообществе меньше 25000 участников. Цербер закончил сбор ID')\n",
122 | " \n",
123 | " print(len(members_list))\n",
124 | " write_txt(members_list, owner_id) #записываем по 25000 ID\n",
125 | " print('Данные успешно записаны')\n",
126 | " print('Цербер закончил работать в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n"
127 | ]
128 | },
129 | {
130 | "cell_type": "markdown",
131 | "metadata": {},
132 | "source": [
133 | "Подставьте в скобки ID сообщества, из которого нужно собрать ID участников"
134 | ]
135 | },
136 | {
137 | "cell_type": "code",
138 | "execution_count": 20,
139 | "metadata": {
140 | "collapsed": false
141 | },
142 | "outputs": [
143 | {
144 | "name": "stdout",
145 | "output_type": "stream",
146 | "text": [
147 | "Цербер начал работать в: 22:50:09\n",
148 | "Количество участников в сообществе: 28261\n",
149 | "В сообществе больше 25000 участников. Цербер запускает цикл\n",
150 | "Цербер закончил сбор ID\n",
151 | "28261\n",
152 | "Данные успешно записаны\n",
153 | "Цербер закончил работать в: 22:50:10\n",
154 | "Wall time: 925 ms\n"
155 | ]
156 | }
157 | ],
158 | "source": [
159 | "%time get_members_list_id(38369814) # vk.com/smmblog"
160 | ]
161 | },
162 | {
163 | "cell_type": "code",
164 | "execution_count": 19,
165 | "metadata": {
166 | "collapsed": false
167 | },
168 | "outputs": [
169 | {
170 | "name": "stdout",
171 | "output_type": "stream",
172 | "text": [
173 | "Цербер начал работать в: 22:49:49\n",
174 | "Количество участников в сообществе: 528548\n",
175 | "В сообществе больше 25000 участников. Цербер запускает цикл\n",
176 | "Цербер закончил сбор ID\n",
177 | "528548\n",
178 | "Данные успешно записаны\n",
179 | "Цербер закончил работать в: 22:50:02\n",
180 | "Wall time: 13 s\n"
181 | ]
182 | }
183 | ],
184 | "source": [
185 | "%time get_members_list_id(33393308) # vk.com/vcru"
186 | ]
187 | },
188 | {
189 | "cell_type": "markdown",
190 | "metadata": {},
191 | "source": [
192 | "## Если сообществ несколько и нужно писать в один файл"
193 | ]
194 | },
195 | {
196 | "cell_type": "code",
197 | "execution_count": 7,
198 | "metadata": {
199 | "collapsed": true
200 | },
201 | "outputs": [],
202 | "source": [
203 | "import requests\n",
204 | "import time as t \n",
205 | "import csv\n",
206 | "from datetime import datetime, date, time, timedelta\n",
207 | "import random"
208 | ]
209 | },
210 | {
211 | "cell_type": "code",
212 | "execution_count": 16,
213 | "metadata": {
214 | "collapsed": true
215 | },
216 | "outputs": [],
217 | "source": [
218 | "def write_txt(members_list): \n",
219 | " a = open('members_club_list'+str(random.randint(0, 999999))+'.txt', 'a') #добавлено случайное число, чтобы выгрузки не совпадали\n",
220 | " for i in members_list:\n",
221 | " a.write(str(i)+'\\n') #писать мож\n",
222 | " a.close() "
223 | ]
224 | },
225 | {
226 | "cell_type": "code",
227 | "execution_count": 17,
228 | "metadata": {
229 | "collapsed": true
230 | },
231 | "outputs": [],
232 | "source": [
233 | "def get_members_list_id(owner_id): \n",
234 | " members_list = [] #изначально пустой список участников\n",
235 | "\n",
236 | " #первый запрос на 25000, чтобы получить первые 25000 и количество участников группы\n",
237 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
238 | " str(owner_id)+'&offset='+str(0)+'&count='+str(25000)+'&access_token='+token).json()['response']\n",
239 | " members_count = r[0] #количество участников\n",
240 | " \n",
241 | " print('В сообществе', owner_id, 'участников :',members_count)\n",
242 | " \n",
243 | " members_list.extend(r[1]) #вносим первые 25000 ID \n",
244 | " \n",
245 | " if members_count > 25000:\n",
246 | " print('В сообществе',owner_id,'больше 25000 участников. Цербер запускает цикл')\n",
247 | " for offset in range(25000, members_count, 25000):\n",
248 | " count = offset + 25000\n",
249 | "\n",
250 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_getClub_members?group_id='+\n",
251 | " str(owner_id)+'&offset='+str(offset)+'&count='+str(count)+'&access_token='+token).json()['response']\n",
252 | "\n",
253 | " members_list.extend(r[1]) #вносим все последующие ID пачками по 25000 ID\n",
254 | "\n",
255 | "\n",
256 | " #t.sleep(.35) #задержки между запросом --- ВАЖНО: если будут возникать проблемы - расскоментировать \n",
257 | " print('Цербер закончил сбор ID для', owner_id)\n",
258 | " else:\n",
259 | " print('В сообществе меньше 25000 участников. Цербер закончил сбор ID для', owner_id)\n",
260 | "\n",
261 | " return members_list"
262 | ]
263 | },
264 | {
265 | "cell_type": "code",
266 | "execution_count": 18,
267 | "metadata": {
268 | "collapsed": false
269 | },
270 | "outputs": [],
271 | "source": [
272 | "def get_list_club_id(list_club):\n",
273 | " print('Цербер начал работать в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))\n",
274 | " b = []\n",
275 | " for i in list_club:\n",
276 | " b.extend(get_members_list_id(i))\n",
277 | "\n",
278 | " \n",
279 | " write_txt(b) #записываем сразу все ID из сообществ, указанных в списке\n",
280 | " print('Данные успешно записаны')\n",
281 | " print('Цербер закончил работать в:',datetime.strftime(datetime.now(), \"%H:%M:%S\"))"
282 | ]
283 | },
284 | {
285 | "cell_type": "code",
286 | "execution_count": 19,
287 | "metadata": {
288 | "collapsed": false
289 | },
290 | "outputs": [
291 | {
292 | "name": "stdout",
293 | "output_type": "stream",
294 | "text": [
295 | "Цербер начал работать в: 23:44:06\n",
296 | "В сообществе 38369814 участников : 28260\n",
297 | "В сообществе 38369814 больше 25000 участников. Цербер запускает цикл\n",
298 | "Цербер закончил сбор ID для 38369814\n",
299 | "В сообществе 40018862 участников : 101905\n",
300 | "В сообществе 40018862 больше 25000 участников. Цербер запускает цикл\n",
301 | "Цербер закончил сбор ID для 40018862\n",
302 | "Данные успешно записаны\n",
303 | "Цербер закончил работать в: 23:44:10\n",
304 | "Wall time: 3.67 s\n"
305 | ]
306 | }
307 | ],
308 | "source": [
309 | "list_club = [38369814,40018862] # список id сообществ, из которых нужно собрать участников\n",
310 | "%time get_list_club_id(list_club)"
311 | ]
312 | },
313 | {
314 | "cell_type": "markdown",
315 | "metadata": {},
316 | "source": [
317 | "Автор: Шмаков Сергей\n",
318 | "* http://freesmm.ru\n",
319 | "* https://vk.com/smmblog\n",
320 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
321 | "* https://youtube.com/smmblog\n",
322 | "\n",
323 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34128076\n",
324 | "\n",
325 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс, который я составил и будем всем счастье! http://freesmm.tilda.ws/page241764.html"
326 | ]
327 | }
328 | ],
329 | "metadata": {
330 | "kernelspec": {
331 | "display_name": "Python 3",
332 | "language": "python",
333 | "name": "python3"
334 | },
335 | "language_info": {
336 | "codemirror_mode": {
337 | "name": "ipython",
338 | "version": 3
339 | },
340 | "file_extension": ".py",
341 | "mimetype": "text/x-python",
342 | "name": "python",
343 | "nbconvert_exporter": "python",
344 | "pygments_lexer": "ipython3",
345 | "version": "3.5.1"
346 | }
347 | },
348 | "nbformat": 4,
349 | "nbformat_minor": 0
350 | }
351 |
--------------------------------------------------------------------------------
/get_post_by_hashtag.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Сбор постов Вконтакте по #хештегу"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "Автор: Шмаков Сергей\n",
15 | "* http://freesmm.ru\n",
16 | "* https://vk.com/smmblog\n",
17 | "* https://vk.com/freesmm - сборник бесплатных скриптов для SMM\n",
18 | "* https://youtube.com/smmblog\n",
19 | "\n",
20 | "* **Вопросы по скрипту/доработки** : https://new.vk.com/topic-41212221_34161499\n",
21 | "\n",
22 | "> Хотите научиться самостоятельно делать такие скрипты? Проходите бесплатный курс по программированию адаптированные для SMM-щиков http://freesmm.tilda.ws/page241764.html"
23 | ]
24 | },
25 | {
26 | "cell_type": "markdown",
27 | "metadata": {},
28 | "source": [
29 | "## Что умеет скрипт\n",
30 | "* Собирать основные данные в таблицу (без текста\\фото и прочего)\n",
31 | "* Экспресс-анализ данных\n",
32 | "\n",
33 | "Нужны доработки? обращайтесь - vk.me/smmblog"
34 | ]
35 | },
36 | {
37 | "cell_type": "markdown",
38 | "metadata": {},
39 | "source": [
40 | "## Шаг 0 - подключить пакеты"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": 14,
46 | "metadata": {
47 | "collapsed": true
48 | },
49 | "outputs": [],
50 | "source": [
51 | "import time as t \n",
52 | "import csv\n",
53 | "import datetime as dt\n",
54 | "from datetime import datetime, date, time, timedelta\n",
55 | "import requests\n",
56 | "import itertools\n",
57 | "%matplotlib inline"
58 | ]
59 | },
60 | {
61 | "cell_type": "markdown",
62 | "metadata": {},
63 | "source": [
64 | "## Шаг 1 - получить токен ВКонтакте\n",
65 | "\n",
66 | "Для получения токена перейдите по ссылке и скопируйте нужную часть в блок ниже\n",
67 | "https://oauth.vk.com/authorize?client_id=5453402&display=page&redirect_uri=http://localhost&scope=&response_type=token&v=5.53\n",
68 | ""
69 | ]
70 | },
71 | {
72 | "cell_type": "code",
73 | "execution_count": 150,
74 | "metadata": {
75 | "collapsed": false
76 | },
77 | "outputs": [],
78 | "source": [
79 | "token = 'вставить токен'"
80 | ]
81 | },
82 | {
83 | "cell_type": "markdown",
84 | "metadata": {},
85 | "source": [
86 | "## Шаг 2 - задать запрос"
87 | ]
88 | },
89 | {
90 | "cell_type": "code",
91 | "execution_count": 151,
92 | "metadata": {
93 | "collapsed": true
94 | },
95 | "outputs": [],
96 | "source": [
97 | "q = 'vinci' #без знака # только одно слово."
98 | ]
99 | },
100 | {
101 | "cell_type": "markdown",
102 | "metadata": {},
103 | "source": [
104 | "## Шаг 3 - создать csv с колонками\n",
105 | "\n",
106 | "Создаём файл и записываем колонки таблицы (создаёт новую или перезаписывает **полностью** старую)"
107 | ]
108 | },
109 | {
110 | "cell_type": "code",
111 | "execution_count": 152,
112 | "metadata": {
113 | "collapsed": false
114 | },
115 | "outputs": [],
116 | "source": [
117 | "with open(q+'.csv', 'w', newline='', encoding='UTF-8') as csvfile:\n",
118 | " datawriter = csv.writer(csvfile, delimiter=';',\n",
119 | " quotechar='|', quoting=csv.QUOTE_MINIMAL)\n",
120 | "\n",
121 | "\n",
122 | " datawriter.writerow(['date']+['owner_id']+['post_id']+['likes']+\n",
123 | " ['reposts']+['comments']+\n",
124 | "\n",
125 | " ['coordinates']+ \n",
126 | " #не трогать, не работает.\n",
127 | " #['place_country']+['city']+['address']+['coordinates']+ \n",
128 | " #['place_id']+['latitude']+['longitude']+\n",
129 | " #['created']+['updated']+['checkins']+ \n",
130 | "\n",
131 | " ['post_type']+\n",
132 | " ['platform']+['platform_type'])"
133 | ]
134 | },
135 | {
136 | "cell_type": "code",
137 | "execution_count": null,
138 | "metadata": {
139 | "collapsed": false
140 | },
141 | "outputs": [],
142 | "source": [
143 | "i = 0\n",
144 | "while True:\n",
145 | "\n",
146 | " if i == 0:\n",
147 | " b = datetime.now() #текущее время\n",
148 | "\n",
149 | " end_time = 1475508828 #int(t.mktime(b.timetuple())) #подставить unix-время если требуется сбор с определённого момента\n",
150 | " \n",
151 | " print('Цербер начал собирать посты с:', end_time, dt.datetime.fromtimestamp( #функция преобразования\n",
152 | " int(end_time)\n",
153 | " ).strftime('%Y-%m-%d %H:%M:%S'))\n",
154 | "\n",
155 | " i = 1\n",
156 | "\n",
157 | " else:\n",
158 | " end_time = r[0] #возвращает ВК крайнее время от которого нужно опускаться дальше\n",
159 | "\n",
160 | "\n",
161 | "\n",
162 | " r = requests.post('https://api.vk.com/method/execute.Shmakov_search_post?q='+str(q)\n",
163 | " +'&end_time='+str(end_time)\n",
164 | " +'&access_token='+token).json()['response']\n",
165 | " #print('крайнее время, должно совпадать',r[0])\n",
166 | " \n",
167 | "\n",
168 | " #print(len(r[1])) - сколько постов собрано за раз\n",
169 | "\n",
170 | "\n",
171 | "\n",
172 | " #print(time_start)\n",
173 | "\n",
174 | " for i in r[1]:\n",
175 | "\n",
176 | "\n",
177 | " date = i['date'] #дата поста\n",
178 | "\n",
179 | " owner_id = i['owner_id'] #создатель поста\n",
180 | " post_id = i['id'] #id поста\n",
181 | "\n",
182 | " likes = i['likes']['count'] #количество лайков\n",
183 | " reposts = i['reposts']['count'] #количество репостов\n",
184 | " comments = i['comments']['count'] #количество комментариев\n",
185 | " geo = i.setdefault('geo', None) \n",
186 | "\n",
187 | "\n",
188 | " if geo == None:\n",
189 | " coordinates = None\n",
190 | " else:\n",
191 | " '''\n",
192 | " place_id = i['geo']['place'].setdefault('id',None)\n",
193 | " latitude = geo['place'].setdefault('latitude',None) #широта места\n",
194 | " longitude = geo['place'].setdefault('longitude',None) #долгота места\n",
195 | " created= geo['place'].setdefault('created',None) # дата создания места\n",
196 | " updated= geo['place'].setdefault('updated',None) # дата обновления информации о месте\n",
197 | " checkins= geo['place'].setdefault('checkins',None) #количество чекинов в этом месте\n",
198 | " place_name = i['geo'].setdefault('title',None)\n",
199 | " country = i['geo'].setdefault('country',None)\n",
200 | " city = i['geo'].setdefault('city',None)\n",
201 | " address = i['geo'].setdefault('address',None)\n",
202 | "\n",
203 | " '''\n",
204 | " coordinates= geo.setdefault('coordinates',None) #координаты пользователя \n",
205 | "\n",
206 | "\n",
207 | " post_type = i['post_type']\n",
208 | "\n",
209 | " platform = i['post_source'].setdefault('platform','direct')\n",
210 | " platform_type = i['post_source'].setdefault('type',None)\n",
211 | " platform_url = i['post_source'].setdefault('url',None)\n",
212 | "\n",
213 | "\n",
214 | "\n",
215 | " with open(str(q)+'.csv', 'a', newline='', encoding='UTF-8') as csvfile:\n",
216 | " datawriter = csv.writer(csvfile, delimiter=';',\n",
217 | " quotechar='|', quoting=csv.QUOTE_MINIMAL)\n",
218 | "\n",
219 | "\n",
220 | " datawriter.writerow([date]+[owner_id]+[post_id]+[likes]+\n",
221 | " [reposts]+[comments]+\n",
222 | "\n",
223 | " #[geo]+\n",
224 | " [coordinates]+ \n",
225 | "\n",
226 | " #не трогать - не работает\n",
227 | " #[country]+[city]+[address]+ \n",
228 | " #[place_id]+[latitude]+[longitude]+\n",
229 | " #[created]+[updated]+[checkins]+\n",
230 | "\n",
231 | "\n",
232 | " [post_type]+\n",
233 | " [platform]+[platform_type])\n",
234 | " print('Цербер собрал посты до:',r[0],dt.datetime.fromtimestamp( #функция преобразования\n",
235 | " int(r[0])\n",
236 | " ).strftime('%Y-%m-%d %H:%M:%S'))\n",
237 | " t.sleep(30) "
238 | ]
239 | },
240 | {
241 | "cell_type": "code",
242 | "execution_count": 80,
243 | "metadata": {
244 | "collapsed": true
245 | },
246 | "outputs": [],
247 | "source": [
248 | "import numpy as np\n",
249 | "import pandas as pd\n",
250 | "import matplotlib\n",
251 | "import numpy as np\n",
252 | "import matplotlib.pyplot as plt\n",
253 | "import matplotlib.patches as mpatches"
254 | ]
255 | },
256 | {
257 | "cell_type": "code",
258 | "execution_count": 164,
259 | "metadata": {
260 | "collapsed": true
261 | },
262 | "outputs": [],
263 | "source": [
264 | "df = pd.read_csv(str(q)+'.csv', delimiter=';', encoding='UTF-8',error_bad_lines=False, parse_dates=True)"
265 | ]
266 | },
267 | {
268 | "cell_type": "code",
269 | "execution_count": 165,
270 | "metadata": {
271 | "collapsed": false
272 | },
273 | "outputs": [
274 | {
275 | "data": {
276 | "text/html": [
277 | "\n",
278 | "
\n",
279 | " \n",
280 | " \n",
281 | " | \n",
282 | " date | \n",
283 | " owner_id | \n",
284 | " post_id | \n",
285 | " likes | \n",
286 | " reposts | \n",
287 | " comments | \n",
288 | " coordinates | \n",
289 | " post_type | \n",
290 | " platform | \n",
291 | " platform_type | \n",
292 | "
\n",
293 | " \n",
294 | " \n",
295 | " \n",
296 | " | 0 | \n",
297 | " 1477743102 | \n",
298 | " -131803463 | \n",
299 | " 738 | \n",
300 | " 0 | \n",
301 | " 0 | \n",
302 | " 0 | \n",
303 | " NaN | \n",
304 | " reply | \n",
305 | " direct | \n",
306 | " mvk | \n",
307 | "
\n",
308 | " \n",
309 | " | 1 | \n",
310 | " 1477742854 | \n",
311 | " 343870044 | \n",
312 | " 1004 | \n",
313 | " 0 | \n",
314 | " 0 | \n",
315 | " 0 | \n",
316 | " NaN | \n",
317 | " post | \n",
318 | " direct | \n",
319 | " vk | \n",
320 | "
\n",
321 | " \n",
322 | " | 2 | \n",
323 | " 1477742834 | \n",
324 | " 94359618 | \n",
325 | " 13196 | \n",
326 | " 0 | \n",
327 | " 0 | \n",
328 | " 0 | \n",
329 | " NaN | \n",
330 | " post | \n",
331 | " instagram | \n",
332 | " api | \n",
333 | "
\n",
334 | " \n",
335 | " | 3 | \n",
336 | " 1477742572 | \n",
337 | " 150538526 | \n",
338 | " 19 | \n",
339 | " 0 | \n",
340 | " 0 | \n",
341 | " 0 | \n",
342 | " NaN | \n",
343 | " post | \n",
344 | " direct | \n",
345 | " vk | \n",
346 | "
\n",
347 | " \n",
348 | " | 4 | \n",
349 | " 1477742312 | \n",
350 | " 150538526 | \n",
351 | " 15 | \n",
352 | " 0 | \n",
353 | " 0 | \n",
354 | " 0 | \n",
355 | " NaN | \n",
356 | " post | \n",
357 | " direct | \n",
358 | " vk | \n",
359 | "
\n",
360 | " \n",
361 | "
\n",
362 | "
"
363 | ],
364 | "text/plain": [
365 | " date owner_id post_id likes reposts comments coordinates \\\n",
366 | "0 1477743102 -131803463 738 0 0 0 NaN \n",
367 | "1 1477742854 343870044 1004 0 0 0 NaN \n",
368 | "2 1477742834 94359618 13196 0 0 0 NaN \n",
369 | "3 1477742572 150538526 19 0 0 0 NaN \n",
370 | "4 1477742312 150538526 15 0 0 0 NaN \n",
371 | "\n",
372 | " post_type platform platform_type \n",
373 | "0 reply direct mvk \n",
374 | "1 post direct vk \n",
375 | "2 post instagram api \n",
376 | "3 post direct vk \n",
377 | "4 post direct vk "
378 | ]
379 | },
380 | "execution_count": 165,
381 | "metadata": {},
382 | "output_type": "execute_result"
383 | }
384 | ],
385 | "source": [
386 | "df.head()"
387 | ]
388 | },
389 | {
390 | "cell_type": "markdown",
391 | "metadata": {},
392 | "source": [
393 | "удалим дубликаты. возможны будут если перезаписывать файл"
394 | ]
395 | },
396 | {
397 | "cell_type": "code",
398 | "execution_count": null,
399 | "metadata": {
400 | "collapsed": false
401 | },
402 | "outputs": [],
403 | "source": [
404 | "df.drop_duplicates() #удалит дубликаты если перезаписывали файл"
405 | ]
406 | },
407 | {
408 | "cell_type": "markdown",
409 | "metadata": {},
410 | "source": [
411 | "переведём unix-time в нормальное время"
412 | ]
413 | },
414 | {
415 | "cell_type": "code",
416 | "execution_count": 167,
417 | "metadata": {
418 | "collapsed": true
419 | },
420 | "outputs": [],
421 | "source": [
422 | "df['date'] = pd.to_datetime(df['date'],unit='s') "
423 | ]
424 | },
425 | {
426 | "cell_type": "markdown",
427 | "metadata": {},
428 | "source": [
429 | "сгруппируем данные по дням"
430 | ]
431 | },
432 | {
433 | "cell_type": "code",
434 | "execution_count": 168,
435 | "metadata": {
436 | "collapsed": false
437 | },
438 | "outputs": [
439 | {
440 | "data": {
441 | "text/html": [
442 | "\n",
443 | "
\n",
444 | " \n",
445 | " \n",
446 | " | \n",
447 | " owner_id | \n",
448 | " post_id | \n",
449 | " likes | \n",
450 | " reposts | \n",
451 | " comments | \n",
452 | " coordinates | \n",
453 | " post_type | \n",
454 | " platform | \n",
455 | " platform_type | \n",
456 | "
\n",
457 | " \n",
458 | " | date | \n",
459 | " | \n",
460 | " | \n",
461 | " | \n",
462 | " | \n",
463 | " | \n",
464 | " | \n",
465 | " | \n",
466 | " | \n",
467 | " | \n",
468 | "
\n",
469 | " \n",
470 | " \n",
471 | " \n",
472 | " | 2016-08-18 | \n",
473 | " 250 | \n",
474 | " 250 | \n",
475 | " 250 | \n",
476 | " 250 | \n",
477 | " 250 | \n",
478 | " 18 | \n",
479 | " 250 | \n",
480 | " 250 | \n",
481 | " 250 | \n",
482 | "
\n",
483 | " \n",
484 | " | 2016-08-19 | \n",
485 | " 427 | \n",
486 | " 427 | \n",
487 | " 427 | \n",
488 | " 427 | \n",
489 | " 427 | \n",
490 | " 22 | \n",
491 | " 427 | \n",
492 | " 427 | \n",
493 | " 427 | \n",
494 | "
\n",
495 | " \n",
496 | " | 2016-08-20 | \n",
497 | " 456 | \n",
498 | " 456 | \n",
499 | " 456 | \n",
500 | " 456 | \n",
501 | " 456 | \n",
502 | " 25 | \n",
503 | " 456 | \n",
504 | " 456 | \n",
505 | " 456 | \n",
506 | "
\n",
507 | " \n",
508 | " | 2016-08-21 | \n",
509 | " 511 | \n",
510 | " 511 | \n",
511 | " 511 | \n",
512 | " 511 | \n",
513 | " 511 | \n",
514 | " 30 | \n",
515 | " 511 | \n",
516 | " 511 | \n",
517 | " 511 | \n",
518 | "
\n",
519 | " \n",
520 | " | 2016-08-22 | \n",
521 | " 410 | \n",
522 | " 410 | \n",
523 | " 410 | \n",
524 | " 410 | \n",
525 | " 410 | \n",
526 | " 32 | \n",
527 | " 410 | \n",
528 | " 410 | \n",
529 | " 410 | \n",
530 | "
\n",
531 | " \n",
532 | "
\n",
533 | "
"
534 | ],
535 | "text/plain": [
536 | " owner_id post_id likes reposts comments coordinates \\\n",
537 | "date \n",
538 | "2016-08-18 250 250 250 250 250 18 \n",
539 | "2016-08-19 427 427 427 427 427 22 \n",
540 | "2016-08-20 456 456 456 456 456 25 \n",
541 | "2016-08-21 511 511 511 511 511 30 \n",
542 | "2016-08-22 410 410 410 410 410 32 \n",
543 | "\n",
544 | " post_type platform platform_type \n",
545 | "date \n",
546 | "2016-08-18 250 250 250 \n",
547 | "2016-08-19 427 427 427 \n",
548 | "2016-08-20 456 456 456 \n",
549 | "2016-08-21 511 511 511 \n",
550 | "2016-08-22 410 410 410 "
551 | ]
552 | },
553 | "execution_count": 168,
554 | "metadata": {},
555 | "output_type": "execute_result"
556 | }
557 | ],
558 | "source": [
559 | "group_by_day = df.set_index('date').groupby(pd.TimeGrouper('D')).count()\n",
560 | "group_by_day.head()"
561 | ]
562 | },
563 | {
564 | "cell_type": "markdown",
565 | "metadata": {},
566 | "source": [
567 | "Нарисуем график количества публикация за каждый день"
568 | ]
569 | },
570 | {
571 | "cell_type": "code",
572 | "execution_count": 169,
573 | "metadata": {
574 | "collapsed": false
575 | },
576 | "outputs": [
577 | {
578 | "data": {
579 | "text/plain": [
580 | ""
581 | ]
582 | },
583 | "execution_count": 169,
584 | "metadata": {},
585 | "output_type": "execute_result"
586 | },
587 | {
588 | "data": {
589 | "image/png": "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\n12dh7gJmKiKWU41luAt4CXAx8F3gL5u3XAJcEBHfB+4FLgJ+CFwD1ResRcQG4NMRsQt4BLgUuCWl\ndFv7VqKpNBrV0eZu2VavXp27BEmZmH+pXOZfKpf5l8pl/uvTMc1d4HDgD4HnAg3gSuCClNJugJTS\nxRHRA3wWOAK4GXh7SunJcc84D9jdfO9BwLXAOW1bgaZlc1cAy5cvz12CpEzMv1Qu8y+Vy/xL5TL/\n9emY5m5K6QvAF57hnrXA2n1cfwI4t/nSPDI2lmHHDkgJIvLWI0mSJEmSJM13HTdzV92p0YDeXnjy\nSdi1K3c1kiRJkiRJ0vxnc1fzQqMBr3xl9bOjGcp19dVX5y5BUibmXyqX+ZfKZf6lcpn/+tjcVXYp\n2dxVZePGjblLkJSJ+ZfKZf6lcpl/qVzmvz42d5Xdww/D7t3wildUv+/Ykbce5XPFFVfkLkFSJuZf\nKpf5l8pl/qVymf/62NxVdo1GdXzuc+GII9y5K0mSJEmSJM2EzV1lN9bcffazYelSm7uSJEmSJEnS\nTNjcVXYjI9VxyRKbu5IkSZIkSdJM2dxVdpN37jpzt1yrVq3KXYKkTMy/VC7zL5XL/EvlMv/1sbmr\n7BoNOPBAOPRQWLbMnbslW758ee4SJGVi/qVymX+pXOZfKpf5r4/NXWU3MlLt2o346ViGlHJXpRxW\nrlyZuwRJmZh/qVzmXyqX+ZfKZf7rY3NX2TUa1bxdqJq7o6PwyCN5a5IkSZIkSZLmO5u7yq7RqHbu\nQtXcBefuSpIkSZIkSc/E5q6yGxvLANXMXXDubqm2bNmSuwRJmZh/qVzmXyqX+ZfKZf7rY3NX2U0e\nywA2d0t18cUX5y5BUibmXyqX+ZfKZf6lcpn/+tjcVXbjxzIcdlj1srlbpk2bNuUuQVIm5l8ql/mX\nymX+pXKZ//rY3FV248cyQLV715m7Zerp6cldgqRMzL9ULvMvlcv8S+Uy//Wxuaus9uyZOJYBqrm7\n7tyVJEmSJEmS9s3mrrJ65JGqwTt5567NXUmSJEmSJGnfbO4qq5GR6mhzVwBr1qzJXYKkTMy/VC7z\nL5XL/EvlMv/1sbmrrBqN6jh+LIMzd8vV29ubuwRJmZh/qVzmXyqX+ZfKZf7rEyml3DXMWxHRBwwO\nDg7S19eXu5yudP318Na3wr/+K4zl+m//Fs48Ex59FA49NG99kiRJkiRJUrsNDQ3R398P0J9SGpru\nPnfuKquxnbuTxzKAoxkkSZIkSZKkfbG5q6xGRmDRook7dG3uSpIkSZIkSc/M5q6yajSqXbsRPz03\n1tx17m55tm3blrsESZmYf6lc5l8ql/mXymX+62NzV1mNNXfHO/xwOOQQd+6W6Pzzz89dgqRMzL9U\nLvMvlcv8S+Uy//WxuausRkZgyZKJ5yKq3bs2d8uzfv363CVIysT8S+Uy/1K5zL9ULvNfH5u7ymqq\nnbtgc7dUvb29uUuQlIn5l8pl/qVymX+pXOa/PjZ3ldW+mrvO3JUkSZIkSZKmZ3NXWY2MTN3cXbbM\nnbuSJEmSJEnSvtjcVVaNxt4zd8GxDKVat25d7hIkZWL+pXKZf6lc5l8ql/mvj81dZbNnz77HMuza\nBT/5SfvrUj6jo6O5S5CUifmXymX+pXKZf6lc5r8+kVLKXcO8FRF9wODg4CB9fX25y+k6Dz4IRx4J\nmzfDr/7qxGs33ADLl8M998Bxx+WpT5IkSZIkScphaGiI/v5+gP6U0tB097lzV9k0GtVxurEM4GgG\nSZIkSZIkaTo2d5XNWHN3urEMYHNXkiRJkiRJmo7NXWUzMlIdp2ruPvvZsGgR7NjR3pqU1/DwcO4S\nJGVi/qVymX+pXOZfKpf5r4/NXWWzr7EMEdXuXXfuluWss87KXYKkTMy/VC7zL5XL/EvlMv/1sbmr\nbBqNanduT8/U123ulmft2rW5S5CUifmXymX+pXKZf6lc5r8+NneVzchINX4hYurrNnfL09fXl7sE\nSZmYf6lc5l8ql/mXymX+62NzV9k0GlOPZBizdKkzdyVJkiRJkqTp2NxVNo3G1F+mNmbZMnfuSpIk\nSZIkSdPpiOZuRCyIiIsi4p6IGI2I70fEBVPc97GI2NG854aIePGk6wdFxOURMRwRj0TElRFxdPtW\novGeqbm7dCkMD8OTT7avJuW1YcOG3CVIysT8S+Uy/1K5zL9ULvNfn45o7gIfBv4TcDbwcuB84PyI\nWD12Q0R8CFgNfAA4GXgMuC4iFo17ziXAO4B3A6cCy4Cr2rEA7W1k5JnHMgDs3NmeepTf0NBQ7hIk\nZWL+pXKZf6lc5l8ql/mvT6SUctfwjCLiS8D9KaX/Z9y5K4HRlNJ7m7/vAD6ZUvpM8/fFwE7gN1NK\nm5u/PwC8J6X09817XgZsBV6fUrptis/tAwYHBwcd9NwCL3sZDAzAJz859fVvfQte/Wr4x3+E172u\nvbVJkiRJkiRJuQwNDdHf3w/Qn1KathveKTt3vwGcFhEvAYiIVwFvAL7S/P044FjgxrE3pJQeBm4F\nTmmeeg2wcNI9dwHbx92jNprJzF1w7q4kSZIkSZI0lYW5C5ihTwCLgW0RsZuqKf37KaVNzevHAolq\np+54O5vXAI4Bnmw2fae7R22yZ0/V3N3XWIajjoKFC23uSpIkSZIkSVPplObuCuDXgfcA3wVOAv4o\nInaklP5n1so0Jw8/XDV497Vzd8ECOOYYm7uSJEmSJEnSVDplLMPFwCdSSl9IKd2ZUvpb4DPA7zWv\n3w8E1e7c8Y5pXhu7Z1Fz9u5090zp9NNPZ2BgYMLrlFNO4eqrr55w3/XXX8/AwMBe7z/nnHP2+hbA\noaEhBgYGGB4ennD+wgsvZN26dRPObd++nYGBAbZt2zbh/GWXXcaaNWsmnBsdHWVgYIAtW7ZMOL9x\n40ZWrVq1V20rVqzIso5Gozr37Gfvex2HHbaFHTvm7zrG6+Q/j/myjrHrnb6OMa7DdbiOma9j7H2d\nvo4xrsN1uI6Zr2NgYKAr1gHd8efhOlxHO9cxMDDQFeuA7vjzcB2uo53rGOu1dfo66vrz6O/v36v3\n+M53vnOv90+lU75QbRj4LymlPxt37veovizt5c3fp/tCtfemlL7gF6rNL//n/8DJJ8Ptt8NJJ01/\n3y/9Ejz1FPzDP7SvNuVz/fXXs3z58txlSMrA/EvlMv9Sucy/VC7z/8xm+oVqnTKW4UvABRHxQ+BO\noA84D/jcuHsuad7zfeBe4CLgh8A1UH3BWkRsAD4dEbuAR4BLgVumauyqtcZ27u5r5i7A0qVwm386\nxfBf7FK5zL9ULvMvlcv8S+Uy//XplObuaqpm7eXA0cAO4E+a5wBIKV0cET3AZ4EjgJuBt6eUnhz3\nnPOA3cCVwEHAtcA57ViAJho/lmFfli515q4kSZIkSZI0lY5o7qaUHgN+t/na131rgbX7uP4EcG7z\npYxGRmDRIujp2fd9S5fCzp3VaIaFHfFPqyRJkiRJktQenfKFauoyjUY1kiFi3/ctWwYpwY9/3J66\nlNfkoeKSymH+pXKZf6lc5l8ql/mvj81dZdFoPPNIBqh27oKjGUqxcePG3CVIysT8S+Uy/1K5zL9U\nLvNfH5u7ymJkxOau9nbFFVfkLkFSJuZfKpf5l8pl/qVymf/62NxVFmNjGZ7J0UdXoxt27Gh9TZIk\nSZIkSVInsbmrLGY6lmHhQjjmGHfuSpIkSZIkSZPZ3FUWMx3LANVoBpu7kiRJkiRJ0kQ2d5XFTMcy\ngM3dkqxatSp3CZIyMf9Sucy/VC7zL5XL/NfH5q7abs8e2LVrdjt3nblbhuXLl+cuQVIm5l8ql/mX\nymX+pXKZ//rY3FXbPfxw1eCdaXN32TJ37pZi5cqVuUuQlIn5l8pl/qVymX+pXOa/PjZ31XYjI9Vx\nNmMZdu6sGsKSJEmSJEmSKjZ31XaNRnWczViGp56C4eHW1SRJkiRJkiR1Gpu7arvZNneXLauOzt3t\nflu2bMldgqRMzL9ULvMvlcv8S+Uy//Wxuau2m8tYBnDubgkuvvji3CVIysT8S+Uy/1K5zL9ULvNf\nH5u7artGAw46CA45ZGb3H3NMdbS52/02bdqUuwRJmZh/qVzmXyqX+ZfKZf7rY3NXbddoVCMZImZ2\n/6JFcNRRNndL0NPTk7sESZmYf6lc5l8ql/mXymX+62NzV203MjLzebtjli1z5q4kSZIkSZI0ns1d\ntV2jMfN5u2OWLnXnriRJkiRJkjSezV213dhYhtmwuVuGNWvW5C5BUibmXyqX+ZfKZf6lcpn/+tjc\nVdvNZSzD0qWOZShBb29v7hIkZWL+pXKZf6lc5l8ql/mvT6SUctcwb0VEHzA4ODhIX19f7nK6xktf\nCmecARdfPPP3rF8P/+//Cz/5ycy/iE2SJEmSJEnqRENDQ/T39wP0p5SGprvPnbtqu7mOZXjyyeq9\nkiRJkiRJkmzuqs327IFdu+bW3AXn7kqSJEmSJEljbO6qrR56qGrwLlkyu/eNNXedu9vdtm3blrsE\nSZmYf6lc5l8ql/mXymX+62NzV201NlbBnbuayvnnn5+7BEmZmH+pXOZfKpf5l8pl/utjc1dtNTJS\nHWfb3D34YDjySJu73W79+vW5S5CUifmXymX+pXKZf6lc5r8+NnfVVmM7d2c7lgGq3bs2d7tbb29v\n7hIkZWL+pXKZf6lc5l8ql/mvj81dtdVcxzJA1dx15q4kSZIkSZJUsbmrtmo04KCD4JBDZv/eZcvc\nuStJkiRJkiSNsbmrthoZqUYyRMz+vY5l6H7r1q3LXYKkTMy/VC7zL5XL/EvlMv/1sbmrtmo05jaS\nAX7a3E2p3po0f4yOjuYuQVIm5l8ql/mXymX+pXKZ//pEslM2rYjoAwYHBwfp6+vLXU5X+I3fgO3b\n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\n3SRQcFckvSZMmMDREUcap071IMOTT/rQtSlTfBh+RTB0qF8oHnvMg5gdO3ru1REjfAhvZfbss54X\ntkMHnw03GT23Q4AFC3zIX5Mm0T88ZbpMqP8FVq3ynso77RR1SdyUKT4Z5DbbwMcfRzchXSo88IDn\nP3/55fWDD1I6K1f6uaZ5c2+syiaZVP8lNULw/89DDvH7EUmtl17yUSi33uoNzIW9/ro37o8fH30j\nfxT1/6ab/H5/3rzsG20kUpHo+r+ufff1htD4FEYK7iaBgrsildecOZ4bbvPNvXU/nbk2U+GTT6B1\nazjrLG8NBA9g/d//eXB3wAC44opoyxiVZ56BM87wYPeIERU3JYdkt3nzvDd53bpRlyS5QvAhaN9/\n73mPyzJhobiHH/b83p9/DnvuGXVpRNZ3/fX+fzp3bmKjY6RsvvoKDjzQz63PPlt043IInhqnevXK\nmXP2wAM9/dIzz0RdEhGRtS65xOdo+fbbta8lGtytxCnURUSKt8023uvh22+ha1fPW5at5s/3nGt7\n7+25QwtsvLG3Cl57LVx5pecdy+bjLIunnvJey506eT5TBXYlU229dcUL7IIHHQYNgpkzPTWOlM3y\n5d5D77TTFNiVzNWhAyxc6OlmJDX+/HNt3vjHHy9+1JCZ55qdPBnefjudJYzewoU+CkadBUUk07Ru\n7anvfvut9J/NiuCumV1nZlPMbJGZ/WZmL5rZrkWsd7OZ/WpmS83sdTPbudD71c3sfjNbYGaLzew5\nM9s6fUciItmkWTMfov/cc3DLLVGXpmxWr/Z0A8uX+3EU7hVnBnfc4cGVu+/2QPaqVZEUNe2eeMIn\nAOvSxYPcGpYnEo3dd/cc57fc4qlMpPQeecQnfuzdO+qSiBRvn3083c1zz0VdkoppzRpvrJ4/3yfe\n3HTTktc//nhv+M/2OQFKa+JE77ms4K6IZJpWrfzre++V/rNZEdwFDgEGAwcCRwIbAxPM7J+sc2bW\nE7gYOBc4AFgCjDez+PlYBwH/Bk4GDgW2BbIsK5lIxTVmzJioi7CeE0/0gEOfPtmXwxC8V8abb/qw\ns+23L369yy7ziaSefhpOOAGWLElfGaMwYoQHdbt29dx/CuxGLxPrv6RPnz4+cuDmm6MuSfZZuhRu\nv93PaU2aRF2aslH9rxzMvPfuiy8mtyF54UJvIKpTx/MVnnkm9OvnE4n98EPlGZV0442eQ/fppxPL\n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\n+AjYLISw1MwOw3vv1g0hLIqtUw1YCLQNIXwU99lHgU1CCGem+NBEREREJMtVjboAIiIiIiIZbidg\nY2BKwQshhD/M7OuCn82sBdAb2Buoy9oRcg2BGcVsd2egJvC6mcXn4t0YmJq00ouIiIhIhaXgroiI\niIhIOZhZTWAc8BrQCZiPp2UYB1Qr4aObxr62A34t9N6KJBdTRERERCogBXdFREREREr2PbAaOBBP\nxVCQlmFX4C2gKbAlcF0I4ZfY+wcU2sbK2Ncqca99hQdxdwghvJuqwouIiIhIxaXgroiIiIhICUII\nS8xsKHC3mS3Ee+beCqyJrTILD95eamYPAXvhk6vFmwkE4D9m9iqwLITwt5n1BwaaWRXgXaAO0Ar4\nK4Tw31Qfm4iIiIhkt402vIqIiIiISKV3DTAZGAtMiH2fCxBCWACcBZwCTAN6AFfFfziE8Cuek7cf\nMBcYHHv9RuAW4Fq8J+9reJqGH1N9QCIiIiKS/SyEEHUZRERERERERERERKSU1HNXRERERERERERE\nJAspuCsiIiIiIiIiIiKShRTcFREREREREREREclCCu6KiIiIiIiIiIiIZCEFd0VERERERERERESy\nkIK7IiIiIiIiIiIiIllIwV0RERERERERERGRLKTgroiIiIiIiIiIiEgWUnBXREREREREREREJAsp\nuCsiIiIiIiIiIiKShRTcFREREREREREREclCCu6KiIiIiIiIiIiIZKH/B8pHjPfVgbdgAAAAAElF\nTkSuQmCC\n",
590 | "text/plain": [
591 | ""
592 | ]
593 | },
594 | "metadata": {},
595 | "output_type": "display_data"
596 | }
597 | ],
598 | "source": [
599 | "plt.figure(num=1, figsize=(17, 6)) #размер отрисованного графика\n",
600 | "\n",
601 | "plt.title('Date')\n",
602 | "plt.xlabel('date') #подпись оси x\n",
603 | "plt.ylabel('count post per day') #подпись оси y\n",
604 | "plt.grid()\n",
605 | "plt.plot(group_by_day['owner_id'],label=str(q)) #что рисуем и в какой форме: точка и др.\n",
606 | "\n",
607 | "plt.legend()"
608 | ]
609 | },
610 | {
611 | "cell_type": "code",
612 | "execution_count": 170,
613 | "metadata": {
614 | "collapsed": false
615 | },
616 | "outputs": [
617 | {
618 | "data": {
619 | "text/html": [
620 | "\n",
621 | "
\n",
622 | " \n",
623 | " \n",
624 | " | \n",
625 | " date | \n",
626 | " owner_id | \n",
627 | " post_id | \n",
628 | " likes | \n",
629 | " reposts | \n",
630 | " comments | \n",
631 | " coordinates | \n",
632 | " post_type | \n",
633 | " platform_type | \n",
634 | "
\n",
635 | " \n",
636 | " | platform | \n",
637 | " | \n",
638 | " | \n",
639 | " | \n",
640 | " | \n",
641 | " | \n",
642 | " | \n",
643 | " | \n",
644 | " | \n",
645 | " | \n",
646 | "
\n",
647 | " \n",
648 | " \n",
649 | " \n",
650 | " | android | \n",
651 | " 2676 | \n",
652 | " 2676 | \n",
653 | " 2676 | \n",
654 | " 2676 | \n",
655 | " 2676 | \n",
656 | " 2676 | \n",
657 | " 30 | \n",
658 | " 2676 | \n",
659 | " 2676 | \n",
660 | "
\n",
661 | " \n",
662 | " | chronicle | \n",
663 | " 11 | \n",
664 | " 11 | \n",
665 | " 11 | \n",
666 | " 11 | \n",
667 | " 11 | \n",
668 | " 11 | \n",
669 | " 0 | \n",
670 | " 11 | \n",
671 | " 11 | \n",
672 | "
\n",
673 | " \n",
674 | " | direct | \n",
675 | " 3917 | \n",
676 | " 3917 | \n",
677 | " 3917 | \n",
678 | " 3917 | \n",
679 | " 3917 | \n",
680 | " 3917 | \n",
681 | " 9 | \n",
682 | " 3917 | \n",
683 | " 3917 | \n",
684 | "
\n",
685 | " \n",
686 | " | instagram | \n",
687 | " 3807 | \n",
688 | " 3807 | \n",
689 | " 3807 | \n",
690 | " 3807 | \n",
691 | " 3807 | \n",
692 | " 3807 | \n",
693 | " 1252 | \n",
694 | " 3807 | \n",
695 | " 3807 | \n",
696 | "
\n",
697 | " \n",
698 | " | ipad | \n",
699 | " 60 | \n",
700 | " 60 | \n",
701 | " 60 | \n",
702 | " 60 | \n",
703 | " 60 | \n",
704 | " 60 | \n",
705 | " 0 | \n",
706 | " 60 | \n",
707 | " 60 | \n",
708 | "
\n",
709 | " \n",
710 | " | iphone | \n",
711 | " 499 | \n",
712 | " 499 | \n",
713 | " 499 | \n",
714 | " 499 | \n",
715 | " 499 | \n",
716 | " 499 | \n",
717 | " 11 | \n",
718 | " 499 | \n",
719 | " 499 | \n",
720 | "
\n",
721 | " \n",
722 | " | prisma | \n",
723 | " 1 | \n",
724 | " 1 | \n",
725 | " 1 | \n",
726 | " 1 | \n",
727 | " 1 | \n",
728 | " 1 | \n",
729 | " 0 | \n",
730 | " 1 | \n",
731 | " 1 | \n",
732 | "
\n",
733 | " \n",
734 | " | vinci | \n",
735 | " 5602 | \n",
736 | " 5602 | \n",
737 | " 5602 | \n",
738 | " 5602 | \n",
739 | " 5602 | \n",
740 | " 5602 | \n",
741 | " 19 | \n",
742 | " 5602 | \n",
743 | " 5602 | \n",
744 | "
\n",
745 | " \n",
746 | " | wphone | \n",
747 | " 4427 | \n",
748 | " 4427 | \n",
749 | " 4427 | \n",
750 | " 4427 | \n",
751 | " 4427 | \n",
752 | " 4427 | \n",
753 | " 25 | \n",
754 | " 4427 | \n",
755 | " 4427 | \n",
756 | "
\n",
757 | " \n",
758 | "
\n",
759 | "
"
760 | ],
761 | "text/plain": [
762 | " date owner_id post_id likes reposts comments coordinates \\\n",
763 | "platform \n",
764 | "android 2676 2676 2676 2676 2676 2676 30 \n",
765 | "chronicle 11 11 11 11 11 11 0 \n",
766 | "direct 3917 3917 3917 3917 3917 3917 9 \n",
767 | "instagram 3807 3807 3807 3807 3807 3807 1252 \n",
768 | "ipad 60 60 60 60 60 60 0 \n",
769 | "iphone 499 499 499 499 499 499 11 \n",
770 | "prisma 1 1 1 1 1 1 0 \n",
771 | "vinci 5602 5602 5602 5602 5602 5602 19 \n",
772 | "wphone 4427 4427 4427 4427 4427 4427 25 \n",
773 | "\n",
774 | " post_type platform_type \n",
775 | "platform \n",
776 | "android 2676 2676 \n",
777 | "chronicle 11 11 \n",
778 | "direct 3917 3917 \n",
779 | "instagram 3807 3807 \n",
780 | "ipad 60 60 \n",
781 | "iphone 499 499 \n",
782 | "prisma 1 1 \n",
783 | "vinci 5602 5602 \n",
784 | "wphone 4427 4427 "
785 | ]
786 | },
787 | "execution_count": 170,
788 | "metadata": {},
789 | "output_type": "execute_result"
790 | }
791 | ],
792 | "source": [
793 | "platform = df.groupby(df['platform']).count()\n",
794 | "platform"
795 | ]
796 | },
797 | {
798 | "cell_type": "code",
799 | "execution_count": 171,
800 | "metadata": {
801 | "collapsed": true
802 | },
803 | "outputs": [],
804 | "source": [
805 | "platform_sort = platform.sort_values(['platform_type'],ascending=0)"
806 | ]
807 | },
808 | {
809 | "cell_type": "code",
810 | "execution_count": 172,
811 | "metadata": {
812 | "collapsed": false
813 | },
814 | "outputs": [
815 | {
816 | "data": {
817 | "text/plain": [
818 | ""
819 | ]
820 | },
821 | "execution_count": 172,
822 | "metadata": {},
823 | "output_type": "execute_result"
824 | },
825 | {
826 | "data": {
827 | "image/png": "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\nEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQ\nCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRAL\nAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsA\nAAAA0NnEIbaqfrSqfr+q/qaqnq2qnzrOzAeq6qtV9WRVfaaqLl11/vyqurWqRlX1eFXdXVWXrJp5\nWVXdUVVHq+pIVX20qi6c/CMCAAAAAEzXWu6IvTDJnyX5D0na6pNV9b4k70nyziSXJXkiyd6q2jA2\ndnOSNyR5U5KrkrwqycdX/ak7k8wl2TnMXpXktjXsCwAAAAAwVedN+oLW2j1J7kmSqqrjjFyf5MbW\n2qeGmbcmOZzkjUnuqqqLkrw9yTWttc8NM29LcqCqLmut7auquSRXJ5lvrT00zFyX5NNV9d7W2qFJ\n9wYAAAAAmJZ1fUZsVb06ydYknz12rLX2WJIHklw5HHptVgLw+MzBJEtjM1ckOXIswg7uzcoduJev\n584AAAAAAL2t95d1bc1KLD286vjh4VySbEny1BBoTzSzNcnXx0+21p5J8s2xGQAAAACAM8J6h1gA\nAAAAAFaZ+Bmxp3AoSWXlrtfxu2K3JHlobGZDVV206q7YLcO5YzOXjP/hqjo3ycvHZo5r9+7d2bRp\n0/OOLSwsZGFhYbJPAgAAAAAwZnFxMYuLi887dvTo0dN67bqG2NbaV6rqUJKdSb6UJMOXc12e5NZh\n7MEkTw8znxhmtifZluT+Yeb+JBdX1WvGnhO7MyuR94GT7bBnz57s2LFj3T4TAAAAAEBy/Bs+9+/f\nn/n5+VO+duIQW1UXJrk0K1E0Sb6/qn44yTdba3+d5OYk76+qLyd5JMmNSR5N8slk5cu7qupjST5Y\nVUeSPJ7kliT3tdb2DTMPV9XeJB+pqmuTbEjyoSSLrbWT3hELAAAAADBr1nJH7GuT/PesfClXS/Jr\nw/HfSvL21tpNVXVBktuSXJzk80le31p7auxv7E7yTJK7k5yf5J4k7171Pm9O8uEk9yZ5dpi9fg37\nAgAAAABM1cQhtrX2uZziS75aazckueEk57+d5Lrh50Qz30qya9L9AAAAAABmzUmDKgAAAAAAL5wQ\nCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRAL\nAAAAANCB4COcAAAgAElEQVSZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQ\nmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZ\nEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANCZEAsAAAAA0JkQ\nCwAAAADQmRALAAAAANCZEAsAAAAA0JkQCwAAAADQmRALAAAAANDZedNeAAAAYK2WlpYyGo2mvcZM\n27x5c7Zt2zbtNQDgJU+IBQAAzkhLS0vZvn0uy8tPTnuVmbZx4wU5ePCAGAsAUybEAgAAZ6TRaDRE\n2NuTzE17nRl1IMvLuzIajYRYAJgyIRYAADjDzSXZMe0lAABOypd1AQAAAAB0JsQCAAAAAHQmxAIA\nAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAA\nAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAA\nAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAA\ndCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdCbEAgAAAAB0JsQCAAAAAHQmxAIAAAAAdHbetBc4map6\nd5L3Jtma5ItJrmut/a/pbnWmW0yyMO0lOCu4llgPriPWg+uI9eJaYj24js5ES0tLGY1G017jee65\n55687nWvm/Yaz9m8eXO2bds27TWY0OLiYhYW/DuJF8Z1tH5mNsRW1b9O8mtJ3plkX5LdSfZW1Q+0\n1mbrPyHPKP6LIevFtcR6cB2xHlxHrBfXEuvBdXSmWVpayvbtc1lefnLaq3yHX/zFX5z2Cs/ZuPGC\nHDx4QIw9wwhorAfX0fqZ2RCblfB6W2vtt5Okqt6V5A1J3p7kpmkuBgAAwNlhNBoNEfb2JHPTXmfM\n7iR7pr3E4ECWl3dlNBoJsQAvwEyG2Kr6riTzSX752LHWWquqe5NcObXFAAAAOEvNJdkx7SXGbMps\n7QPACzWTITbJ5iTnJjm86vjhJNtf/HUAAAAATmwWnzV89OjR7N+/f9prPI/nDfNSNqshdi02JsmB\nAwemvcdz/v8uf5hkVvZ6NMkd015izFeSzNb/3WbNbF5HyWxdS66jU3EdnS7X0qnM5rXkOjrTzOZ1\nlMzWteQ6Oh2zeS3N0nWUuJZObTavo2S2riXX0al87Wtfy8/8zM/mqaeWp73Kd5ifn5/2Cs+zYcPG\n/N7v3Z1XvvKV015lZn3jG9+Yqaj/6KOP5o47ZuXfRys2b96cV7ziFdNe4zlj/37ceLK5aq3132ZC\nw6MJnkzyptba748d/80km1prP32c17w5s/OfUgAAAADAS8tbWmt3nujkTN4R21r7u6p6MMnOJL+f\nJFVVw++3nOBle5O8JckjSWbv/wUFAAAAAJyNNib5vqz0yROayTtik6Sqfi7JbyZ5V5J9WfnKyJ9N\n8oOttW9McTUAAAAAgInM5B2xSdJau6uqNif5QJItSf4sydUiLAAAAABwppnZO2IBAAAAAM4W50x7\nAQAAAACAs50QCwAAAADQmRALTKSqNk57BwAAAIAzjRB7Fqqqi8b/+WQ/09yTM0dVnVNVv1RVf/P/\n2rvzMMvK8lzj99MIUUSDkCAogoxRRBEEQcHD5BGjEgyiYjyCEWcIh0lEg5KAiQICinNAjRBwhEQc\ngoqgEDRwEJRBZB4DytTMIAjv+WOtsje7q7p2N121elXdv+uqi7Xftbv6sa+y9t7v+tb7AfcmWbOt\nH5Jkt47jqUeSnJ5k+XHqT01yeheZJEmSpJkkyfJJ3p7ko0lWaGsbJXlm19mk2e4JXQfQlJibZJWq\nugW4ExhvR7a09aWmNZn66kBgV2B/4JiB+sXAXsAXuwilXtoKWGac+hOBl01vFPVdkmcAWwArMXRx\nuaqO7iSUlnhJ5jL+e6P5VNUKUxxHM0R7kXEnYC3g8Kq6I8lGwO+q6n+6TSdpNknyAuA04C7g2TSf\n3+4AdgRWA3bpLJx6J8mTgS1pfnYe8znO99uLxkbszLQNzS9agK27DKIZYxfgnVX14ySfH6j/CnhO\nR5nUI+0bwjHrJVl54PFSwCsBP6hqZEneCnwBeAi4ncc21grwjaEmstfA8Yo0Fxt/APy8rb0E2A44\nZJpzqadseujx8OKQpsCRwL9W1f5J7hmofx84saNM6qEkG9L83CwLPJnmte3PgPuBW/D99iJJ1Ui/\n8yXNYkkeAJ5TVde1L+YbVNXVSdYDzq2q5TqOqCVckkeZ9yEj4zzlAeDvqupL05dKfZbkBuDzwEer\n6tGu86ifkpwEnFFVnx6q7wG8vKpe200y9UmS04DzB5oeY++TXgqcWFXP7jahlmRJdh14uMCLQ1V1\n1DTHUw8luQvYqKquGvqdtDpwWVW554dGkuQnwOXAu2kuNm4APAz8G/DJqjq5u3T95YrYGS7J3wL3\nVtU3h+qvB5atqq90k0w982ua28avG6rvBFww/XHUQ2vQNGCvBl4M3Dpw7iHglqp6pItg6q1lga/Z\nhNXjtB3w/nHqpwIfm+Ys6q9NgHeNU/8fYOVx6tIfDX4eay8OfXjo4tDRYxeHABuxGsXvgfH2g1mX\nx74HlybzQuBdVfVokkeAP2mb+vsDXwFsxC4CN+ua+T4A/G6c+i3AB6c5i/rrYODTSd5P83tjxyTH\nAH/fnpMWqKquq6prq2pOVZ3XPh77utkmrBbBF4HXdx1CvXc7sMM49R3ac9IobHpocdmO5kLQsFNp\nGrHSKE4BPpxk6fZxJVkNOBQ4qbtY6qGHgbFFD7fQjNuBZnXsszpJNAO4InbmWw24fpz6dcz7P5G0\nQFX17STbAx8G7qNpvp4PbF9VP+o0nHolyQeA31bVl4fqbwP+vKoO7SaZeugDwHeTvBK4iOaN4h9V\n1T6dpFLfHAQcm2Qr4Jy2tinN3Op3dBVKvTPW9HhD+9imhxbV2MWhI4bqXhzSwtgX+BZN4+xJwE9p\nVuf/nGYhjTSqC2ju+riC5ufo4CR/BryFZuNuLQJnxM5wSa4H9qiqU4bqOwCfqapVu0kmaTZKci3w\nxqo6Z6i+Kc1t5mt0Eky9k+RAmotCl9Hc+fGYzbqqaptOgql32t8/ewLPbUuXAkcP/56SJpLkT2ma\nHhsDTwFuYl7T41VVdV+H8dQj7UaUxwL/yTgXh6rqX7tJpj5KsgXwAmA5mjnWp3UcST2TZGPgKVV1\nRpKVgOOAl9I0Zt9WVb/qNGBP2Yid4ZIcCrwR+FvgzLa8JfAl4FtVtV9X2dQ/SZYBVmJorElVjbfq\nWppPkgeB51bVNUP1NYFfu3mARtXuMr23H0olLSlsemhx8OKQJM1sjiaY+T4EPBv4MfCHtjaH5kqG\nM2I1kiTr0DTvXzp8imYV2lLTHkp9dQOwOXDNUH1zmhVE0qh+D5zddQj1T5KnVtXdY8cLeu7Y86RR\nVNV/Af/VdQ71W9twfXPXOdQvSfYc9blVdfRUZpG0YK6InSWSrAtsADwAXFRV13UcST2S5GyaRv7H\ngJt57C3AeEuCRtXusLk/8D7g9La8LXAYcERVfbSrbOqXdt7wKlU18gcPCaDd9XeVqrolyaMMvaaN\nPY1mxIUXGjWSJNvSvJ6Nd+fQ2zoJpV5L8kRgmcGaF4c0kSTDixwmUlW15pSG0YyRZEWaUWBbM/7r\n2wpd5Oo7V8TOElV1OXB51znUWy8EXlRVv+k6iHrvcGBF4LPM+3DxIHCoTVgtpBcD2yR5DXAJ82/W\ntWMnqdQH2wB3tMdbdxlEM0OSg2g2ND2PcS5YS6NKsizNxek30LxfGubFIY3LfRY0RY4H1ga+yPx7\nMmgRuSJ2hkuyFPBWJr5C72YmmlSS/0czi9Hb7bRYJFmOZvbZA8AVVfX7jiOpZ5J8eUHnq+pvpyuL\npNktyc3A/lV1fNdZ1G9JPkNzgehDNA2Q3YFnAu8CDqiqEzqMJ2mWSXIPsIV3wC5eroid+T5J04j9\nHnAxXsHQonk/cFiSDwIXMf/KM2+T0sJaGVgBOLOqfp8k5ZVBLQQbrVpckiwP7Ma8jXEuAb5UVXd1\nl0o9swzws65DaEbYHtilqn7SXnA8q6quTHIdzdxYG7GaVJKTgP+uqsOH6vsDm1TV67tJph76DfCk\nrkPMNK6IneGS3EbzYv79rrOov9oZejB/I98Zeloo7Zyhb9Cs9ihgnaq6OsmXgLlVtW+nASXNKkk2\nBn5Aszr/3La8Cc2HjldU1fldZVN/JDkUuLeqDuk6i/otyb3AelV1fZIbgR2r6twka9Ds87FcxxHV\nA0luBbaqqkuG6s8HTquqp3eTTH2TZBOafWIOplnY54KsxcAVsTPfQ8CVXYdQ7zlDT4vLUTQv4KsB\nlw7Uvw4cCdiI1ciS7EQzR2815t/QZKNOQqlvjgJOAd5RVX8ASPIE4FjgE8D/6jCb+uOJwDuTvBy4\nkPk/qO7TSSr10dXAGsD1NCvR3kBzkWh74M4Oc6lflqPZaHnYw8BTpzmL+u1Omp+Z04fqoVlU44Ks\nRWAjduY7Avi/Sfbwtl8tqqr6adcZNGO8Atiuqm5MMli/Ali9m0jqoyR7Av8E/CuwA/BlYC2a1Yyf\n6S6ZemZjBpqwAFX1hySH0Wy8JI3iBcAv2+P1h875/lsL48vABsBPaVahfSfJHsDSgA19jeoi4I00\nqxgH7Qz8evrjqMdOoGng/w1u1rXY2Iid+bagWc34l0ncVVqLzBl6WkyeDNw/Tn0FwA27tDDeC7yz\nqr6a5K3AYe2Yi4Npfp6kUdxNs6L6N0P1ZwH3TH8c9VFVeeeQFouqOmrg+LQkzwU2Aq6sqgu7S6ae\nOQQ4OclazFvJuC3wJsD5sFoY6wMbVtVlXQeZSeZ0HUBT7k7g32muqt4G3DX0JU2qnaF3FbA3TYNj\nBZqr8lcl8fZfLYyzgF0GHleSOcD+wBndRFJPrca8zXEeAJ7SHh9P80FDGsXXgS8meWOSZ7VfO9OM\nJvhqx9nUQ0lWTbJq1zk0M1TVtVV1sk1YLYyq+g7wWmBt4LM0d8muCry8qv6jy2zqnfNoLk5rMXKz\nLkmTSnIWzazh8WborVlVztDTSJKsD/wYOB/YhmY24/NomvubV9VVHcZTjyS5GnhdVV2Q5DzgmKr6\nQpJXAF+rKlfFalJJlgEOB97NvDvFHgY+BxxQVa7U16TaC4oH0sw5H9tM6R6a5sc/VdWjE/1ZaViS\nbWkWP4zdhXYp8ImqOq27VJJmoySvB/6B5r3SRcx/h7UXiRaBjVhJk0ryAM0tCb8Zqq8HnFdVy3aT\nTH2U5E+BPWhmoC1H05T9TFXd3Gkw9UqSY4Ebquofk+xO8wbxbJqZnydX1W6dBlSvJFmWZsYwwFVV\nNd4IFWlcST5KM77pIJrfQ9CMB/sHmotEf99RNPVMkvcCnwS+Bfy8LW8G7ATsXVXOQJc0bZKMdyGx\naDfrqio361oENmJnoCTnA9tW1dwkF7CAgcruKq1RJPkd8Jaq+uFQfTvguKp6ejfJ1CftKuoP0swW\nvrHrPOq3dgXanIFV+jsDL6XZ+O0LVfVQl/m05EuyNM1YixdW1cVd51F/JbkJeHdVnTJU3wH4bFU9\ns5tk6pskNwIfq6pPD9V3Bz7oz5ImkuQOYN2qui3JXBbcA/CuIY0kyQI3U66q66Yry0ziZl0z07eZ\nt+mNM2C0OIzN0NuPeTMZN6dZgeYMPY2k3Yl8f+C4rrOo3wab+sCNAFX1NeBrXeZSv1TVw0muB1zN\nocdrBebf8I22ZsNDC2N54NRx6j8EDp3mLOqXvZm3yeReXQbRzGGjdWq4InaGa2/dPKGq3ARHi8wZ\nelpcknyb5rbxr3SdRf2W5F5g/aq6tuss6q8kuwE70tz1cUfXedRPSc4BzqmqPYfqnwI2qarNukmm\nvklyInBBVR0+VN8P2Liqdu4mmaTZKMmuwG1V9b328WHAO4FfA2+yUbtobMTOcG3TYzvgVpqViydU\n1a+6TaW+coaeHq8k76aZoXcC8AvgvsHzw7d1ShOxqa/FoR3htDawNHAd8/9OcoSTJpVkS+B7wPXM\nm+v5Epqdpl9VVWd1lU39kuRAYD+aWcODM2I3p9n87e6x51bV0dMeUL3RjnBaG1gJmDN4rqrO7CSU\neifJZcB7qur0JC+h2XR5L+A1wB+qasdOA/aUjdhZIMnTgNcDfwO8jOY2qROAE11JJGk6TTDwfYwD\n3zUym/paHJIctKDzVfWP05VF/ZbkGcDuwHPa0qU082Fv6i6V+ibJNSM+tapqzSkNo95KshlwIrA6\nzaZKg3y/rZEluR94TlVdn+RQYJWq2iXJ84CfVNWfdxyxl2zEzjJJVgXeBLwNWKeqnBOsSSV5MnAA\nsC3jX1X1jaCkaWVTX5IkaX5JfglcTnPB+maGNu6qqru6yKX+SXILsF1VXdDeRXRkVR2fZC3gV1W1\nXMcRe8km3CzS7g68MbAp8Gzgd50GUp8cC2wJHM84L+aSNN2qas7kz5Kk6ZFkeeDFjH/B2k0qNaEk\nRwIfqqr72uOJVFXtO1251GvrADtV1ZVdB1Hv/Qg4tm3Crgt8v60/D7i2q1B9ZyN2FkiyNc1YgtfR\nvDE8mWamx+ld5lKv/CXw6qo6u+sg6p8kewL/UlUPtscTct6ZpKmWZC4jXlCsKne816SSbE8zJmU5\nmhmegz9fBdiI1YJsSDOneux4Ii6E0KjOoZkPayNWj9fuwEdoZp6/rqpub+svotmDSIvA0QQzXJL/\nAVYATqV5g/gdd7jXwmrnVb2qqi7tOov6p/352biqbp9k9pnzzjSyBTT1C3iQ5sPHmVX1yPSlUh+0\nOwCPWRE4EPgBj91kaTvgkKo6aprjqYeSXE6zSuiDbmQqqWtJ/pqmeXY4cBHw8OD5qrqwi1ySGjZi\nZ7gk7wC+WVV3dp1F/ZXk/wA7ALv6AUPSkqBt6v85sCwwty0/DbgfuJfm9uCrga2r6oZOQmqJl+Qk\n4Iyq+vRQfQ/g5VX12m6SqU+S3Ac8v6qu7jqLJE0wR79oNu5yjr4WKMkLgIur6tH2eEI29ReNjVhJ\n42rnwAz+glib5sX7Wua/qrrR9CVT30wy72yQs880siRvAN4DvL2qrmprawNfAI4B/gv4GvDbqtqp\ns6BaoiW5F3jh8By99mfpl25CoVEkORn4WlV9o+sskpRk9QWdr6rrpiuL+qdt5K9cVbe0x2NN/DE2\n9R8nZ8RKmsh/dB1AM8bwvLONaF5/Lmsfrws8AvxiOkOp9/6ZZiOKq8YKVXVlkv2Ak6pqzST7Ayd1\nllB9cDvNHR9HDNV3aM9J40ryVwMPvwccnmQ9xr8N+JTpzCZpdrPRqsdpDeDWgWMtZjZiJY2rqv6x\n6wyaGapq67HjJPsA99CMuZjb1p4GfBk4q5uE6qlnMP77mCcAK7fHNwFPmbZE6qODaHYD3opmcxOA\nTYFXAu/oKpR6YbwL1h8ep1aAK4YkTaskawF7Ac9tS78GPjl4AVsaz1gjP8nSNO+TDqmqBe3zoYXk\naAJJI0uyMQMv5lXlCkYtlHYDwVdU1SVD9fWBH1bVM7pJpr5J8j2ahuvbq+qCtrYhzViC31bVa9qd\nzP+5qp7fYVQt4ZJsCuzJvNe3S4Gjq+qcif+UJElLpiTbAacAvwTObsubAxsA21fVj7rKpn5JchfN\nCCcbsYuRjVhJk0qyKvBVmhfwsY3flgd+BuxcVTd2lU39kuQemjeAPxmqbw2cUlWuXtRIkqwMHA9s\ny7zbgJ8A/Bh4S1X9rv25WrqqfthRTEmSpGnV7vXxg6o6YKj+MZoFEe7voZEk+QrNzPyjus4yk9iI\nlTSpJKfSNF53rarL2tpf0NxOfndVvbLLfOqPJMcBLwP2Bc5ty5sChwNnVdWuXWVTPyV5Ds2cYYDL\nxn5HSaNKModmQ8qVgDmD56rqzE5CqXeSbAvszWNXVn+iqk7rLpWk2SjJg8Dzq+qKofq6wIVV9cRu\nkqlvkhxI87ntxzT7edw3eL6qju4iV9/ZiJU0qSQPAC8du/13oP4imubZst0kU98kWRb4OPA2YOm2\n/Afgi8D7quq+if6sJC1uSTYDTgRW57E7AoO7AWtESd4LfBL4FvDztrwZsBOwd1V9pqtskmafJDcA\n+1TVN4fqbwA+XlWrdZNMfZNkQSMJqqrWnLYwM4ibdUkaxQ3Ma5oNWopmMxxpJFV1P/DeJO8D1mrL\nV9mA1aJox6b8FbAasMzguarap5NQ6pvPA+cBrwZuptlYSVpYH6RpuH56oHZ0krPbczZiJU2nY4B/\nSbImzSg5aEbMvR84srNU6p2qWmPsOEnamu+VHidXxEqaVJIdaD5I7F5V57W1jYFPAYdW1Xg7B0vS\nlGlvAz4FuBp4DnAx8GyaVY3nV9U23aVTXyS5D9igqq7sOov6K8m9NJuZXDlUXwe4oKqW6yaZpNmo\nbZjtRXNL+dhGuDfRjAI72kaaFkaS3WhG76zTlq6gGb1zbHep+s1GrKRJJZkLLEuziv4PbXnseHhO\nzArTm07SbJTkXOA/q+qgdhO4DYBbgBOAU6vqc50GVC8kOR04rKpO7TqL+ivJiTQN18OH6vsBG1fV\nzt0kkzTbtE3YZwG3VNWDSZ4CUFX3dJtMfZTkYGAfmgVYY6N3XgLsARxVVR/uKluf2YiVNKkkI2+g\nVFVfmcoskgTQNl9fWFVXtReLtqiqS5JsAHy7qp7dbUL1QZK/Bj5Cs0roIuDhwfNVdWEXudQv7WYm\n+wFn89gZsZsDRwB3jz3XjU0kTaV2A8oHgecNb9YlLawktwJ7VtVXh+pvAj5VVX/WTbJ+c0aspFFs\nC/wE+GlVXdVxFkmCZjX+2FzYm2lmDl/SPvZNoUZ1UvvfL41zrmhmoUuT2Q2YC6zXfo25sz03pgAb\nsZKmTFU9muQKYEWaW8ilx2Npmln6w36B/cRF5j+cpFH8HjgAOCbJTcBPmdeY9QVeUhf+G9gCuBT4\nPnBEkucDO7bnpFGsMflTpAUb3MxEkpYABwCHJ3lPVV3cdRj12vHAe2jGEwx6J804MC0CRxNIGlmS\nZwL/C9iy/VoXuLmqVu00mKRZp90JeLmqujDJk2lu/30pzeqPfarquk4DqleSrAesxrxV1tBsDPyd\njiJpCZfkSOBDVXVfezyRqqp9pyuXJA3t7/EQ8MDgeff00KiSfArYBbiBeQsdNqV5z3QcAyOdqmq4\nWasJuCJW0sKYC9ze/vdOms26bu00kaRZqaquHji+D3h3h3HUU21D/9+B59PcNp721NhKBUcTaCIb\n0tyyOXY8EVe9SJpue3UdQDPG+sD57fFa7X9va7/WH3ier3ULwRWxkiaV5J+BrWg+aFzKvNEEZ1bV\n3O6SSZqtklwNbFJVtw/VlwfOr6o1u0mmPknyHeAR4O3ANTSrPFagWWG9X1Wd1WE8SZIkzTA2YiVN\nKsmjNCtfjwJOrqrLO44kaZZrfy+tXFW3DNWfDlxfVX/STTL1SZLbgG3aERd3AS+uqsuSbAMcUVUL\nWukoSdISKckcYG1gJWDO4LmqOrOTUJIARxNIGs2GNDNhtwL2TfIQ81bF/sTGrKTpkuSvBh5u1zbP\nxiwFbAtcO62h1GdLAfe0x7cBzwAuA64D/qKrUJIkLaokmwEnAqszb+TOmMKxO1KnXBEraaEl2QDY\nG3gzMKeqfDGXNC3albDw2HmeYx6macLuW1Xfnc5c6qckZ9GsfP2PJCcCTwM+QrMb8Iuqav0FfgNJ\nkpYwSX4JXA4cBNzM0PzOqrprvD8naXq4IlbSpJKEZlXsVu3XFsBTgQtpVsZK0rSoqjkASa6hmRF7\nW8eR1G8fAZ7cHn8Y+C5wFs3GlG/sKpQkSY/DOsBOVXVl10Ekzc8VsZImlWQusBzwK+aNJDirqu7s\nMpckDUqyvL+X9HglWQGYW75JliT1UJLTgcOq6tSus0ian41YSZNK8mqaxuvdXWeRJIAk7weuraqv\nt4+/CbyO5ha8V1XVr7rMJ0mSNF2SvGDg4Vo0d3wcDlxEM7rpj6rqwmmMJmmIjVhJktQ77WiCN1fV\nz5L8b+AbNLeSvwFYrape0WlASZKkadLO0B9vfv6YsXPl/h5St5wRK0mS+mhl4Ib2+DXAN6rqh0mu\nBc7pLJUkSdL0W6PrAJJGM6frAJIkSYtgLvCs9viVwGntcQBXekiSpFmjqq4b+wL+BthmsNbWtwV2\n7japJBuxkiSpj04GTkzyI2BF4D/b+oaAuwRLkqTZ6l3Ar8epXwK8e5qzSBriaAJJktRHewPX0qyK\n3b+q7m3rqwCf7SqUJElSx1YGbhmnfivN+yRJHbIRK0mSeqeqHgY+Pk79qA7iSJIkLSluADYHrhmq\nbw7cNP1xJA2yEStJknopyTrA1sBKDI1bqqqDOwklSZLUrWOATyRZGji9rW0LHAYc0VkqSQCkqrrO\nIEmStFCSvAP4HHAb8Ftg8A1NVdVGnQSTJEnqUJIAHwP2BJZpyw8Ch3qhWuqejVhJktQ7Sa4DPltV\nh3adRZIkaUmTZDngucADwBVV9fuOI0nCRqwkSeqhJHcDL6yqq7vOIkmSJEmjmDP5UyRJkpY43wRe\n0XUISZIkSRqVm3VJkqQ+uhI4JMlmwEXAw4Mnq+roTlJJkiRJ0gQcTSBJknonyTULOF1Vtea0hZEk\nSZKkEdiIlSRJkiRJkqQp5mgCSZLUC0mOBD5UVfe1xxOpqtp3unJJkiRJ0ihsxEqSpL7YEFh64Hgi\n3u4jSZIkaYnjaAJJkiRJkiRJmmJzug4gSZIkSZIkSTOdjVhJkiRJkiRJmmI2YiVJkiRJkiRpitmI\nlSRJkiRJkqQpZiNWkiRJkiRJkqaYjVhJkiT1TpJrkuy5GL7Pk5KclOSuJI8keeriyCdJkiQNsxEr\nSd4kTlIAAAOoSURBVJKkGS/JrknmjnNqV2BzYDNglaq6e3qTSZIkabZ4QtcBJEmSpGkQoMaprwVc\nWlWXLvI3TuYAVVXjfX9JkiQJcEWsJEmSlkBJzkjyqfbrziS3Jjl4Ac/fO8mFSe5Ncn2SzyRZtj23\nJfAl4E+TPNqOIPhwkjOAfYEt2/rp7fOXT3JckjuS3Jfk+0nWHvi7dk0yN8n2SS4BHgSeleTLSf49\nyQeS/LZ9zoFJlkpyWJLbk9yQ5K1T+E8nSZKkJZSNWEmSJC2pdgEeBjYB9gT2SbLbBM99BPg7YL32\nz20NHNae+xmwF3A38HRgFeDjwF8Dx7Tnnw7s2D7/K8BGwGtoRhYE+H6SpQb+vmWB/YHdgOcBt7b1\nbdrv/zJgb+Bg4LvAHcCLgc8DX0jyjIX9x5AkSVK/OZpAkiRJS6obqmqf9viKJC+gaW5+cfiJVXX0\nwMPrk3wI+BywR1U9nOSu5ml168Dz7k9yP/DQWL1d+bo98JKqOqetvRm4AXgtcFL7Z58AvKeqLh77\nZkkAbq+qsU3ErkjyfuBJVfWx9jkfBQ4AtgC+sUj/KpIkSeolV8RKkiRpSfXfQ49/DqyTtuM5KMnL\nk5yW5MYkdwPHAysmeeJC/p3PpVmFe+5YoaruAC5rz415aLAJO+CSoce/Ay4a+F6PArcDKy1kLkmS\nJPWcjVhJkiT1WpLVge8Av6QZL7ARsHt7epkp+msfmKD+8NDjmqDm+3BJkqRZxjeAkiRJWlJtOvT4\nJcAVVVVD9RcBqar9qurcqroSeObQcx4ClmJyl9KMHfjj351kReAvmH+1qyRJkjQyG7GSJElaUq2W\n5ONJ1k3yJmAP4BPjPO9KYOkkeyZZI8lbgHcNPedaYLkk2yRZMcmTxvsL2ybuKcAxSTZPsgHwbzQz\nYk9ZTP+7JEmSNAvZiJUkSdKS6jjgSTTzWj8FHFVVx7bn/rgqtqouBPYB9qeZx/ommg2xGHjOz4HP\nA18HbgHet4C/963AL2jGHZwNPAq8uqoeWYT/DcOrdyeqSZIkaYbL/Hd2SZIkSd1KcgZwQVXt03UW\nSZIkaXFwRawkSZIkSZIkTTEbsZIkSVoSeduWJEmSZhRHE0iSJEmSJEnSFHNFrCRJkiRJkiRNMRux\nkiRJkiRJkjTFbMRKkiRJkiRJ0hSzEStJkiRJkiRJU8xGrCRJkiRJkiRNMRuxkiRJkiRJkjTFbMRK\nkiRJkiRJ0hSzEStJkiRJkiRJU8xGrCRJkiRJkiRNsf8PBo1lseMuAtsAAAAASUVORK5CYII=\n",
828 | "text/plain": [
829 | ""
830 | ]
831 | },
832 | "metadata": {},
833 | "output_type": "display_data"
834 | }
835 | ],
836 | "source": [
837 | "plt.figure(num=1, figsize=(17, 6)) #размер отрисованного графика\n",
838 | "plt.grid()\n",
839 | "platform_sort['platform_type'].plot(kind='bar')"
840 | ]
841 | },
842 | {
843 | "cell_type": "markdown",
844 | "metadata": {},
845 | "source": []
846 | }
847 | ],
848 | "metadata": {
849 | "anaconda-cloud": {},
850 | "kernelspec": {
851 | "display_name": "Python [conda root]",
852 | "language": "python",
853 | "name": "conda-root-py"
854 | },
855 | "language_info": {
856 | "codemirror_mode": {
857 | "name": "ipython",
858 | "version": 3
859 | },
860 | "file_extension": ".py",
861 | "mimetype": "text/x-python",
862 | "name": "python",
863 | "nbconvert_exporter": "python",
864 | "pygments_lexer": "ipython3",
865 | "version": "3.5.2"
866 | }
867 | },
868 | "nbformat": 4,
869 | "nbformat_minor": 1
870 | }
871 |
--------------------------------------------------------------------------------