Как я создал приложение для работы с электронными таблицами на Python, чтобы упростить науку о данных
Рик Ламерс
Сегодня я работаю с открытым исходным кодом Grid studio, веб-приложением для работы с электронными таблицами с полной интеграцией языка программирования Python.
Около года назад я начал возиться с идеей создания IDE-технологии, которая мне всегда была нужна. Тщательно поработав с Microsoft Excel, R (Studio) и Python, я представлял, как некоторые их интегрированные версии облегчат мою жизнь.
Зачем?
Основная проблема, которую я решил решить с помощью Grid studio, - это разрозненный рабочий процесс, который я испытывал при переходе назад и вперед между несколькими инструментами, такими как R studio и Excel, при работе над проектами по науке о данных.
При экспорте этого CSV-файла за миллиардный раз, испытывая зависание окон приложений, когда число моих строк было слишком велико, или попытке сделать что-то прямое, такое как чтение в JSON-файле, я довольствовался этим. Существующие инструменты не предоставили мне среду и связанный с ней рабочий процесс, который позволил мне быть продуктивным.
Вот почему я решил создать что-то, что интегрировало бы мой рабочий процесс в единое, современное и простое в использовании приложение, подходящее для моих потребностей в науке о данных.
Как это работает?
Grid studio - это веб-приложение, которое очень похоже на обычную программу для работы с электронными таблицами, например, Google Sheets или Microsoft Excel. Однако его убийственной особенностью является глубокая интеграция языка Python.
Просмотр данных в табличной структуре и непосредственное управление ими очевидны практически для всех, кто пользовался компьютером.
Сочетание этого простого пользовательского интерфейса с мощью полноценного языка программирования, такого как Python, действительно выделяет его.
Сценарии на Python максимально просты: просто напишите несколько строк и выполните его напрямую.
Основная интеграция: чтение и запись на листах
В основе интеграции Python лежит интерфейс чтения и записи в вашей электронной таблице. Высокопроизводительное соединение между данными ваших листов и данными в вашем процессе Python.
Просто напишите на листе следующее:
sheet("A1:A3", [1, 2, 3])
И прочитайте с листа, как здесь:
my_matrix = sheet("A1:A3")
С помощью этой простой, но мощной функции вы можете читать и писать напрямую с листов и на них, чтобы автоматизировать ввод, извлечение, визуализацию и многое другое.
Написание пользовательских функций электронных таблиц
Хотя чтение и запись дают вам большую гибкость благодаря простому интерфейсу, иногда имеет смысл писать собственные функции, которые можно вызывать непосредственно в вашей электронной таблице.
Стандартные функции электронных таблиц, такие как AVERAGE, SUM, IF и т. д., уже доступны по умолчанию. Но что, если вам нужно больше?
Просто напишите нужную вам функцию!
def UPPERCASE(a):
return str(a).uppercase()
Теперь вызовите эту функцию в своей электронной таблице, как если бы вы работали с обычной функцией.
Использование экосистемы Python
Используя всю мощь экосистемы Python, вы получаете мгновенный доступ к современным инструментам обработки данных:
Это обеспечивает простой доступ к мощным моделям, таким как линейная регрессия и SVM для моделирования ваших данных.
Docker Runtime
Приложение работает в контейнере Docker, который дает вам легкий доступ к полностью упакованной и изолированной среде UNIX (даже в Windows!) Со всем готовым к работе: Python, scikit-learn, numpa, pandas, terminal, wget, zip и многие другие.
Это делает установку Grid studio такой же простой, как загрузка готового образа Docker и запуск одной команды.
Визуализация данных
Распространенной задачей в науке о данных является визуализация ваших данных. Учитывая ее важность, в Grid studio встроена поддержка расширенного построения графиков путем интеграции библиотеки Plotly.js и стандартного Python Matplotlib. Это предоставляет вам расширенные возможности построения в четком векторном формате.
Чтобы дать вам некоторые идеи о том, как использовать функции Grid studio, мы покажем, как они могут сочетаться с некоторыми конкретными примерами.
Пример: очистка сети
Этот пример демонстрирует всю мощь нахождения Python под рукой. То, что обычно требует некоторого перемещения между инструментами и файлами, теперь может быть интегрировано в один скрипт.
Выше вы видите, как короткий скрипт легко загружает новостные статьи из Hacker News прямо на лист.
Источник: scrape.py
Пример: оценка нормального распределения
В этом примере показан несколько глупый случай использования оценки нормального распределения с еще более высокой точностью, визуализированный с помощью Plotly.js. Здесь вы можете увидеть, как интерактивное построение графиков может дать вам представление о том, что происходит.
Источник: estimate_normal.py
Как я могу использовать это?
Локальная установка Grid studio очень проста.
(Убедитесь, что у вас установлен Docker)
- Клонируйте репозиторий с помощью этой команды:
git clone https://github.com/ricklamers/gridstudio
- Запустите скрипт bash (в Windows используйте, например, Git Bash) с помощью этой команды:
cd gridstudio && ./run.sh
- Перейдите на http://127.0.0.1:8080 в своем браузере.
Git Bash для Windows - установка Docker
Примечание: в Linux вам может потребоваться запустить следующее(для шага 2):
cd gridstudio && sudo ./run.sh
так как для запуска Docker требуется доступ sudo.
Релиз + Будущее развитие
Как уже упоминалось во введении, сегодня Grid Studio будет доступна бесплатно и с открытым исходным кодом через репозиторий GitHub.
Если вы сделали это здесь, вы можете сами попробовать и прислать любые отзывы и / или вклады в проект на GitHub.
У меня есть некоторые идеи о том, какие функциональные возможности или функции могут быть добавлены в будущем для улучшения Grid Studio. Тем не менее, поскольку проект теперь имеет открытый исходный код, я думаю, было бы разумно отслеживать их на GitHub и видеть, какие из них имеют самый высокий приоритет в соответствии со всеми участниками.
- Расширение количества «нативных» функций, доступных в электронной таблице (например, AVERAGE, SUM, IF и т. Д.), Возможно, даже достижение четности (и согласованности) с некоторыми существующими пакетами, такими как Calc или Excel Libre Office.
- Подсветка синтаксиса/всплывающие подсказки функций при наборе формул в электронной таблице
- Расширенная сортировка и фильтрация в электронной таблице
- Расширенные элементы управления для интерактивного черчения с Plotly.js
- Общий доступ к рабочим областям/коду более прост (т.е. экспортируется рабочее пространство)
- Формы сотрудничества в реальном времени (это может быть слишком сложно)
- Какой-то API /интерфейс для дополнений /расширений
- Обновление парсера формул до реального парсера на основе грамматики.
- Автозаполнение Python
- Оптимизация производительности
- Надежность интеграции основного Python /листа (без разрыва символа / последовательности)