Фото с сайта Unsplash. Автор: Hitesh Choudhary
Получение такого же результата на Python, как и при SQL-запросе
Часто при работе над одним проектом нам приходится переключаться между SQL и Python. При этом некоторые из нас знакомы с управлением данными в SQL-запросах, но не на Python, что мешает нашей эффективности и производительности. На самом деле, используя Pandas, можно добиться на Python такого же результата, как в SQL-запросах.
Начало работы
Нужно установить пакет Pandas, если его нет.
conda install pandas
Мы будем использовать знаменитый Датасет Титаник от Kaggle.
После установки пакета и загрузки данных нам необходимо импортировать их в наше окружение Python.
Для хранения данных мы будем использовать DataFrame. Управлять этой структурой данных нам помогут различные функции Pandas.
SELECT, DISTINCT, COUNT, LIMIT
Начнем с простых SQL-запросов, которые мы часто используем.
titanic_df["age"].unique()
вернет массив уникальных значений, поэтому нам придется использовать len()
, чтобы посчитать их количество.SELECT, WHERE, OR, AND, IN (SELECT с условиями)
После первой части вы узнали, как простыми способами исследовать DataFrame. Теперь попробуем сделать это с некоторыми условиями (это оператор
WHERE
в SQL).Если мы хотим выбрать только определенные столбцы из DataFrame, мы можем сделать это с помощью дополнительной пары квадратных скобок.
Примечание: если вы выбираете несколько столбцов, вам нужно поместить массив
["name","age"]
внутри квадратных скобок.isin()
работает точно так же, как IN
в SQL-запросах. Чтобы использовать NOT IN
, на Python нам нужно использовать отрицание (~)
.GROUP BY, ORDER BY, COUNT
GROUP BY
и ORDER BY
также являются популярными SQL-операторами при исследовании данных. А теперь давайте попробуем использовать их на Python.Если мы хотим отсортировать только один столбец COUNT, то можем просто передать булево значение в метод
sort_values
. Если мы собираемся сортировать несколько столбцов, то должны передать массив булевых значений в метод sort_values
.Метод
sum()
выдаст суммы для каждого из столбцов в DataFrame, которые могут быть численно агрегированы. Если нам нужен только определенный столбец, то нужно указать имя столбца, используя квадратные скобки.MIN, MAX, MEAN, MEDIAN
И наконец, давайте попробуем некоторые стандартные статистические функции, которые важны при исследовании данных.
SQL не содержит операторов, возвращающих медианное значение, поэтому для получения медианного значения столбца с информацией о возрасте мы используем BigQuery
APPROX_QUANTILES
В Pandas метод агрегации
.agg()
также поддерживает другие функции, например sum
.Теперь вы научились переписывать SQL-запросы на Python с помощью Pandas. Надеюсь, эта статья будет вам полезна.
Весь код можно найти в моем репозитории Github.
Спасибо за внимание!
arrakisfremen
Что-то среднее между LINQ и языком запросов в MongoDB