Всем привет! Меня зовут Татьяна Яковлева, я работаю системным аналитиком в Росбанке в Центре компетенций развития технологий некредитных продуктов. В этой статье я расскажу, как использовать ChatGPT для визуализации данных и построении дашбордов при помощи Python и фреймворка Dash; поделюсь готовыми промтами для создания дашборда за несколько минут.
Сразу оговорюсь: то, что не сто́ит ожидать от ChatGPT готового суперрешения. Нейросеть поможет сделать основной скелет, на который вы в дальнейшем будете навешивать дополнительный функционал — подключение к базе данных, оптимизация используемой памяти, настройка CI/CD и т. д. В качестве бонуса расскажу, как настроить свое окружение, какие библиотеки установить, чтобы ваш скрипт заработал, и поделюсь полезной литературой по фреймворку Dash, чтобы на полученный скелет повесить бантики.
Статья будет полезна как начинающим свой путь в анализе данных и их визуализации, так и опытным аналитикам, которые ищут возможность сократить время на реализацию того или иного решения и получить готовый шаблон промтов для своей работы.
Содержание
База – это наше всё
Прежде чем переходить к практической части, хотелось бы остановиться на теории и провести краткий экскурс по инструментам, которые будут использоваться для визуализации данных, и разъяснить основные термины для дальнейшей работы. А также в этом разделе я расскажу, как настроить свое окружение, чтобы у вас всё заработало. Это раздел для новичков; аналитики с опытом могут сразу перейти к части «Работа с ChatGPT».
Инструментарий
ChatGPT (от англ. generative pre-trained transformer, генеративный предварительно обученный трансформер) — чат-бот, способный вести диалог, искать ошибки в коде, сочинять стихи, писать сценарии и даже спорить. ChatGPT создавали на суперкомпьютере Azure AI на основе языковой модели OpenAI GPT-3.5. Чат-бот обучали с помощью массива текстов из интернета и системы обучения Reinforcement Learning from Human Feedback — с подкреплением на основе обратной связи с человеком.
Python — язык программирования, широко применяемый в интернет-приложениях, разработке ПО, науке о данных и машинном обучении (ML). Разработчики используют Python, потому что он эффективен, прост в изучении и работает на разных платформах. Программы на Python можно скачать бесплатно, они совместимы со всеми типами систем и повышают скорость разработки.
Dash — фреймворк для создания веб-приложений на Python. Он написан с использованием Flask, React.js, Plotly.js и является инструментом для интерактивной визуализации, которую можно интегрировать в веб-сайт. При этом для работы с Dash не требуется ни Flask, ни React, ни JavaScript. Достаточно знать Python, некоторые теги HTML и базовые графики Plotly, и с фреймворком можно реализовать разные проекты по визуализации данных в рамках Data Science.
Глоссарий
Промт — шаблонизированный запрос для ChatGPT, позволяющий получить максимально подходящее решение, которое можно будет использовать в своих целях.
Датасет — обработанный и структурированный массив данных. В нем у каждого объекта есть конкретные свойства: собственные признаки, связи с объектами или определенное место в выборке данных. Датасеты используют, чтобы строить на основе данных гипотезы, делать выводы или обучать нейросети.
Для примера возьмём набор фотографий. Сам по себе этот набор — просто массив данных, его невозможно использовать для аналитики или обучения нейросети. Чтобы он стал датасетом, в нем должно быть однозначно прописано, что конкретно изображено на фотографии и по каким признакам оно отличается от других фотографий.
Фреймворк (англ. framework — остов, каркас, структура) — готовая модель в IT, заготовка, шаблон для программной платформы, на основе которого можно дописать собственный код. Проще говоря, фреймворк — это промежуточный по гибкости и сложности вариант между написанием кода с нуля и использованием CMS. Если написание кода с нуля — это рисование любыми инструментами на чистом листе бумаги, а использование CMS — раскраска, то использование фреймворка — это рисование в блокноте в клеточку. С одной стороны, вы всё еще можете нарисовать что угодно и как угодно. С другой, у вас уже есть направляющие линии и границы блокнота, так что рисовать проще. Фреймворки «берут на себя» тысячи нюансов, например работу с файловой системой и базами данных, обработку ошибок, защиту программы.
Дашборд (англ. dashboard — «приборная панель», также иногда называется «панель индикаторов») — графический пользовательский интерфейс для демонстрации KPI определенного процесса, бизнес-цели, текущих процессов в компании. Простыми словами, дашборд — это форма визуализации данных. В дашборде информация может быть представлена в виде таблиц, инфографики, статистики, отчетов. Панель индикаторов можно изменять на лету, вводя новые анализируемые данные или подгружая их в реальном времени.
Интегрированная среда разработки (IDE) — приложение, которое помогает программистам эффективно разрабатывать программный код. Оно объединяет редактирование, создание, тестирование и упаковку программного обеспечения в простом интерфейсе и повышает тем самым производительность разработчиков. Чтобы упростить работу, писатели используют текстовые редакторы, бухгалтеры – электронные таблицы, а разработчики — IDE.
Настройка окружения для запуска дашборда
Надеюсь, что информация об основных инструментах и терминах была вам полезна и вы смогли чуть больше погрузиться в контекст. Теперь настроим окружение и установим все инструменты, которые потребуются в дальнейшем.
Сначала получите доступ к ChatGPT, так как именно он будет основным нашим помощником в реализации дашборда. Есть много статей и видео о том, как получить доступ к ChatGPT в России, вот этим руководством пользовалась я.
Установите Python на компьютер. Инструкцию найти легко. Можете выбрать любую доступную версию Python; я рекомендую использовать последнюю (на момент написания статьи это 3.11.3).
Установите интегрированную среду разработки (IDE). На мой взгляд, это самый простой подход к написанию кода, но если он вам не нравится, можете использовать любые удобные подходы и инструменты. Одна из наиболее востребованных IDE сегодня — это PyCharm, поэтому предлагаю установить именно ее. Далее мои примеры будут основаны на IDE PyCharm.
Поздравляю! Вы прекрасны и установили все, чтобы приступить к самому интересному. Перед практикой предлагаю поаплодировать и похвалить себя.
От теории к практике
Теперь мы можем смело создавать дашборд. Заходим в ChatGPT и открываем новый чат.
ChatGPT открыли. Что нам делать с датасетом, где его взять и в каком формате он должен быть? Предпочтительнее в качестве датасета использовать файлы с расширением .csv, но вы можете использовать и файлы с другими расширениями. Например .xls и .xlsx, если вы привыкли к Excel.
Сами датасеты можно найти, например, на kaggle.com. В таком случае вам нужно будет создать свой репозиторий в Github или в любой другой системе контроля версий. Или же можно использовать мой датасет, который я выбрала для обучения. Если вы выбрали мой датасет, можете пропустить следующий пункт.
Подготовка датасета
Один из самых простых вариантов скормить ChatGPT датасет — это создать свой репозиторий с датасетом и отдавать чату ссылку на него. На Github свет клином не сошелся, но далее в примерах как систему контроля версий я буду использовать именно его:
В пункте 1 вводим название нашего репозитория. В пункте 2 выбираем, будет ли репозиторий доступен всем или же только вам. Я выбрала public, чтобы вы тоже могли видеть данные, которые мы будем использовать.В пункте 3 выбираем, нужно ли нам будет создавать файл с описанием или инструкцией к нашему репозиторию. Нажимаем Create repository — репозиторий создан.
Теперь нам надо загрузить файл в репозиторий. Нажимаем Add file и выбираем Upload files. Далее перетаскиваем наш датасет или выбираем его из папки.
Заливаем наши изменения в ветку.
Поздравляю, вы только что добавили ваш датасет в репозиторий:
Теперь нам нужно получить ссылку на наш датасет, чтобы скармливать его ChatGPT. Открываем датасет, выбираем вкладку Code, нажимаем Raw и копируем из адресной строки:
Мы готовы приступать к работе.
Работа с ChatGPT
Отдаем ChatGPT свой первый промт. Далее я буду приводить примеры на своем датасете, вы же, соответственно, можете использовать свою ссылку. Уточнение с импортом библиотек нужно только, если вы используете последнюю версию пакета dash; в противном случае это уточнение не требуется:
Create the layout of a dashboard with Plotly express and Dash. Use the cv data located in this link https://raw.githubusercontent.com/tatyskya/dataset_for_ChatGPT/main/2018.csv Create a table with top 10 Country or region with the biggest Score column and show all the columns which are used in csv file Plotly Express does not have a built-in table function. To display a table in Dash, you can use the dash_table library instead my new version of dash ask me to change import import dash_core_components as dcc to from dash import dcc import dash_html_components as html from dash import html import dash_table to from dash import dash_table
Этот запрос выведет таблицу топ-10 стран с наибольшим индексом счастья.
Нажимаем на иконку самолетика, ждем ответа от ChatGPT, а затем — Copy code. Теперь скопированный код нужно перенести в наш проект в IDE, чтобы запустить приложение и посмотреть, что вышло. Если ранее вы работали с PyCharm, знаете как создавать, запускать проект и устанавливать библиотеки, можете пролистать бо́льшую часть следующего пункта.
Работа с IDE
Открываем IDE и нажимаем New Project:
Cоздаем новый проект и в поле Location вводим его название. Далее рекомендую создать новое виртуальное окружение и в качестве базового интерпретатора указать ту версию Python, которую вы установили ранее. Теперь нажмите на кнопку Create, и IDE создаст новый проект.
Перенесем скрипт из Chat GPT в наш проект. В начале IDE откроет нам файл main.py с базовым скриптом по умолчанию.
Очистим содержимое файла и вставим в него готовый скрипт, что получили от ChatGPT ранее. Теперь нам нужно запустить его выполнение. Для этого есть разные варианты; самый простой, на мой взгляд, — нажать кнопку с треугольником Play в правой верхней панели PyCharm.
Скорее всего, после запуска PyCharm выдал вам ошибку из-за того, что у вас не установлены необходимые библиотеки:
Исправить ситуацию просто: нужно установить необходимые библиотеки, которые импортируются в начале нашего скрипта.
Есть много способов сделать это. Возьмем наиболее простой, который позволит установить все зависимости и пакеты с теми версиями, которые я использую на момент написания статьи — через команду pip install -r requirements.txt.
Куда ее вводить? Быстрее всего сделать это через терминал PyCharm. Для начала скачайте файл requirements.txt и перенести этот файл в корневую папку проекта :
Убедитесь, что вы находитесь в директории вашего проекта, и можно устанавливать пакеты и зависимости. Переходим во вкладку Terminal и вводим команду pip install -r requirements.txt
Снова запустим проект через зеленую кнопку «Play». Ждем вывода ответа в консоль. В итоге должна будет сформироваться локальная ссылка на переход в наш дашборд:
Нажимаем на нее. Вуаля: наш первый элемент дашборда готов.
Мы получили таблицу со странами-лидерами по уровню счастья их граждан.
Добавляем гистограмму
Теперь мы готовы расширять содержимое нашего дашборда. Возвращаемся в ChatGPT и вводим новый промт, который позволит добавить гистограмму:
and now add to the layout the bar chart with country or region on the y axis and their Score value on the x-axis.
code must display information from the top 10 countries in both the table and the bar chart
Вставляем весь код ответа в наш проект, запускаем его и получаем еще один элемент дашборда:
Добавляем фильтр в виде выпадающего списка
Расширим функционал и добавим фильтр с выпадающим списком для выбора конкретных стран. Новый промт для ChatGPT:
and now add a dash component that filters the data according to the multiple value selected in the "Country or region" column.
Копируем код в проект, запускаем его и открываем дашборд:
Новый элемент дает выбрать интересующие страны.
Добавляем географическую карту
Отлично, теперь добавим еще один элемент — карту со странами, на которой уровни счастья указаны с помощью цветовой шкалы. Новый промт:
and make choropleth map with plotly express to the layout that displays the Country or region and their relevant happiness(Score column) as continuous colors on the map.
code must display information from the top 10 countries in both the table and the bar chart except choropleth map, it will use the df dataframe for the initial display, and if there are selected countries, it will update the map using the filtered_df dataframe.
the components must be arranged in such order: dropdown, choropleth map, bar chart, and table.
И мы получаем дашборд с картой, гистограммой и таблицей с показателями:
В заключение можем отключить режим дебага и изменить в app.run_server значение c debug=True на debug=False.
Дорогу осилит идущий
Итак, с помощью ChatGPT мы с вами реализовали полноценный и интерактивный дашборд. Но стоит помнить, что ChatGPT из раза в раз может фантазировать и добавлять какие-либо элементы, которые вы не просили. Или же в моменте забывать о вашей просьбе поменять импорт зависимостей для более новых версий пакетов. Как говорится, доверяй, но проверяй. Не стоит брать все ответы ChatGPT не глядя; это просто хороший инструмент, который поможет вам быстрее реализовать ту или иную задачу.
Для тех, кто загорелся сделать нечто подобное самостоятельно, оставляю ссылку на мой проект в GitHub. В нем вы найдете датасет, список необходимых пакетов и подробное описание параметров датасета в файле README. Также с удовольствием делюсь с вами своим телеграм-каналом с полезной литературой по фреймворку Dash и не только. Изучив документацию, вы сможете еще больше усовершенствовать свои дашборды. Всем спасибо и до новых встреч!
Комментарии (5)
loxux
08.06.2023 21:12Еще можно написать чтобы сгенерировал систетические данные, просто назвать колонки которые должны быть в датасете и их краткое описание, так по моему немного попроще в некоторых случаях, чем готовить для него что-то, и вопрос конфиденциальности данных тоже не последний (если есть такое что-то).
dragi330 Автор
08.06.2023 21:12Согласна с вами, в некоторых случаях генерация синтетических данных может быть более удобным и простым подходом, особенно если исходные данные содержат конфиденциальную информацию. Однако, важно отметить, что синтетические данные могут иметь отличия от реальных данных и не всегда могут полностью их заменить.
just_zhene4ka
Интересно, можно ли сразу дать установку ChatGPT не фантазировать?
misterslan
При работе через API модели чатбота можно прописать в инструкции, чтобы нейросеть не выдумывала неподтвержденные факты. Это может чуть улучшить проблему «галлюцинаций» ChatGPT и указать в настройках что бы ответы были менее творческими. Но насколько мне известно, в данный момент нет возможности на 100% решить эту проблему.
just_zhene4ka
Тоже наслышана, что не реализовать на 100%(