✅ Мал да удал, 26 минут ценной информации.

Небольшой проект на пайтон, который включает в себя:

  1. Работа с сетью
  2. Создание сообщений в Windows Notification
  3. Работа c csv
  4. Работа с pandas
  5. Работа с plotly

Таймкоды

00:00:09 Введение и цель проекта

  • Автор рассказывает о проекте по борьбе с интернет-провайдерами.
  • Планируется собирать и обрабатывать данные о состоянии сети.
  • Данные будут храниться в интерактивном графике для анализа.

00:01:01 Проблемы с подключением и их решение

  • Демонстрируется сбой подключения и его восстановление.
  • Python информирует о проблемах через Windows.
  • Данные записываются и обрабатываются для удобного анализа.

00:01:58 Модули и их использование

  • Описание стандартных модулей Python и их функций.
  • Использование модулей для работы с CSV и датой.
  • Необходимость установки модулей для работы с Windows и пинга.

00:02:56 Основная функция и цикл

  • Объявление переменных и констант.
  • Основная функция main и бесконечный цикл.
  • Проверка интернет-соединения и вывод информации.

00:04:14 Проверка интернет-соединения

  • Функция проверки интернета с пингом хоста.
  • Вывод информации о состоянии соединения.
  • Задержка в одну секунду для замера скорости.

00:05:35 Открытие и запись файла

  • Открытие файла для записи данных.
  • Использование кодировки UTF-8 для корректного отображения текста.
  • Запись данных в CSV-файл.

00:07:05 Работа с CSV-файлом

  • Использование модуля CSV для записи данных.
  • Запись данных в CSV-файл с разделителем запятая.
  • Инициализация функции для записи данных при запуске скрипта.

00:09:30 Функция проверки интернета

  • Функция check_internet с пингом хоста.
  • Использование модуля ping для проверки соединения.
  • Обработка результатов пинга и вывод информации.

00:11:20 Проверка связи

  • Запускаем проверку связи с сетевым контроллером.
  • Проверяем статус соединения: нон и фолс.
  • Возвращаем true, если есть ответ, и false, если нет.

00:12:31 Обработка изменений статуса

  • Проверяем текущее состояние связи.
  • Если статус изменился, выводим сообщение о проблеме с подключением.
  • Если статус восстановился, выводим сообщение о восстановлении подключения.

00:13:10 Использование функции натификейшн

  • Функция натификейшн проверяет текущий и новый статус соединения.
  • Если статус изменился, выводим сообщение о проблеме.
  • Если статус восстановился, выводим сообщение о восстановлении.

00:15:07 Запись данных в файл

  • Записываем текущее время и статус соединения в файл.
  • Используем метод write для записи данных.
  • Проверяем статус соединения и записываем данные в файл.

00:17:59 Работа с Pandas

  • Импортируем библиотеку Pandas для работы с табличными данными.
  • Читаем CSV-файл с данными, разделенными запятыми.
  • Фильтруем данные по статусу соединения.

00:20:54 Фильтрация и анализ данных

  • Фильтруем данные по статусу соединения, чтобы отобразить только те, где связь отсутствует.
  • Используем метод max для нахождения максимального значения.
  • Применяем методы для работы с табличными данными и отрисовки графиков.

00:22:59 Введение в библиотеку Plotly

  • Plotly позволяет создавать интерактивные графики.
  • В отличие от Matplotlib и Seaborn, Plotly поддерживает подсказки и интерактивность.
  • Plotly предлагает множество различных графиков для различных случаев.

00:23:59 Создание и настройка графика

  • Создание фигуры и добавление графика.
  • Plotly автоматически убирает ненужные данные для улучшения отображения.
  • Настройка осей и параметров графика, таких как маркеры и линии.

00:24:54 Заключение и советы

  • Plotly позволяет настраивать оси и отображать данные в удобном формате.
  • Работа с данными в Pandas и Plotly проста и эффективна.
  • Использование библиотек для проверки связи и интерактивных элементов.

Таймкоды сделпны в Нейросети YandexGPT https://300.ya.ru/v_inmUHQll

Расшифровка видео

0:09
Всем привет Сегодня Я подготовил для вас
0:11
очередной такой небольшой проекти под
0:13
кодовым названием как же меня задолбал
0:15
мой интернет-провайдер будем бороться
0:18
бороться Всеми силами и нещадно Но что
0:20
для этого надо надо собрать данные
0:22
данных будет много потому что сеть
0:24
обычно проверяется достаточно часто
0:26
каждую секунду а если мы проверяем в
0:28
течение дня надо же потом как-то быстро
0:30
обработать эти данные поэтому мы данные
0:32
соберём данные покажу как обрабатывать А
0:35
чтобы их обрабатывать надо правильно их
0:37
сохранять а потом вот так чтобы уже
0:39
Прийти уже к этому провайдеру так вот
0:40
кинуть на стол вот ска и сказать вот
0:43
смотри вот вот вот вот я и график даже
0:45
имею Вот смотри интерактивный график
0:47
когда что в какое время какие
0:49
миллисекунды отзывы были когда мы
0:51
пинговать вообще Связи нету потом взлёт
0:55
туды-сюды Ну и по факту Вы же хотите
0:57
быть уверены что как бы оно работает
0:59
пропа
1:00
з это дела Как видите вот сечас в данный
1:03
момент у меня идт сбой подключения и об
1:05
этом нам наш Python также информирует
1:08
через по Windows покажу как можно
1:11
обратиться к Windows и совершенно лёгким
1:15
способом вывести надпись сбой
1:17
подключения когда связь восстановится он
1:20
нам выдаст информацию связь
1:22
восстановлена вот этот момент я
1:25
пока вот види
1:27
под ВОВ отлично и данные вот все они у
1:31
нас красиво всё записываются и потом мы
1:33
можем их быстро и хорошо с ними удобно
1:35
работать Итак как Вы уже заметили код
1:39
совершенно небольшой а делает уйму всего
1:42
чего
1:44
полезного если это дело заинтересовало
1:47
хотите В итоге с этим кодом поиграться
1:49
ничего тайпа с экрана не надо на github
1:51
я это дело уже выложил оттуда скачайте
1:54
ссылку я добавлю в описании и играйте
1:56
как хотите Ну а теперь давайте перейдём
1:59
к самому кода тут наверное можно
2:01
разделить на две части Это стандартные
2:03
как бы модули которые присутствуют в
2:04
патине инсталлировать не надо это
2:06
отвечает нам этот модуль отвечает за то
2:08
чтобы мы как бы делали паузу выполнени
2:11
кода CSV Понятно из названия позволяет
2:15
нам работать с файлами типа CSV куда мы
2:17
будем записывать нашу информацию Ну а
2:19
daytime позволяет нам работать корректно
2:22
обрабатывать данные в формате даты вот в
2:25
принципе и всё что нам нужно будет до
2:27
Инста это вот эти два
2:30
и для чего нужен он как раз и позволяет
2:33
нам обратиться к Windows и вывести с той
2:36
информацие которую мы хотим Ну и чтобы
2:38
он показывал то время которое мы хотим 5
2:40
там секунд 10 секунд и так далее ну
2:43
модуль Ping 3 позволит нам делать Пинг
2:46
того Хоста который нам нужен и в итоге
2:48
проверять отзыв миллисекундах и знать
2:51
было соединение или не было соединения
2:52
которые в итоге будем использовать и зас
2:56
вфа это по
3:01
в большом регистре что грубо говоря
3:04
Константа далее название файла будет
3:07
сохраниться тоже локальной директории
3:08
откуда запущен скрипт Ну и хост который
3:11
я Пингу google.com вы как бы Можете
3:13
написать совершенно любой который вам
3:14
хочется хоть там это цифрового
3:16
представления не знаю там I адрес
3:19
провайдера и так далее этоже как бы ваше
3:20
личное
3:21
дело Всё у нас
3:24
организовано посно
3:30
происходит как бы всё и вызываются
3:32
остальные функции которые уже
3:33
непосредственно каждая из функций делает
3:35
какую-то свою часть работы Итак если
3:37
посмотрим в теле функции что у нас в
3:40
нашем ме это просто вывод на экран
3:42
начинаем проверку запуск функции не и
3:45
выставление какой-то переменной conn Я
3:47
потом покажу Для чего я использую Ну в
3:49
какое-то начальное значение А дальше как
3:51
видите у нас есть Infinity то есть
3:54
бесконечный цикл
3:55
который пока у нас не будет РН наш код я
4:00
не писал никакие там реакции на Ctrl Z
4:02
или чего-то ещё мне как бы было не надо
4:04
я просто работаю в жупи и прерываю это
4:07
как бы просто прерыванием просто
4:09
прерывая код чтобы остановилось Но если
4:11
как бы это вам как бы нужно будет Вы уже
4:12
можете реализовать Как вы хотите Итак То
4:14
есть пока TR А это нас всегда будет он
4:17
будет крутить Вот это всё вот внутри и
4:19
из которого Что понятно идёт функция
4:21
название проверка интернета куда мы
4:23
передам как нашу переменную значит
4:25
google.com который нам что-то возвращает
4:28
Потом посмотрим что как бы что логично
4:31
есть соединени нету и и я работаю также
4:35
ещё с функцией котора тоже логично мы
4:38
понимаем что она как бы у нас отвечает
4:40
за вывод нашего этого папка справа внизу
4:43
который нам куда мы передаём два
4:45
параметры и на основани этих параметров
4:47
он понимает надо вводиться или не надо
4:48
вводиться и всё дальше у нас если
4:50
коннекто есть мы пишем интернет в
4:53
порядке при выводим сюда в нашу консоль
4:57
иту опять же написана функция кото
5:00
передаём Time и статус да или нет И в
5:03
зависимости от этого он будет
5:05
формировать тот или тот текст вот в
5:07
принципе и всё и делаем Это задержкой
5:09
там одну секунду То есть раз в секунду
5:12
мы будем делать замер скорости Давайте
5:15
ещё раз запущу чтобы это было Вот мы
5:17
проверка интернет-соединения отклик
5:21
09 почему-то уже Интернета нету как бы
5:25
всё Опять вернусь отклик отклик отклик
5:27
отклик и который выскочил интернет
5:30
вернулся соединение восстановлено всё
5:33
вот так это дело
5:34
работает Итак inal Log что у нас с ий
5:38
логом То есть то что у нас происходит
5:41
один раз когда мы запускаем
5:43
скрипт посмотрим наш ий Log что мы тут
5:46
делаем тут мы просто открываем файл фай
5:49

это наша грубо говоре Константа где
5:51
название файла Точнее не название файла
5:53
а путь к файлу который включает его
5:55
название дальше у нас стоит режим в моём
5:58
случае я поставил dou То есть каждый раз
6:00
когда я запускаю этот скрипт У меня идёт
6:03
перезапись файла и данные как бы я не
6:05
добавляю просто перезаписывать Дик 8 на
6:09
всякий случай я поставил в моём случае
6:11
это не
6:14
надо вот он перезаписаться небольшое
6:16
количество
6:17
данных Давайте Пустим пока Пусть он это
6:20
побольше
6:22
запишет вот видите пошл писать Для чего
6:26
я обратил
6:27
внимание и почему мне не надо всё пишу
6:30
только по-английски О’КЕЙ в случае если
6:32
хорошо и й в случае если
6:35
плохо поэтому мне как бы и стандартная
6:37
кодировка которую поставить как бы
6:38
устраивать Если вдруг вы будете писать
6:40
по-русски и не выставите кодировку utf8
6:43
то он будет у вас тут байт кодами там
6:45
отрисовать там Back СШ X Там 0845 как бы
6:49
да это можно будет потом декодировать Но
6:51
это будет очень некрасивые такие длинные
6:52
надписи которые
6:54
Ну в общем нафиг вам не впливу указать
6:59
энкодинг 8 тогда если вы будете что-то
7:01
по-русски писать оно как бы отлично туда
7:03
дело и запишется итак тут мы работаем
7:06
смотрим
7:08
CSV для чего мы его используем чтобы э
7:11
не запаривать на над формированием CSV
7:14
файла у него уже логика прописана как
7:16
его нужно делать по умолчанию CSV файл у
7:18
нас это данные разделены точкой запятой
7:21
если мы посмотрим вот наша Вот первое
7:23
значение второе третье есть разделение
7:27
не точка разделение с точкой ко ой Кома
7:32
запятой и вот наш CSV модуль за нас всё
7:36
это дело делает то есть мы говорим что
7:38
мы будем писать вот в этот файл который
7:40
мы открыли вот этим делом мы открыли
7:44
Файлик получили на него указатель и
7:46
теперь говорим что CSV writ вот будет
7:48
работать с этим файлом всё файл есть он
7:51
понимает что мы сейчас до будем CSV
7:53
записывать то есть ко данные что
7:55
записывать достаточно простой метод в wr
7:58
Что в переводе на русский записать
8:00
строчку А что записать Какие данные мы
8:02
просто спискам
8:04
передаём статус а он уже понимает что
8:07
это как бы три элемента это как бы
8:10
список с тремя элементами он их туда и
8:12
запишет через запятую опять же мы можем
8:15
поменять дефолтный подход там не запятую
8:18
Точка запятой что-то ещё но как бы мне
8:19
не надо не хочу я вот люблю запятой
8:21
Поэтому и мы делаем по умолчанию всё
8:24
просто и как обычно всё это дело и
8:26
работает Всё значит инициализация
8:28
функция
8:30
кото он запускает в самом начале при
8:31
запуске скрипта Давайте дело остановим
8:33
она просто записывает открывает файл и
8:36
записывает
8:38
туда для чего мы это делаем практически
8:43
все программы которые работают с или
8:45
модули программы не
8:47
знаю как-то
8:49
Ну ну да скажем все механизмы которые
8:53
Поддержи по
8:58
у у молчанию
9:01
поддерживают что в первой строчке всегда
9:03
у нас идёт название колонок Да если мы
9:05
хотим это можем игнорировать иногда их
9:06
бывает никто не пишет но по факту это
9:09
очень удобно и Я рекомендую использовать
9:11
момент что в первой строчке Мы всегда
9:13
указываем название колонок и потом если
9:15
вдруг когда-то не знаю много времени
9:17
прошло и вы собирали записывали кучу
9:20
разных данных которые вы уже не помните
9:22
что это по названиям колонок Вы можете
9:24
понять там это вот это это это Ну
9:26
логично всё всё отлично и connected True
9:31
Позже покажу Зачем И тут что у нас самое
9:33
главное происходит функция Check
9:36
Internet куда мы передаём OST а Host в
9:39
моём случае это Google на всякий случай
9:41
вот он Host Google мы туда это дело
9:44
передаём и он возвращает нам два
9:46
параметра is connected respon
9:50
time если кто-то не понял я нажал Ctrl
9:54
на всякий случай Ctrl подвёл и тогда он
9:57
меня быстро перенёс на мою функцию чтобы
9:58
там не крутить да дела Итак Вот моя
10:01
функция которая получает OST Что она
10:03
делает Ping Host больше ничего Вот вот
10:06
Ping Host Ping Host это у нас как мы
10:11
помните мы импортную непосредственно из
10:13
модуля Ping 3 которую мы про
10:15
инсталлировать что там происходит на
10:17
всякий случай потому что там есть
10:19
несколько строчек кода Pink Host А что у
10:21
нас Pink Host не отработает H а потому
10:25
что его не передал Давайте
10:31
запустим
10:40
Конечно вот наш НСТ он нам возвращает
10:42
время отклика в
10:45
миллисекундах но если мы посмотрим на
10:48
код который тут происходит Я получаю а
10:52
потом у меня есть небо
11:01
функция P
11:03
возвращает ада
11:05
возвращает простой пример Давайте я вам
11:12
покажу давайте сделаем
11:20
цикл давайте сделаем
11:24
та то есть мы запустили
11:29
ну да ну да ну
11:32
да вывести я не вывел так запускаем
11:36
выводим вот пошли наши миллисекунды
11:38
сейчас я с
11:42
имитирующего сетевого контроллера и
11:46
видите в какой-то момент он видно когда
11:49
нет никакого отзыва от контроллера он
11:51
получает N а потом уже возвращается к
11:53
false поэтому я проверяю на два статуса
11:56
для меня N и false – это отсутствие
11:58
связи если мы это дело вернём
12:03
назад сейчас это дело всё произойдёт
12:05
назад Вот пошли миллисекунды там уже как
12:07
бы Данные
12:08
есть Поэтому вот таким вот простым
12:11
образом я проверяю елин та то что мы
12:13
сейчас только что получали вот я
12:14
показывал от Пинга то что мы получали
12:16
если он не fse и не я так указал не одно
12:20
из них то тогда мы возвращаем True то
12:23
есть в данном случае мы понимаем что
12:24
какие-то есть какая-то информация о
12:26
време отклика и возвращаю Как вы помните
12:29
возвращает два параметра первый говорит
12:32
о текущем состоянии связь есть или нету
12:34
И тут я
12:36
делаю то есть округе чтобы не длинно
12:38
число было покороче там до двух точек
12:41
после запятой Ну а соответственно как бы
12:42
если у нас он попал в то что мы видели
12:45
нету связи он возвращает миллисекунд
12:47
никаких нету поэтому я просто возвращаю
12:49
и соответственно Я говорю статус что у
12:51
него Связи нет
12:53
всё значит в этот момент мы уже в лупе
12:57
кото у нас каждую секун
12:59
мы
13:01
проверяем соединение и получаем если
13:04
есть да нет тогда у него будет и со
13:09
стату дальше Мне нужно понять В какой
13:12
момент выводить балон потому что
13:13
например я же не буду каждый раз
13:14
выводить балон Да когда связь есть
13:16
поэтому я написал такую небольшую
13:17
функцию
13:19
назвал вот наш И тут я
13:28
переда текущий статус и статус который
13:31
произошёл в данный момент и
13:32
соответственно я их проверяю если у меня
13:33
текущий был да и также текущий статус да
13:36
то есть Т как бы есть и был то я ничего
13:39
не делаю я вылетаю и сразу возвращаю как
13:41
бы статус назад а вот если они не
13:44
совпадают то есть произошло переключение
13:46
то есть было True и например статус стал
13:49
fse то есть перестала связь происходить
13:53
тогда в данном случае что у меня будет
13:55
отрабатывают этот El Точнее не это If
13:58
как раз
13:59
не совпадает и проверяет если статус это
14:03
значит не этот иту короткая запись
14:06
проверки на значит идм сюда то я делаю я
14:10
прис переменный СБО подключения и
14:13
проблемы с интернет соединением если уже
14:15
меняется в обратную сторону то есть у
14:16
меня было текущий статус и в итоге стал
14:19
то тогда у меня будет подключение Интер
14:23
восстанов
14:28
ВП потому что она запускается только в
14:30
том случае если мы попали в код
14:32
обработчика именно
14:34
If ситуации да или нет и тогда мы тогда
14:39
выводим этот notification notify и вот
14:41
как раз вот это notification это есть
14:43
Помните я говорил Play это у нас модуль
14:45
который отвечает за создание вот этого
14:48
вот попапа в виндоусе оттуда мы
14:50
импортируем фике используем совершенно
14:53
простое
14:54
notification и мы это передаём как
14:56
параметры title это тот tle который
14:59
выведется и сообщение которое выведется
15:00
Ну и Тай – Это то время которое она
15:02
будет висеть и показывать нам информацию
15:05
вот в принципе-то и всё соответственно
15:07
когда мы запускаем эту функцию я
15:10
изначально сделал connected True то есть
15:12
подразумевается как бы что связь как бы
15:14
хорошо всё есть но например если мы
15:15
запустили Связи нету он сразу нам
15:17
передаст True и Связи нету в данном
15:21
случае Он поймёт что было True Связи
15:24
нету значит сбой подключения проблема с
15:26
соединением и возвращает как бы назад
15:28
наш текущий статус который присутствует
15:31
и мы его как раз и меняем в наши
15:33
переменной То есть если у нас вдруг было
15:36
TR перебой сбой связи произошёл то мы в
15:40
итоге получим ЛС и она у нас будет уже
15:42
флс и будет ждать пока опять там не
15:43
станет Т чтобы отработала слойка вывести
15:46
уже сообщение с вот в принципе и всё и
15:50
дальше мы проверяем уже если и connected
15:52
то что мы получили да или нет Если у нас
15:54
и опять же короткая форма записи если мы
15:57
не указываем если is connected вот это
16:01
вот равно True это вот равноценно то
16:04
есть это короткая запись Когда мы ничего
16:07
не указываем это по умолчанию
16:09
подразумевается что проверка на True
16:11
составляющей В общем как бы если это
16:12
True то есть связь есть то мы да выводим
16:15
интернет в порядке отклик наш Time
16:18
который мы получили и запускаем функцию
16:21
Log stus куда мы пишем куда мы перем
16:23
параметр и время ресса если же интернета
16:25
соотвественно нет то передам
16:27
и посмотрим
16:30
нашу статус вот наш статус получили наш
16:34
статус Инста тут мы получаем текущее
16:38
время которому мы даём правильный формат
16:41
чтобы как вы помните чтобы у нас формат
16:43
был вот в таком
16:45
да год месяц дата и так далее В общем
16:50
получили записали в та здесь такая же
16:52
тема как у нас была до этого когда мы
16:54
открывали работали с файлом когда мы
16:56
открывали при инициализации тоже но тут
16:59
мы уже меняем режим на а то есть будем
17:01
добавлять не переписываем добавляем
17:03
поэтому у нас на начальном этапе уже
17:05
первая строчка была добавлена статус А
17:08
тут мы уже Делаем всё тоже самое создаём
17:12
опять же наш указатель что мы будем
17:13
писать и используем тот же метод где мы
17:17
передаём списком что мы будем записывать
17:19
И тут смотрите первый элемент у нас
17:22
будет та то есть мы получили это время
17:24
оно будет записано второе мы сделали вот
17:27
такую вот хитрый шажок мы написали
17:30
небольшое условие прямо здесь то есть
17:32
выяви Окей если статус если и статус и
17:36
опять же это короткая форма То есть если
17:38
и статус равно True значит Окей если
17:41
статус True Если нет то тогда как бы
17:43
Fail Ну и тут Мы записали respon Time
17:46
respon Time у нас или N то есть ничего
17:48
не будет
17:49
записано вот например вот он будет
17:51
просто N Да как бы нет ничего или то
17:54
время которое мы
17:56
получили вот и в принципе и всё
17:59
Итак это хорошо Это у нас работает Это
18:01
Мы записали это мы вывели это первая
18:04
часть которая позволяет нам данные
18:06
собрать второе что я хотел показать как
18:09
достаточно быстро работать если вы
18:10
никогда не работали с панс очень
18:12
рекомендую обратить внимание на эту
18:13
библиотеку опять же в поиске
18:16
рекомендованных библиотек которую вы
18:18
должны обязаны рекомендовано знать это
18:20
будет не знаю второе третье там
18:22
четвёртое место это пандус потому что
18:24
позволяет нам очень быстро и удобно
18:26
работать с данными в табличной форме
18:29
Итак импорт Панда с spd опять же если у
18:31
нас её нету то мы её
18:36
инсталирам как и всё
18:42
предыдущее
18:44
ПАММ как бы у меня опять же всё как бы у
18:47
меня всё это дело есть у вас Это займёт
18:49
немножко подольше времени если её не
18:50
было в итоге она у нас
18:53
поставлена что дальше тут вообще ВС
18:55
очень просто так как мы
18:58
корректно в CSV в стандартном дефолтном
19:01
варианте где у нас в первой строчке
19:04
записаны название колонок а потом
19:06
непосредственно сами данные которые
19:08
разделены запята как бы стандартный CSV
19:10
файл comm separat то есть
19:12
ээ CSV Кома separated vales то есть
19:15
данные разделены запятые запятыми в
19:18
переводе с английского и что тут есть у
19:20
pandas есть мы
19:27
импортировались вот везде рекомендуют Ну
19:30
не рекомендуют как бы так это делают И
19:32
все кто работает с панс они обычно если
19:34
Т ПД они сразу понимают А понятно панс
19:36
есть Ну вот поэтому мы Обращаемся к
19:38
нашему импортированного модулю pandas и
19:40
у него есть такой метод R CSV он уже
19:43
чётко заточен И как я сказал никакие там
19:46
есть параметры у него как бы Как видите
19:48
Их дофига Вот и диметр деметр то есть
19:50
диметр деметр в общем не знаю как
19:52
правильно по английски хидер там есть
19:54
или нету и так далее и так далее и
19:56
название колонок мы всё это можем
19:57
определять в момент чтения файла но так
19:59
как у нас уже всё в дефолтном
20:02
стандартном варианте у нас уже и есть и
20:05
разделение Как и надо через запятую и у
20:08
нас уже первая строчка э непосредственно
20:11
там записаны имена колонок то вообще нам
20:14
ничего не надо мы просто делаем PD read
20:16
CSV читаем CSV и вот сейчас в Con Data
20:19
если мы посмотрим наш Con Data
20:21
Connection Data я так назвал переменную
20:23
если мы посмотрим что внутри он уже по
20:26
умолчанию нам создал колонки где
20:29
название уже то что было Вот именно
20:31
непосредственно указано в нашей первой
20:33
строчке всё всё отлично И все эти данные
20:35
наши прочёл Ну и автоматически нам уже
20:37
как бы сделал индексацию нулевой первый
20:40
второй Трей четвёртый пятый всё есть всё
20:43
Шикарно а так как Ну может быть быстро
20:45
пробегу по панс для удобства работы мы
20:48
можем не хотим вводить Всё мы просто
20:50
делаем и вы то количество как бы записи
20:53
которые нам надо если мы хотим быстро
20:55
например отобразить только те где у нас
20:58
именно
21:00
Мы можем написать Вот тай
21:03
та конструкцию где мы указываем грубо
21:07
говоря фильтруем данные мы
21:09
Обращаемся опять же мы работаем с нашей
21:12
переменной куда мы вот таким вот образом
21:16
загоняем фильт где мы говорим
21:20
что или
21:28
то есть я могу приме resp Time я могу
21:31
так просто и обратиться через точку Да
21:33
respon Time и он мне выведет все наши
21:35
данные опять же это очень-очень так это
21:38
грубо потому что Пан достаточно большая
21:40
большой модуль и там за 5 секунд его не
21:43
объяснишь но как можно как я пытаюсь
21:45
просто объяснить что очень дом быстро и
21:47
просто вы можете работать с табличными
21:49
данными и вот вот вот вот вот вот вот
21:52
Итак я говорю что меня интересуют только
21:54
те данные где cona статус наш равен фей
21:58
всё написал такой фильтр и всё у мене
22:01
показало что вот Седьмая строчка восьмая
22:02
два шестая тридцатая как бы вот там у
22:04
нас фейлы хочу например когда Окей
22:07
было написал О’кей Да фильтры могут быть
22:10
различное сложности нас никто не
22:11
ограничивает по двум полям там больше
22:13
меньше и так далее Так что вот таким
22:15
образом Итак с данными более-менее
22:17
разобрались А ну да Давайте ещё мо можем
22:19
такой простой вариант например Мы хотим
22:20
пам-пам-пам
22:23
пам-пам например
22:25
ST как я говорил выводит например вот у
22:28
нас вот эти
22:29
данные а не стату хочу да Давайте
22:35
посмотрим
22:38
вот куча разных Например я хочу
22:40
посмотреть какой у нас был самый
22:42
максимальный То есть самый большой Да я
22:44
просто добавляю метод ма и он мне
22:46
показывает максимальный который Ну там
22:49
куча всяких таких удобных вещей для
22:51
работы с табличными Дан поэтому варено
22:55
обнимание
22:57
таже отрисовки графика Для этого нам
23:00
понадобится библиотека plotly опять же P
23:02
plotly как бы скорее всего у вас её не
23:04
будет почему я люблю plotly есть Mat
23:06
plot Le есть на его базе этот C Born они
23:11
все Да они неплохие они позволяют ещё за
23:13
меньшее количество строк генерить
23:15
графики но они не интерактивные Что
23:17
хорошо в плот У нас есть подсказки то
23:21
есть интерактивность мы когда уже гоняем
23:24
по точкам которые нам нарисовала давайте
23:26
сейчас отсу покажу всё что я хотел
23:27
сказать вот у нас график есть вот на наш
23:30
Пинг который произошёл Вот видите очень
23:33
Если вы хотите добавлять какие-то такие
23:35
интерактивные вещи увеличивать там
23:38
уменьшать возвращать там двигать это всё
23:40
то я вот очень рекомендую опять же
23:42
посмотреть на плот потому что работает
23:45
просто бомба и там различ куча различных
23:48
графиков вообще для разных случаев жизни
23:51
и Да тут мы чётко видим как бы нас связи
23:54
не было тут у нас вот пин Скачет как бы
23:56
ну не постоянно вот вот вот вот вот вот
23:59
такая вот у меня красивая связ да как
24:02
это
24:03
работает Тут я как бы оставил такие
24:05
небольшие пометок для вас то есть мы
24:08
создаём саму фигуру А на фигуре мы уже
24:11
вот фигура имеется создали фигуру Вот
24:14
такая логика а потом на ней мы создаём
24:16
уже график Вот это goter – это у нас как
24:18
раз вот график который вот этот точечный
24:20
и где мы говорим что по иксу у нас будет
24:23
данные которые мы
24:25
возьмём Как вы помните мы просто
24:28
передаём туда вот массив данных Да вот
24:31
вот это вот это вот это вот значит эти
24:33
данные о просто пойдёт для отрисовки
24:35
непосредственно вот и опять же видите
24:37
плот он достаточно умный Он убрал все
24:39
эти ненужные вещи как бы чтобы это не
24:41
лепить данные друг на друга потому что у
24:42
нас Как видите у нас и миллисекунды всё
24:44
это есть но это дело как бы всё убрано
24:46
по умолчанию как бы это так но если вы
24:48
конечно опять же та вот это тик формат
24:50
Да как бы я это убрал для
24:53
икса Если вы хотите там уже можно там и
24:57
в общем заниматься отображением
24:59
регулировать так как вам это н радо
25:01
Соответственно по игре мы отобрази
25:03
респонс ставим
25:05
миллисекунду где они наши вот они по
25:08
иреку вот это он сделал да мод мы ему
25:11
сказали э маркеры и линии ну и название
25:14
для графика значения миллисекунды не
25:15
знаю В принципе это можно опустить как
25:16
бы это не очень-то и нужно э и тут
25:19
непосредственно Ну плот ли построен
25:21
таким образом как бы Сначала мы создаём
25:23
фигуру потом мы добавляем туда
25:25
непосредственно какой-то тип графика С
25:27
его параметрами то есть в данном случае
25:29
как бы вот это ВС наша Тема а потом мы
25:31
уже можем получается как бы третьим
25:34
шагом настроить оси то есть мы делаем
25:37
татл указываем какой мы хотим тал для X
25:42
тал для и вот дата и значения в
25:44
миллисекундах Да значение в
25:45
миллисекундах и н например для икса то
25:49
что я уже до этого показал мы можем
25:51
показать формат отображение да да и
25:54
соотвественно мым показывать не
25:56
показывать и са и вот в принципе всё А
25:59
тут отображение графика всё Вот такой
26:02
вот у нас мини проекти надеюсь вам было
26:04
интересно познавательно Ну и небольшой
26:06
такой сари Как вы видите вроде бы
26:10
сложная задача и графики отрисовать и
26:13
данные записать и данные прочесть и
26:16
данные обработать вроде бы кажется это
26:18
сложно на самом деле нет работа с
26:19
данными панс проще некуда рисуем графики
26:23
плот не хотите плот Мали сибор и так
26:26
далее тоже достаточно всё примитив и
26:28
просто проверка связи и всякое такое
26:31
существует маленькая библиотека хотим
26:33
балончики которые выскакивают нас справа
26:35
снизу тоже библиотека опять же очень
26:37
лёгкое использование Надеюсь кому-то
26:39
было интересно познавательно Всем пока

Поделиться: