Skip to content

Como Usar DuckDB e Pandas para Análise de Dados

Quando se trata de análise de dados, as ferramentas que você usa podem fazer toda a diferença. É aí que entram o DuckDB e o Pandas. Esses dois têm causado impacto no mundo da análise de dados, e por uma boa razão. Este artigo é tudo sobre te atualizar sobre essas ferramentas, suas forças, suas diferenças e como elas podem trabalhar juntas para potencializar suas tarefas de análise de dados.

O que é o DuckDB?

Vamos começar com o DuckDB. Agora, o DuckDB é um banco de dados analítico em memória escrito em C++. Ele foi projetado para suportar consultas SQL analíticas e tarefas intensivas em dados. Mas aqui está o pulo do gato: o DuckDB é rápido. E quero dizer, realmente rápido. Ele foi construído para ser um banco de dados veloz em memória, o que o torna uma ótima escolha para tarefas que precisam ser concluídas rapidamente.

Mas não é apenas sobre velocidade. O DuckDB também é sobre eficiência. Ele foi projetado para executar consultas complexas em conjuntos de dados grandes, o que é uma grande vantagem se você estiver lidando com uma tonelada de dados. E a melhor parte? Ele se integra perfeitamente com DataFrames do Pandas, permitindo que você execute essas consultas diretamente sobre eles. Não é necessário mover dados de um lugar para outro. Demais, não é?

O que é o Pandas?

Agora, vamos falar sobre o Pandas. Se você trabalha com análise de dados, provavelmente já encontrou o Pandas. É uma biblioteca flexível de análise de dados em Python, amada por muitos por sua simplicidade e poder. Ela pode lidar com uma ampla gama de formatos e tamanhos de dados, e na maioria das vezes, é bastante intuitiva de usar.

Mas aqui está onde fica interessante. Se você está familiarizado com SQL, sabe o quão poderoso pode ser quando se trata de lidar com transformações de dados complexas. E é aí que o DuckDB entra. Combinando a velocidade e eficiência do DuckDB com a flexibilidade do Pandas, você obtém uma ferramenta poderosa para análise de dados que é difícil de superar.

Quer criar visualizações de dados rapidamente a partir de um DataFrame do Pandas sem código?

PyGWalker é uma biblioteca Python para Análise de Dados Exploratória com Visualização. PyGWalker (opens in a new tab) pode simplificar seu fluxo de trabalho de análise de dados e visualização de dados no Jupyter Notebook, transformando seu DataFrame do pandas (e DataFrame do polars) em uma interface de usuário estilo Tableau para exploração visual.

PyGWalker for Data visualization (opens in a new tab)

Comparando o DuckDB e o Pandas

Ok, então falamos sobre o DuckDB e o Pandas separadamente. Mas como eles se comparam um ao outro? Vamos descobrir.

DuckDB vs. Pandas

Quando se trata de desempenho, o DuckDB tem uma vantagem clara. Ele é mais rápido e usa menos memória, o que é importante quando você está lidando com conjuntos de dados grandes. Mas isso não é tudo. O DuckDB também brilha quando se trata de capacidades de SQL. Ele permite que você execute consultas SQL em DataFrames do Pandas, o que pode ser uma mudança de jogo se você tem mais familiaridade com SQL do que com Python.

Por outro lado, o Pandas também é muito poderoso. Ele é incrivelmente flexível e capaz de lidar com uma ampla gama de formatos e tamanhos de dados. Além disso, é bastante intuitivo de usar, o que sempre é uma vantagem.

Mas aqui está a coisa: você não precisa escolher entre o DuckDB e o Pandas. Na verdade, eles funcionam melhor quando usados juntos. Combinando a velocidade e eficiência do DuckDB com a flexibilidade do Pandas, você obtém uma ferramenta poderosa para análise de dados que é difícil de superar.

Mas não acredite apenas no que eu digo. Vamos dar uma olhada em alguns exemplos.

Começando com o DuckDB e o Pandas

Antes de mergulharmos nos exemplos, vamos falar sobre como você pode começar com o DuckDB e o Pandas. Não se preocupe, é bem simples.

Guia de Instalação

Primeiro as primeiras coisas, você precisará instalar o DuckDB e o Pandas. Se você estiver usando Python, pode fazer isso usando o pip, o instalador de pacotes do Python. Veja como:

pip install duckdb pandas

É isso! Agora você tem o DuckDB e o Pandas instalados e prontos para uso.

Configurando o DuckDB com o Pandas

Depois de ter instalado o DuckDB e o Pandas, você pode começar a usá-los juntos. O primeiro passo é importar as bibliotecas em seu script Python ou notebook Jupyter. Veja como fazer:

import duckdb
import pandas as pd

Com essas linhas de código, você está informando ao Python que deseja usar as bibliotecas DuckDB e Pandas em seu script ou notebook.

Usando o DuckDB para Consultar DataFrames do Pandas

Agora que você configurou o DuckDB e o Pandas, vamos falar sobre como você pode usar o DuckDB para consultar DataFrames do Pandas. Aqui é onde a mágica acontece.

Consultas SQL Básicas em DataFrames

Com o DuckDB, você pode executar consultas SQL diretamente em DataFrames do Pandas. Isso significa que você pode usar o poder e a familiaridade do SQL para manipular e analisar seus dados. Aqui está um exemplo:

# Criando um DataFrame do Pandas
df = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
# Usando o DuckDB para executar uma consulta SQL no DataFrame
result = duckdb.query("SELECT A, AVG(D) FROM df GROUP BY A").to_df()

Neste exemplo, estamos criando um DataFrame do Pandas e, em seguida, usando o DuckDB para executar uma consulta SQL nele. A consulta está calculando a média da coluna 'D' para cada valor único na coluna 'A'. O resultado é outro DataFrame com os resultados da consulta.

Operações SQL Avançadas com o DuckDB

Mas o DuckDB não é apenas para consultas SQL básicas. Você também pode usá-lo para operações mais avançadas, como junções, funções de janela e até mesmo operações de aprendizado de máquina. Aqui está um exemplo de uma operação de junção:

# Crie dois DataFrames do Pandas
df1 = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['um', 'um', 'dois', 'três', 'dois', 'dois', 'um', 'três'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
df2 = pd.DataFrame({
   'A': ['foo', 'bar', 'baz', 'bat'],
   'E': ['maçã', 'laranja', 'banana', 'uva']
})
 
# Use o DuckDB para executar uma junção SQL nos DataFrames
result = duckdb.query("SELECT df1.A, df1.B, df2.E FROM df1 JOIN df2 ON df1.A = df2.A").to_df()

Nesse exemplo, estamos criando dois DataFrames do Pandas e depois usando o DuckDB para executar uma operação de junção SQL neles. O resultado é um novo DataFrame com os dados juntos.

Quer criar rapidamente visualizações de dados a partir de um dataframe do Python Pandas sem código?

PyGWalker é uma biblioteca em Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar sua análise de dados e fluxo de trabalho de visualização de dados no Jupyter Notebook, transformando seu dataframe pandas (e dataframe polars) em uma interface de usuário semelhante ao Tableau para exploração visual.

PyGWalker para visualização de dados (opens in a new tab)

Conclusão

E isso é apenas a ponta do iceberg. Com o DuckDB e o Pandas, você pode potencializar suas tarefas de análise de dados, tornando-as mais rápidas, eficientes e intuitivas. Então, por que não experimentar? Você pode descobrir que é a dupla dinâmica que você estava procurando.

Perguntas Frequentes

O DuckDB é mais rápido que o Pandas?

Sim, o DuckDB geralmente é mais rápido que o Pandas quando se trata de executar consultas SQL em grandes conjuntos de dados. Isso ocorre porque o DuckDB é um banco de dados analítico em memória projetado para velocidade e eficiência. No entanto, o desempenho real pode depender da tarefa específica e do tamanho do conjunto de dados.

Qual é a diferença entre DuckDB e Polars?

O DuckDB e o Polars são ferramentas usadas para análise de dados, mas têm algumas diferenças-chave. O DuckDB é um banco de dados analítico em memória que se destaca na execução de consultas SQL em grandes conjuntos de dados. Por outro lado, o Polars é uma biblioteca de DataFrame implementada em Rust e Python, projetada para ser rápida e flexível. Enquanto o DuckDB se concentra em fornecer recursos SQL, o Polars fornece uma API de DataFrame semelhante ao Pandas.

O DuckDB é multithreaded?

Sim, o DuckDB é multithreaded. Ele usa várias threads para executar consultas, o que pode levar a melhorias significativas no desempenho em sistemas multithread. Essa é uma das razões pelas quais o DuckDB pode ser mais rápido que outras ferramentas de análise de dados para determinadas tarefas.

O SQLite é mais rápido que o Pandas?

O SQLite e o Pandas têm finalidades diferentes e seu desempenho pode variar dependendo da tarefa. O SQLite é um motor de banco de dados otimizado para armazenamento e recuperação de dados, enquanto o Pandas é uma biblioteca de análise de dados que se destaca na manipulação e transformação de dados. Para tarefas que envolvem consultas SQL complexas, o SQLite pode ser mais rápido. No entanto, para tarefas que envolvem manipulação de dados complexa, o Pandas pode ser mais rápido. Quando usados em conjunto, eles podem fornecer uma poderosa ferramenta para análise de dados.