
Python, Pandas e SQL costituiscono la base per l'analisi dei dati, il machine learning e le pipeline ETL. La gestione di DataFrame di grandi dimensioni e l'esecuzione di query complesse sul database richiedono efficienza senza sacrificare la chiarezza del codice.
L'integrazione di query SQL nei flussi di lavoro di Pandas accelera le operazioni di filtraggio, aggregazione e join, mantenendo al contempo la flessibilità e la coerenza dei risultati tipiche di Python.
Questa guida illustra la configurazione di pandasql e i metodi SQL nativi di Pandas, presenta esempi di query DataFrame reali e delinea le migliori pratiche per ottimizzare i flussi di lavoro di analisi e la creazione di report.
Perché combinare Python Pandas e SQL?
Pandas è una libreria Python creata per la manipolazione e l'analisi dei dati. È lo strumento ideale per sezionare, analizzare e trasformare dati tabellari. SQL (Structured Query Language), d'altro canto, è lo standard di riferimento per l'interrogazione di database relazionali, come MySQL, PostgreSQL, SQLite e molti altri.

Ecco perché unire questi due elementi è una svolta:
The Bridge: integrazione tra PandasSQL e Native Pandas SQL
pandasql consente l'esecuzione di query SQL direttamente sui DataFrame di Pandas, eliminando la necessità di esportare i dati , predisporre un database separato o adottare API aggiuntive; gli utenti scrivono semplicemente istruzioni SQL, ricevono un DataFrame risultante e possono procedere senza interruzioni.
Installazione di PandaSQL
python
pip install pandasql
Ora sei pronto a combinare SQL e Pandas come un professionista.
Per iniziare: utilizzo di base
Facciamo un semplice esempio. Supponiamo di avere un DataFrame:
python
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)
Questo restituisce il DataFrame completo, proprio come df.head() Ma usando la sintassi SQL. Ora puoi filtrare, raggruppare e unire proprio come faresti in un database.
Analisi dei dati del mondo reale con Pandas e SQL
Passiamo ora a un set di dati pratico. Immagina di analizzare un set di dati sulle vendite di auto con colonne come brand, model, year, price, mileageE altro ancora.
Caricamento ed esplorazione dei dati
python
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())
Potrai visualizzare i nomi delle colonne, i tipi di dati e gli eventuali valori mancanti, elementi essenziali per un'analisi dei dati di qualità.
Esecuzione di query SQL su DataFrames
Le 10 auto più costose
python
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
""")
Prezzo medio per marca
python
q("""
SELECT brand, ROUND(AVG(price), 2) AS avg_price
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
""")
Auto prodotte dopo il 2015
python
q("""
SELECT *
FROM car_data
WHERE year > 2015
ORDER BY year DESC
""")
Totale auto per marca
python
q("""
SELECT brand, COUNT(*) as total_listed
FROM car_data
GROUP BY brand
ORDER BY total_listed DESC
LIMIT 5
""")
Raggruppamento per condizione
python
q("""
SELECT condition, ROUND(AVG(price), 2) AS avg_price, COUNT(*) as listings
FROM car_data
GROUP BY condition
ORDER BY avg_price DESC
""")
Chilometraggio medio e prezzo per marca
python
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
""")
Prezzo al miglio
python
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
""")
Visualizzazione dei dati per stato
Puoi anche utilizzare widget e Plotly per dashboard interattive:
python
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)
Questo rende la tua analisi interattiva e visivamente accattivante, perfetta per dashboard o presentazioni.
Oltre PandasSQL: operazioni SQL native di Pandas
Sebbene pandasql sia l'ideale per query rapide in stile SQL, Pandas supporta anche l'integrazione diretta di SQL per lavorare con database reali (come SQLite, PostgreSQL, MySQL):
Esempio: lettura e scrittura in SQL
python
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)
Questo approccio è perfetto per pipeline ETL, reporting e flussi di lavoro di dati di produzione.
Casi d'uso avanzati: ETL, apprendimento automatico e dashboard

Combinare SQL e Pandas non significa solo effettuare query, ma anche creare flussi di lavoro più intelligenti:
Pandasql vs. Pure Pandas: quando usare cosa?
| Caratteristica | pandasql (SQL) | Panda puri |
|---|---|---|
| Sintassi | SQL (familiare a molti) | Python (flessibile, potente) |
| leggibilità | Alto per query complesse | Può diventare prolisso |
| Cookie di prestazione | Più lento su set di dati molto grandi | Più veloce, ottimizzato per Python |
| Unioni/Raggruppamento | Molto intuitivo | Più codice, ma più opzioni |
| Integrazione: | Ottimo per analisi rapide | Ideale per flussi di lavoro di produzione |
Limitazioni e migliori pratiche
Considerazioni finali
L'uso integrato di Python Pandas e SQL rappresenta una competenza essenziale per gli analisti di dati, AI ingegneri e professionisti della ricerca. Questa metodologia allinea le query dei database relazionali con Il potente DataFrame di Pandas operazioni, migliorando sia l'efficienza che la chiarezza del codice. Sfruttando strumenti come PandaSQL e l'integrazione nativa di SQL in Pandas, i team possono eseguire analisi esplorative dei dati (EDA), solidi flussi di lavoro ETL e pipeline di apprendimento automatico all'interno di un ambiente coeso.
Statistiche da ricordare:
L'adozione di questo duplice approccio garantisce processi di analisi scalabili e gestibili e posiziona i team per un successo a lungo termine.
Vuoi mantenere il tuo AI e competenze specifiche in materia di dati?
Esplora altri tutorial su LLM, ingegneria rapida, RAG e AI flussi di lavoro degli agenti. Restate sintonizzati per ulteriori guide ed esempi pratici da parte di AI MOJO


