
Python Pandas i SQL stanowią podstawę analizy danych, uczenia maszynowego i potoków ETL. Obsługa dużych ramek danych i uruchamianie złożonych zapytań do bazy danych wymaga wydajności bez poświęcania przejrzystości kodu.
Osadzanie zapytań SQL w przepływach pracy Pandas przyspiesza filtrowanie, agregację i łączenie, zachowując jednocześnie elastyczność i spójność wyników języka Python.
W tym przewodniku omówiono konfigurację Pandasql i natywne metody SQL biblioteki Pandas, zaprezentowano przykłady rzeczywistych zapytań DataFrame oraz najlepsze praktyki optymalizacji przepływów pracy analitycznej i raportowania.
Dlaczego warto połączyć Python Pandas i SQL?
Pandas to biblioteka Pythona stworzona do manipulacji i analizy danych. To idealne narzędzie do dzielenia, podziału i transformacji danych tabelarycznych. Z drugiej strony, SQL (Structured Query Language) to złoty standard w zapytaniach do relacyjnych baz danych – takich jak MySQL, PostgreSQL, SQLite i inne.

Oto dlaczego połączenie tych dwóch rozwiązań zmienia zasady gry:
Most: pandasql i natywna integracja Pandas SQL
pandasql umożliwia wykonywanie zapytań SQL bezpośrednio w Pandas DataFrames, eliminując potrzebę eksportowania danych , tworzenia oddzielnej bazy danych lub korzystania z dodatkowych interfejsów API; użytkownicy po prostu piszą polecenia SQL, otrzymują wynikową DataFrame i mogą kontynuować pracę bez żadnych przerw.
Instalowanie pandasqla
pyton
pip install pandasql
Teraz możesz łączyć SQL i Pandas jak profesjonalista.
Pierwsze kroki: podstawowe użytkowanie
Przeanalizujmy prosty przykład. Załóżmy, że masz DataFrame:
pyton
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)
Zwraca pełną ramkę danych, tak jak df.head() ale używając składni SQL. Teraz możesz filtrować, grupować i łączyć tak jak w bazie danych.
Analiza danych w świecie rzeczywistym z wykorzystaniem Pandas i SQL
Przejdźmy do praktycznego zestawu danych. Wyobraź sobie, że analizujesz zestaw danych sprzedaży samochodów z kolumnami takimi jak brand, model, year, price, mileage.
Ładowanie i eksploracja danych
pyton
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())
Zobaczysz nazwy kolumn, typy danych i wszelkie brakujące wartości, które są niezbędne do analizy danych wysokiej jakości.
Uruchamianie zapytań SQL w DataFrame
10 najdroższych samochodów
pyton
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
""")
Średnia cena według marki
pyton
q("""
SELECT brand, ROUND(AVG(price), 2) AS avg_price
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
""")
Samochody wyprodukowane po 2015 roku
pyton
q("""
SELECT *
FROM car_data
WHERE year > 2015
ORDER BY year DESC
""")
Całkowita liczba samochodów według marki
pyton
q("""
SELECT brand, COUNT(*) as total_listed
FROM car_data
GROUP BY brand
ORDER BY total_listed DESC
LIMIT 5
""")
Grupowanie według stanu
pyton
q("""
SELECT condition, ROUND(AVG(price), 2) AS avg_price, COUNT(*) as listings
FROM car_data
GROUP BY condition
ORDER BY avg_price DESC
""")
Średni przebieg i cena według marki
pyton
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
""")
Cena za milę
pyton
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
""")
Wizualizacja danych według stanu
Do tworzenia interaktywnych pulpitów nawigacyjnych można używać widżetów i Plotly:
pyton
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)
Dzięki temu Twoja analiza będzie interaktywna i atrakcyjna wizualnie — idealna do wyświetlania na pulpitach nawigacyjnych i w prezentacjach.
Poza pandasql: natywne operacje Pandas SQL
Podczas gdy pandasql doskonale nadaje się do szybkich zapytań w stylu SQL, Pandas obsługuje także bezpośrednią integrację SQL, umożliwiającą pracę z prawdziwymi bazami danych (takimi jak SQLite, PostgreSQL, MySQL):
Przykład: Odczyt i zapis do SQL
pyton
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)
To podejście doskonale sprawdza się w przypadku procesów ETL, raportowania i przepływów pracy obejmujących dane produkcyjne.
Zaawansowane przypadki użycia: ETL, uczenie maszynowe i pulpity nawigacyjne

Połączenie języka SQL i Pandas nie dotyczy tylko wykonywania zapytań, ale także tworzenia inteligentniejszych przepływów pracy:
Pandasql kontra Pure Pandas: kiedy używać którego?
| Cecha | pandasql (SQL) | Czyste pandy |
|---|---|---|
| Składnia | SQL (znany wielu) | Python (elastyczny, wydajny) |
| czytelność | Wysoka dla złożonych zapytań | Może stać się gadatliwy |
| Wydajność | Wolniejsze w przypadku bardzo dużych zestawów danych | Szybciej, zoptymalizowany dla Pythona |
| Łączenie/grupowanie | Bardzo intuicyjny | Więcej kodu, ale więcej opcji |
| Integracja | Świetne do szybkiej analizy | Najlepszy dla przepływów pracy produkcyjnej |
Ograniczenia i najlepsze praktyki
Uwagi końcowe
Zintegrowane wykorzystanie Python Pandas i SQL stanowi podstawową kompetencję analityków danych, AI inżynierów i profesjonalistów badawczych. Ta metodologia dostosowuje zapytania do relacyjnej bazy danych Potężny DataFrame firmy Pandas operacje, zwiększając zarówno wydajność, jak i przejrzystość kodu. Wykorzystując narzędzia takie jak pandasql wraz z natywną integracją SQL Pandas, zespoły mogą wykonywać eksploracyjną analizę danych (EDA), solidne przepływy pracy ETL i potoki uczenia maszynowego w spójnym środowisku.
Statystyki, o których warto pamiętać:
Przyjęcie tego dwutorowego podejścia gwarantuje skalowalne i łatwe w utrzymaniu procesy analityczne oraz przygotowuje zespoły do osiągania długoterminowych sukcesów.
Chcesz zachować swoje AI i umiejętności związane z danymi?
Poznaj więcej samouczków na temat LLM, inżynierii błyskawicznej, RAG i AI przepływy pracy agentów. Bądź na bieżąco, aby uzyskać więcej przewodników i praktycznych przykładów z AI MOJO


