
Python Pandas и SQL формируют основу для анализа данных, машинного обучения и конвейеров ETL. Обработка больших DataFrames и выполнение сложных запросов к базе данных требуют эффективности без ущерба для ясности кода.
Встраивание SQL-запросов в рабочие процессы Pandas ускоряет фильтрацию, агрегацию и объединение таблиц, сохраняя при этом гибкость Python и согласованность результатов.
В этом руководстве рассматривается настройка pandassql и встроенные методы SQL библиотеки Pandas, приводятся примеры реальных запросов к DataFrame, а также излагаются лучшие практики для оптимизации аналитических рабочих процессов и отчетности.
Зачем объединять Python Pandas и SQL?
Pandas — это библиотека Python, созданная для обработки и анализа данных. Она является основным инструментом для нарезки, анализа и преобразования табличных данных. SQL (Structured Query Language), с другой стороны, является золотым стандартом для запросов к реляционным базам данных — таким как MySQL, PostgreSQL, SQLite и многим другим.

Вот почему сочетание этих двух факторов может кардинально изменить ситуацию:
Мост: интеграция pandasql и собственного Pandas SQL
pandasql позволяет выполнять SQL-запросы непосредственно к объектам Pandas DataFrame, устраняя необходимость экспорта данных , создания отдельной базы данных или использования дополнительных API; пользователям достаточно просто написать SQL-запросы, получить результирующий DataFrame и продолжить работу без перерывов.
Установка пандаскабл
питон
pip install pandasql
Теперь вы готовы профессионально сочетать SQL и Pandas.
Начало работы: базовое использование
Давайте рассмотрим простой пример. Предположим, у вас есть DataFrame:
питон
import pandas as pd
import pandasql as psql
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
query = "SELECT * FROM df"
result = psql.sqldf(query, locals())
print(result)
Это возвращает полный DataFrame, как и df.head() но с использованием синтаксиса SQL. Теперь вы можете фильтровать, группировать и объединять так же, как в базе данных.
Анализ реальных данных с помощью Pandas и SQL
Давайте поднимемся на уровень с практическим набором данных. Представьте, что вы анализируете набор данных о продажах автомобилей со столбцами типа brand, model, year, price, mileageИ многое другое.
Загрузка и исследование данных
питон
import pandas as pd
import pandasql as ps
car_data = pd.read_csv("cars_datasets.csv")
print(car_data.head())
print(car_data.info())
print(car_data.isnull().sum())
Вы увидите названия столбцов, типы данных и любые пропущенные значения — это крайне важно для качественного анализа данных.
Выполнение SQL-запросов на DataFrames
Топ-10 самых дорогих автомобилей
питон
def q(query):
return ps.sqldf(query, {'car_data': car_data})
q("""
SELECT brand, model, year, price
FROM car_data
ORDER BY price DESC
LIMIT 10
""")
Средняя цена по бренду
питон
q("""
SELECT brand, ROUND(AVG(price), 2) AS avg_price
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
""")
Автомобили, выпущенные после 2015 года
питон
q("""
SELECT *
FROM car_data
WHERE year > 2015
ORDER BY year DESC
""")
Всего автомобилей по маркам
питон
q("""
SELECT brand, COUNT(*) as total_listed
FROM car_data
GROUP BY brand
ORDER BY total_listed DESC
LIMIT 5
""")
Группировка по состоянию
питон
q("""
SELECT condition, ROUND(AVG(price), 2) AS avg_price, COUNT(*) as listings
FROM car_data
GROUP BY condition
ORDER BY avg_price DESC
""")
Средний пробег и цена по марке
питон
q("""
SELECT brand,
ROUND(AVG(mileage), 2) AS avg_mileage,
ROUND(AVG(price), 2) AS avg_price,
COUNT(*) AS total_listings
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
LIMIT 10
""")
Цена за милю
питон
q("""
SELECT brand,
ROUND(AVG(price/mileage), 4) AS price_per_mile,
COUNT(*) AS total
FROM car_data
WHERE mileage > 0
GROUP BY brand
ORDER BY price_per_mile DESC
LIMIT 10
""")
Визуализация данных по штатам
Вы даже можете использовать виджеты и Plotly для создания интерактивных панелей мониторинга:
питон
import plotly.express as px
import ipywidgets as widgets
state_dropdown = widgets.Dropdown(
options=car_data['state'].unique().tolist(),
value=car_data['state'].unique()[0],
description='Select State:',
layout=widgets.Layout(width='50%')
)
def plot_avg_price_state(state_selected):
query = f"""
SELECT brand, AVG(price) AS avg_price
FROM car_data
WHERE state = '{state_selected}'
GROUP BY brand
ORDER BY avg_price DESC
"""
result = q(query)
fig = px.bar(result, x='brand', y='avg_price', color='brand',
title=f"Average Car Price in {state_selected}")
fig.show()
widgets.interact(plot_avg_price_state, state_selected=state_dropdown)
Это делает ваш анализ интерактивным и визуально привлекательным — идеально подходит для информационных панелей или презентаций.
Помимо pandasql: собственные операции Pandas SQL
Хотя pandasql отлично подходит для быстрых запросов в стиле SQL, Pandas также поддерживает прямую интеграцию SQL для работы с реальными базами данных (например, SQLite, PostgreSQL, MySQL):
Пример: чтение и запись в SQL
питон
import pandas as pd
import sqlite3
# Connect to SQLite database
conn = sqlite3.connect(":memory:")
# Create a table and insert data
conn.execute("CREATE TABLE Students (id INTEGER, Name TEXT, Marks REAL, Age INTEGER)")
conn.execute("INSERT INTO Students VALUES (1, 'Kiran', 80, 16), (2, 'Priya', 60, 14), (3, 'Naveen', 82, 15)")
# Read from SQL
df = pd.read_sql("SELECT * FROM Students", conn)
print(df)
# Write to SQL
df.to_sql("Students_Copy", conn, if_exists="replace", index=False)
Такой подход идеально подходит для ETL-конвейеров, отчетов и рабочих процессов обработки производственных данных.
Расширенные варианты использования: ETL, машинное обучение и панели мониторинга

Объединение SQL и Pandas — это не просто создание запросов, это создание более интеллектуальных рабочих процессов:
Pandasql против чистого Pandas: когда что использовать?
| Характеристика | pandasql (SQL) | Чистые панды |
|---|---|---|
| Синтаксис | SQL (знакомый многим) | Python (гибкий, мощный) |
| читабельность | Высокий для сложных запросов | Может быть многословным |
| Эффективности | Медленнее на очень больших наборах данных | Быстрее, оптимизировано для Python |
| Объединения/Группировки | Очень интуитивно понятный | Больше кода, но больше возможностей |
| интеграцию | Отлично подходит для быстрого анализа. | Лучше всего подходит для производственных рабочих процессов |
Ограничения и лучшие практики
Заключение
Интегрированное использование Python Pandas и SQL представляет собой важную компетенцию для аналитиков данных. AI инженеры и специалисты по исследованиям. Эта методология согласует запросы к реляционной базе данных с Мощный DataFrame от Pandas операции, повышая как эффективность, так и ясность кода. Используя такие инструменты, как pandasql, наряду с собственной интеграцией SQL Pandas, команды могут выполнять исследовательский анализ данных (EDA), надежные рабочие процессы ETL и конвейеры машинного обучения в единой среде.
Статистика, которую следует запомнить:
Применение этого двойного подхода обеспечивает масштабируемые, поддерживаемые аналитические процессы и настраивает команды на долгосрочный успех.
Хотите сохранить свой AI и навыки работы с данными отточены?
Изучите больше учебных пособий по LLM, оперативной инженерии, RAG и AI рабочие процессы агента. Оставайтесь с нами для получения дополнительных руководств и практических примеров от AI MOJO


