Узнайте, как использовать и изменять таблицы SQL в лабораториях Jupyter.

Эта статья изначально была опубликована на Datacamp.

Блокноты Jupyter являются неотъемлемой частью любого рабочего процесса Data Science, настолько, что многие организации, такие как Netflix, считают их незаменимыми. Вычислительная среда на основе браузера в сочетании с воспроизводимым форматом документов сделала их фактическим выбором миллионов специалистов по данным и исследователей по всему миру. Jupyter может похвастаться большим международным сообществом почти из всех стран мира. Многие ядра были разработаны самим сообществом.

Jupyter Lab - это пользовательский интерфейс нового поколения для Project Jupyter, предлагающий все знакомые строительные блоки классического Jupyter Notebook, такие как блокнот, терминал, текстовый редактор, файловый браузер, расширенные выходные данные и т. Д. в отличие от классических ноутбуков, все эти функции представлены в гибком и мощном пользовательском интерфейсе. Основная идея Jupyter Lab - объединить все строительные блоки классической записной книжки, а также некоторые новые вещи под одной крышей.

Давайте сначала установим и запустим Jupyter Lab в наших системах.

Установка

JupyterLab можно установить с помощью conda, pip or pipenv.

#conda
conda install -c conda-forge jupyterlab
#pip
pip install jupyterlab
#pipenv
pipenv install jupyterlab
pipenv shell

Ознакомьтесь с официальной документацией по установке для получения более подробной информации.

Запуск JupyterLab

Вы можете запустить Jupyter, просто набрав на консоли следующее:

jupyter lab

JupyterLab автоматически откроется в браузере с интерфейсом, подобным приведенному ниже. Это означает, что все на месте, и все готово.

Основная рабочая область - это место, где происходит фактическая деятельность. Он состоит из записных книжек, документов, консолей, терминалов и т. Д. Просто дважды щелкните или перетащите файл в эту область, чтобы начать работу.

Интерфейс SQL для JupyterLab

В большинстве случаев данные, с которыми мы работаем, хранятся в файлах, называемых базами данных, и важная задача Data Scientist - иметь доступ к данным из баз данных, а затем анализировать их. Поэтому отличной идеей является создание бесшовного интерфейса между базами данных SQL и Jupyter Notebook / Lab, чтобы доступ к данным и управление ими стало проще и эффективнее. Этот интерфейс может быть реализован двумя способами:

1. Использование расширения IPython SQL Magic

Магические команды - это набор удобных функций в Jupyter Notebooks, предназначенных для решения некоторых распространенных проблем при стандартном анализе данных. Вы можете увидеть все доступные магии с помощью %lsmagic.

Расширение IPython SQL magic позволяет писать SQL-запросы непосредственно в ячейки кода, а также считывать результаты прямо в pandas DataFrames. Это работает как для традиционных записных книжек, так и для а также современные Jupyter Labs.

Установка модуля SQL в ноутбук

!pip install ipython-sql

Загрузка модуля SQL

%load_ext sql

Приведенная выше волшебная команда загружает расширение ipython-sql. Мы можем подключиться к любой базе данных, которая поддерживается SQLAlchemy. Здесь мы подключимся к базе данных SQLite. Введите следующую команду в ячейку кода:

%sql sqlite://

Если вы получаете результат как ‘Connected: @None',, это означает, что соединение установлено.

  • Создание базы данных

Наконец, мы создаем демонстрационную таблицу EMPLOYEES, чтобы продемонстрировать функцию.

%%sql 
CREATE TABLE EMPLOYEE(firstname varchar(50),lastname varchar(50));
INSERT INTO EMPLOYEE VALUES('Tom','Mitchell');
INSERT INTO EMPLOYEE VALUES('Jack','Ryan');

Теперь мы можем выполнять запросы к нашей базе данных

%sql SELECT * from EMPLOYEE;
----------------------------------
* sqlite://
Done.

Вышеупомянутый запрос выводит следующую таблицу

  • Работа с существующей базой данных

Мы также можем подключиться к существующей базе данных с помощью волшебной функции. В этой статье мы будем использовать базу данных SQL_SAFI (База данных по ирригации под руководством африканских фермеров (SAFI)). Проект SAFI - это исследовательский проект, посвященный методам ведения сельского хозяйства и орошения, используемым фермерами в Танзании и Мозамбике. Этот набор данных состоит из данных обследования домашних хозяйств и сельского хозяйства. Вы можете скачать его здесь.

#Specifying the path of the database
%sql sqlite:////Users/Parul/Desktop/SQL_SAFI.sqlite
-----------------------------------------------------------
'Connected: @/Users/Parul/Desktop/SQL_SAFI.sqlite'

Вышеупомянутый оператор открыл базу данных с именем SQL_SAFI.sqlite, которая находится по пути: Users/Parul/Desktop. Давайте выберем Crops таблицу и отобразим ее содержимое.

%sql select * from Crops

%sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;

Результат также можно преобразовать в фрейм данных pandas следующим образом:

result = %sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;
dataframe = result.DataFrame()

dataframe.info()

2. Расширение jupyterlab-sql

Прежде чем двигаться дальше, давайте поговорим немного о расширениях Jupyter в целом.

Расширения JupyterLab

Расширения - одна из самых полезных функций Jupyter Lab, которая может улучшить работу лаборатории Jupyter. Jupyter Lab - это, по сути, расширяемая среда с записными книжками, терминалом и редактором, которые представлены в виде расширения.

Расширения JupyterLab - это пакеты npm (стандартный формат пакета при разработке Javascript). Расширения позволяют настраивать и улучшать работу JupyterLab, предоставляя несколько полезных параметров, таких как новые темы, средства просмотра, сочетания клавиш, расширенные параметры настройки и многие другие. На GitHub есть множество расширений, разработанных сообществом. Вы можете выполнить поиск по теме GitHub jupyterlab-extension, чтобы найти расширения.

Чтобы установить расширения JupyterLab, вам необходимо установить Node.js, который можно установить с их веб-сайта или следующим образом.

conda install -c conda-forge nodejs
or
brew install node #for MacOS users

jupyterlab-sql extension - одно из таких полезных расширений, которое позволяет добавлять пользовательский интерфейс SQL в Jupyter Lab. У этого есть два основных преимущества:

  • Таблицы SQL можно просмотреть, просто наведя курсор и щелкнув мышью.
  • Таблицы также можно изменять и читать с помощью пользовательских запросов.

Подробнее об этом вы можете прочитать в официальном репозитории Github.

Установка

Чтобы установить jupyterlab-sql, выполните следующие команды в указанном порядке:

pip install jupyterlab_sql
jupyter serverextension enable jupyterlab_sql --py --sys-prefix
jupyter lab build

Затем вам нужно будет перезапустить все работающие серверы Jupyter.

Также важно отметить, что jupyterlab-sql работает только с Python 3.5 и выше.

Начиная

После перезапуска Jupyter Lab в панели запуска появляется новый значок SQL.

Это означает, что все установлено правильно, и вы готовы подключить свой экземпляр к базе данных.

Связь

Для подключения к базе данных вам необходимо иметь действующий URL-адрес базы данных. jupyterlab-sql был тщательно протестирован на базе данных SQLite, PostgreSQL и MySQL. Следуйте руководству по SQLAlchemy по URL-адресам. URL-адрес должен быть URL-адресом базы данных, например:

postgres://localhost:5432/postgres
postgres://username:password@localhost:5432/postgres
mysql://localhost/employees
sqlite://
sqlite:///myfile.db

Давайте подключимся к существующей базе данных SQL_SAFI, которую мы использовали ранее. Щелкните значок SQL в панели запуска и введите URL-адрес базы данных. Нажмите enter, чтобы подключиться.

Как только база данных будет подключена, вы сможете просмотреть все свои таблицы в базе данных.

Затем мы также можем написать пользовательские SQL-запросы для получения желаемых данных из таблиц.

Заключение

Совместное использование SQL и JupterLab выводит анализ данных на новый уровень. Интерфейс jupyter-sql позволяет очень легко подключить SQL Server к экосистеме Jupyter и извлечь данные непосредственно в нее, не покидая интерфейс Jupyter.