Как переписать SQL-запросы на Python с помощью Pandas

Как переписать SQL-запросы на Python с помощью Pandas

@Chatgpt

В этой статье мы расскажем, как с помощью Pandas добиться на Python такого же результата, как в SQL-запросах.

Получение такого же результата на Python, как и при SQL-запросе


Часто при работе над одним проектом нам приходится переключаться между SQL и Python. При этом некоторые из нас знакомы с управлением данными в SQL-запросах, но не на Python, что мешает нашей эффективности и производительности. На самом деле, используя Pandas, можно добиться на Python такого же результата, как в SQL-запросах.


Начало работы


Нужно установить пакет Pandas, если его нет.


conda install pandas


Мы будем использовать знаменитый Датасет Титаник от Kaggle.


После установки пакета и загрузки данных нам необходимо импортировать их в наше окружение Python.


image



Для хранения данных мы будем использовать DataFrame. Управлять этой структурой данных нам помогут различные функции Pandas.


SELECT, DISTINCT, COUNT, LIMIT


Начнем с простых SQL-запросов, которые мы часто используем.


image



titanic_df["age"].unique() вернет массив уникальных значений, поэтому нам придется использовать len(), чтобы посчитать их количество.


SELECT, WHERE, OR, AND, IN (SELECT с условиями)


После первой части вы узнали, как простыми способами исследовать DataFrame. Теперь попробуем сделать это с некоторыми условиями (это оператор WHERE в SQL).


image



Если мы хотим выбрать только определенные столбцы из DataFrame, мы можем сделать это с помощью дополнительной пары квадратных скобок.


Примечание: если вы выбираете несколько столбцов, вам нужно поместить массив ["name","age"] внутри квадратных скобок.


isin() работает точно так же, как IN в SQL-запросах. Чтобы использовать NOT IN, на Python нам нужно использовать отрицание (~).


GROUP BY, ORDER BY, COUNT


GROUP BY и ORDER BY также являются популярными SQL-операторами при исследовании данных. А теперь давайте попробуем использовать их на Python.


image



Если мы хотим отсортировать только один столбец COUNT, то можем просто передать булево значение в метод sort_values. Если мы собираемся сортировать несколько столбцов, то должны передать массив булевых значений в метод sort_values.


Метод sum() выдаст суммы для каждого из столбцов в DataFrame, которые могут быть численно агрегированы. Если нам нужен только определенный столбец, то нужно указать имя столбца, используя квадратные скобки.


MIN, MAX, MEAN, MEDIAN


И наконец, давайте попробуем некоторые стандартные статистические функции, которые важны при исследовании данных.


image



SQL не содержит операторов, возвращающих медианное значение, поэтому для получения медианного значения столбца с информацией о возрасте мы используем BigQuery APPROX_QUANTILES


В Pandas метод агрегации .agg() также поддерживает другие функции, например sum.


Теперь вы научились переписывать SQL-запросы на Python с помощью Pandas. Надеюсь, эта статья будет вам полезна.


Весь код можно найти в моем репозитории Github.

Report Page