DuckDB SQL: 7 interogari care economisesc timp in locul Pandas

Analiza datelor a devenit pilonul central in majoritatea companiilor moderne. Pandas, biblioteca Python preferata de majoritatea analistilor si data scientistilor, ajuta la procesarea si analiza datelor tabulare. Cu toate acestea, cand volumurile de date cresc sau operatiile devin complexe, Pandas poate deveni lent si consumator de resurse. Recent a crescut enorm popularitatea unui nou motor de interogare SQL – DuckDB – capabil sa ruleze rapid interogari SQL direct pe fisiere CSV sau Parquet fara a fi nevoie de un server separat, asemanator cu ce face SQLite pentru baze de date relationale. DuckDB este, datorita performantelor impresionante si nivelului sau ridicat de compatibilitate SQL, o alternativa extraordinara la manipularea datelor cu Pandas.

De ce DuckDB poate fi alternativa ideala la Pandas?

DuckDB permite transformari rapide pe seturi mari de date folosind sintaxa SQL. In plus:

  • Procesare “in memory” extrem de rapida pentru fisiere mari.
  • Usor de folosit in Python: poate interactiona usor cu Pandas DataFrames.
  • Suporta fisiere CSV, Parquet, Arrow si multe altele fara conversii suplimentare.
  • Sincronizare usoara cu Pandas: poti folosi atat query-uri SQL cat si procesare Pandas in acelasi workflow.

Vom exemplifica in acest articol 7 interogari SQL uzuale care, cu DuckDB, pot inlocui zeci de randuri de cod Pandas, economisind ore intregi de procesare si transformare a datelor!

1. Citirea fisierelor CSV/Parquet in DuckDB cu SQL in loc de Pandas

Cum se citea cu Pandas:

import pandas as pd
df = pd.read_csv("vanzari.csv")

In DuckDB folosind SQL:

import duckdb
query = "SELECT * FROM 'vanzari.csv'"
df = duckdb.query(query).to_df()

Avantaje: DuckDB suporta fisiere CSV si Parquet nativ. Poti executa direct query-uri complexe fara a incarca totul in memorie si fara operatii suplimentare de parsare.

2. Selectare coloane si filtrare rapida direct din fisier (fara incarcarea intregului dataset)

query = "SELECT produs, suma_vanduta FROM 'vanzari.csv' WHERE suma_vanduta > 5000"
df = duckdb.query(query).to_df()

Beneficiu major: Pandas ar incarca tot fisierul si ar filtra dupa. DuckDB face filtrarea direct in timpul citirii, ceea ce accelereaza mult prelucrarea pentru fisiere mari.

3. Agregare si group by pe fisiere masive: sumarizeaza date in cateva secunde

Exemplu:

query = """
SELECT produs, SUM(suma_vanduta) as total_vanzari
FROM 'vanzari.csv'
GROUP BY produs
"""
df = duckdb.query(query).to_df()

Explicatie: In timp ce Pandas are nevoie de functii precum groupby si agg — des folosind multe randuri de cod, cu DuckDB faci totul dintr-o singura interogare SQL.

4. Join-uri directe intre fisiere de tip CSV/Parquet, fara incarcari suplimentare!

Exemplu:

query = """
SELECT v.produs, v.suma_vanduta, d.categorie
FROM 'vanzari.csv' v
LEFT JOIN 'detalii.csv' d ON v.produs = d.produs
"""
df = duckdb.query(query).to_df()

Forta SQL: DuckDB iti permite sa faci join-uri instantaneu intre fisiere, o operatiune mult mai complexa si consumatoare de resurse in Pandas, unde necesita converitrea fisierelor in DataFrame-uri si apoi aplicarea merge-urilor.

5. Crearea instantanee de coloane calculate si transformari avansate in DuckDB

In Pandas:

df["profit"] = df["venituri"] - df["costuri"]

In DuckDB folosind SQL:

query = """
SELECT *, venituri - costuri as profit
FROM 'finante.csv'
"""
df = duckdb.query(query).to_df()

Avantaj major: Adaugi oricate coloane derivate doresti, inclusiv functii logice, complexe, pe zeci de milioane de randuri, mult mai rapid decat in Pandas.

6. Eliminarea duplicatelor si sortarea avansata cu o singura instructiune SQL

query = """
SELECT DISTINCT produs, categorie
FROM 'vanzari.csv'
ORDER BY categorie DESC
"""
df = duckdb.query(query).to_df()

Comoditate si viteza crescuta: Procedura este instantanee chiar si pe fisiere mari, fara a apela multiple metode pandas ca drop_duplicates sau sort_values.

7. Subinterogari (subqueries) si Window Functions pentru analize avansate

query = """
SELECT *,
       RANK() OVER (PARTITION BY categorie ORDER BY suma_vanduta DESC) as rank_pe_categorie
FROM 'vanzari.csv'
"""
df = duckdb.query(query).to_df()

Power Tips: Operatii extrem de complexe cum ar fi rankarea, calculul de medii mobile, lead/lag le poti realiza usor cu DuckDB direct pe fisiere fara sa le incarci complet in memorie.

Cand ar trebui sa folosesti DuckDB in loc de Pandas?

 

  • Atunci cand ai fisiere CSV/Parquet foarte mari pe care Pandas nu reuseste sa le proceseze complet sau le incarca greu.
  • Cand vrei sa faci agregari, join-uri sau sortari complexe rapid si fara batai de cap.
  • In fluxuri de lucru de prototipare sau ETL rapide, DuckDB poate prelucra datele pe loc fara pasi intermediari.
  • Vrei sintaxa SQL familiara si nu ai nevoie sa implementezi algoritmi ML sau procesari complexe direct in Pandas.

Integrare DuckDB + Pandas: cea mai buna combinatie

Nu trebuie sa alegi ori DuckDB, ori Pandas: poti combina avantajele amandurora!

  • Poti prelucra datele rapid cu SQL in DuckDB si aduce rezultatul in Pandas DataFrame pentru vizualizari/analize ML.
  • Poti incarca fisiere mari si aplica filtrarile direct cu DuckDB, iar restul analizei (vizualizari, modele) cu Pandas/sklearn.

Bonus: Un exemplu complet workflow DuckDB + Pandas

import duckdb
import pandas as pd

# Interogare SQL rapida pe csv de 10 GB
query = """
SELECT produs, SUM(suma_vanduta) as total_vanzari
FROM 'vanzari.csv'
WHERE data >= '2024-01-01'
GROUP BY produs
"""
df_vanzari = duckdb.query(query).to_df()

# Analiza + vizualizare cu Pandas/Matplotlib
import matplotlib.pyplot as plt
df_vanzari.plot(kind='barh', x='produs', y='total_vanzari')
plt.xlabel("Vanzari totale")
plt.ylabel("Produs")
plt.title("Top vanzari dupa produs")
plt.show()

Un astfel de workflow economiseste timp enorm si permite analizarea de seturi mari de date chiar si pe un laptop obisnuit.

Concluzii: DuckDB schimba modul in care analizezi date

DuckDB SQL aduce simplitatea si viteza procesarii SQL la indemana oricarui analist sau data scientist care a folosit Pandas. Pentru taskurile unde Pandas devine lent si greu de scris/manipulat, DuckDB devine alegerea ideala.

7 motive sa alegi DuckDB pentru analiza de date:

  • Executi SQL instant pe fisiere CSV/Parquet, fara server sau setup complex.
  • Reduci codul repetitiv Pandas la o singura interogare SQL.
  • Poti lucra cu fisiere mari si diverse formate in acelasi mod.
  • Cost redus de memorie si timp de executie fata de Pandas.
  • Sintaxa SQL familiare – usor de adoptat pentru oricine a lucrat cu baze de date.
  • Integrare rapida cu Pandas pentru analiza/vizualizare avansata.
  • Optiuni extinse pentru operatii de tip window function, join, group by etc.

Invatare continua: DuckDB este in plina expansiune, iar ecosistemul Data Analytics evolueaza rapid. Recomandam tuturor sa experimenteze acest tool si sa integreze SQL in analiza de date moderna!

Te invitam sa explorezi domeniul Data Analytics!

Cu siguranta ai inteles care sunt noutatile din 2025 legate de data analysis, daca esti interesat sa aprofundezi cunostintele in domeniu, te invitam sa explorezi gama noastra de cursuri dedicate analizelor de date din categoria Data Analytics. Indiferent daca esti la inceput de drum sau doresti sa iti perfectionezi abilitatile, avem un curs potrivit pentru tine.