Если у Вас имеется опыт работы с SQL и Вы начали изучать Python, то этот небольшой обзор покажет аналогию некоторых операций SQL, которые можно реализовать в Python с помощью библиотеки Pandas.
Для начала импортируем библиотеки, которые пригодятся нам по ходу работы:
И для наглядности возьмём csv таблицу:
Далее мы записываем информацию из csv в DataFrame, который назовем test_csv, и убедимся, что полученная таблица будет иметь тоже имя и структуру, как и оригинальный csv:
Select
В SQL выборка необходимых нам столбцов происходит перечислением имен этих столбцов через запятую или с помощью * для выбора всех столбцов:
В Pandas выбор столбцов происходит с помощью перечисления необходимых названий столбцов в списке в нашем DataFrame:
А если же мы вызываем DataFrame без листа с названиями столбцов, то это отобразить все столбцы словно * в SQL.
В SQL мы сразу можем добавить столбец с нужными нам расчетами:
В Pandas для добавления столбца с расчетами мы воспользуемся DataFrame.assign():
WHERE
Фильтрация в SQL происходит при помощи WHERE:
DataFrame же может быть отфильтрован несколькими способами, но самыми частым из них является логическое сравнение:
Также, как и в SQL, в DataFrame мы можем использовать операторы И/ИЛИ:
Для проверки наличия в значении NULL, мы используем notna() и isna(). Для примера создадим DataFrame с NULL значениями.
И теперь для примера выберем все строки, где С2 IS NULL:
Для получения IS NOT NULL значений по столбцу С3 воспользуемся notna():
Union
UNION ALL в pandas осуществляется с помощью concat():
UNION из SQL похожа по функционалу на UNION ALL с отличием только в том, что UNION удаляет дубликаты строк.
В pandas мы можем использовать concat() в сочетании с drop_duplicates():
Update
С помощью update мы можем «обновить» значения:
Delete
В SQL удаление с условием выглядит так:
В pandas же мы выбираем какие столбцы остаются, а не удаляются как это сделано в SQL:
Задачи
Так как мы рассмотрели основные функции SQL и pandas на примерах, то попробуем решить пару задачек, с которыми мы можем столкнуться в повседневной работе.
Пусть у нас имеется csv таблица work:
ID – ID работника
FIO – ФИО работника
DEPT – Отдел
CHIED_ID – Непосредственный руководитель
salary – Заработная плата
Например, нам нужно вывести всех сотрудников, которые получают максимальную заработную плату в каждом из отделов.
В SQL это будет выглядит так:
Для python одним из вариантов будет:
Для данной задачи мы получим вот такой ответ:
В следующей задаче нам нужно вывести список ID отделов, где количество сотрудников не превышает трех человек.
В SQL это будет выглядит так:
Для python одним из вариантов будет:
И для данной задачи мы получим ответ: 0 и 2, т.к. только они и удовлетворяют условиям нашей задачи.
Мы рассмотрели основные функции SQL в рамках pandas на примерах, закрепили полученные знания на практике и теперь с уверенностью можем покорять новые горизонты!
ну и нахера этот велосипед нужен, sql они очередной придумал, возрадуемся