Migrando do SQL para o Pandas

Eu acho a documentação do Pandas sensacional e tem um item que ajudou muito em converter meu raciocínio forjado no SQL para os objetos do Pandas.

Estou falando da página “Comparison with other tools”, que além do SQL mostra exemplos de R, SAS e Stata de forma simples e direta.

Vou mostrar alguns exemplos, mas recomendo a leitura diretamente na documentação para uma visão mais abrangente.

Select

Com certeza, a primeira palavra que digitamos quando começamos no SQL. Com este comando de DML, buscamos selecionar informações da base de dados. Podemos informar do SGDB quais as colunas a serem retornadas ou trazer todas usando o popular select * from table. No exemplo abaixo, buscamos algumas colunas da tabela tips, limitando a 5 linhas de retorno:

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

No Pandas o mesmo resultado é obtido passa uma lista de nomes de colunas para nosso DataFrame:

In [6]: tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Out[6]: 
   total_bill   tip smoker    time
0       16.99  1.01     No  Dinner
1       10.34  1.66     No  Dinner
2       21.01  3.50     No  Dinner
3       23.68  3.31     No  Dinner
4       24.59  3.61     No  Dinner

Where

As vezes esquecido nos updates e deletes (brincadeira!), a cláusula WHERE no SQL especifica que uma instrução deve afetar apenas as linhas que atendem aos critérios especificados. No exemplo abaixo, queremos ver todas as linhas da tabela tips onde o time for igual a dinner.

SELECT *
FROM tips
WHERE time = 'Dinner'
LIMIT 5;

No Pandas, o DataFrame pode ser filtrado de várias maneiras. A mais intuitiva é usando a indexação booleana, que não vem ao caso agora. Vamos ao código:

In [8]: tips[tips['time'] == 'Dinner'].head(5)
Out[8]: 
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

Esse post tá ficando maior do que eu imaginei. Vou quebra-lo em algumas outras partes para não cansar 😁

Em seguida, vou trazer exemplos de GROUP BY, JOIN, UNION, funções de agregação, UPDATE e DELETE.

Até breve!