Como usar comandos de SQL no Python? (Bônus: Comando QUERY do Pandas)

Se tem uma linguagem que eu admiro muito é o SQL. Prático, não é case-sensitive, não tem problema de tabulação e às vezes nem precisa de ponto e vírgula. Além disso, é muito intuitiva, parece que você está falando em inglês o que a máquina deve fazer. Por isso, sempre é uma boa se aproveitar dessa linguagem. Abaixo, temos exemplos de como utilizá-la no Python.

Primeiro, vamos criar um Dataframe qualquer para você ter uma referência:

import pandas as pd

df = pd.DataFrame(
[[555, 'Andre', 'Rua XPTO', np.nan],
[999, 'Maria', np.nan, 30],
[333, 'Tatiana', 'Avenia 999', 25]], 
columns=
['ID', 'Nome', 'Endereco', 'Idade'])

df

Agora, para você utilizar comandos em SQL, você só precisa carregar a biblioteca pandasql e usar o comando sqldf no seu Dataframe. Veja alguns exemplos:

Exemplo 1: seleciona a coluna ID do dataframe:

import pandasql as ps

query = """select ID from df"""
ps.sqldf(query, locals())

Exemplo 2: Cria uma coluna chamada idoso que atribui 1 para pessoas com mais de 30 anos

query = """select ID, case when Idade < 30 then 1 else 0 end as idoso      
            from df"""
ps.sqldf(query, locals())

Bem tranquilo, certo? Agora tente você!

Outra coisa aqui é que eu queria aproveitar o post e ir além, ensinar o comando query do Pandas. É um comando muito simples para executar queries com alguma expressão booleano (Verdadeiro ou Falso). Vejamos dois exemplos, mas dessa vez a descrição de cada exemplo vai estar comentada:

# seleciona quem tem menos de 30 anos
df.query('Idade < 30')

# Traz quem tem idade par
df.query('Idade % 2 == 0')

Outro exemplo, com outro Dataframe (retirado do próprio site do Pandas):

# Traz as linhas em que a coluna A é maior que a B
df = pd.DataFrame({'A': range(1, 6),
'B': range(10, 0, -2),
'C C': range(10, 5, -1)})

df.query('A > B')

Bacana, ein?

Bom, eu curti quando descobri ela rsrs…

Gostou do conteúdo? Se inscreva para receber as novidades! Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e compartilhar com seus amigos. De verdade, isso faz toda a diferença. Você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @EstatSite ou por alguma das redes que você encontra em Sobre o Estatsite / Contato.

Bons estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *