SQL vs Pandas - Operações Básicas

SQL vs Pandas - Operações Básicas

Neste artigo vamos fazer uma comparação entre os comandos básicos de um banco de dados relacional SQL e os mesmos comandos do Pandas.

Pandas é uma biblioteca Open Source da linguagem de programação Python. Ela possui uma grande quantidade de funções fáceis de usar e estruturas de dados rápidas e flexíveis.

No SQL usamos consultas para acessar dados. No Pandas utilizamos para o mesmo fim os chamados dataframes.

Este artigo considera que você já possui um conhecimento básico de SQL e está dando os seus primeiros passos na utilizadação do Pandas.

O que você vai aprender neste artigo?

 

* Ver a descrição dos campos de sua estrutura de dados.

* Listar os cinco primeiros registros.

* Selecionar as colunas que deseja retornar

* Ordenar resultados

* Retornando registros que atendam a uma certa condição

* Valores únicos

* Contando valores únicos.

* Agrupamento de resultados.

* Funções de agregação

 

Vamos começar!

 

Ver a descrição dos campos de sua estrutura de dados.

 

No SQL você pode utilizar o comando DESC.

 

DESC <<nome da tabela>>

No Pandas você pode usar o método describe().

dataset.describe()

 

Listar os cinco primeiros registros.

 

No SQL, dependendo da versão, você pode listar os cinco primeiros registros da seguinte forma:

 

MySQL

SELECT * from minha_tabela LIMIT 5;

SQL Server

SELECT TOP 5 * from minha_tabela;

 

No Pandas você pode utilizar o método head(), ele serve para fazer o preview dos dados do dataset.

 

dataset.head()

 

Por padrão head retorna os cinco primeiros registros, mas ele aceita receber um parâmetro, onde você pode informar quantos registros deseja retornar

 

dataset.head(10)

 

Selecionar as colunas que deseja retornar

 

No SQL o caractere coringa * retorna todos os registros da tabela, mas se este não é o nosso objetivo, podemos informar os campos que queremos separados por vírgula

 

SELECT campo1, campo2 FROM minha_tabela

 

No Pandas, temos que enviar para o nosso dataset um array contendo os campos desejados

 

dataset[["campo1", "campo2", "campo3"]]

 

Ordenar resultados

 

Para ordenar registros no SQL utilizamos a cláusula ORDER BY

 

SELECT * FROM minha_tabela ORDER BY campo1

 

No Pandas o mesmo pode ser obtivo utilizando o método sort_values

 

dataset.sort_values("campo1")

 

Retornando registros que atendam a uma certa condição

 

No SQL sabemos que podemos usar WHERE para especificar quais registros queremos retornar

 

SELECT * from minha_tabela WHERE campo1 > 50

 

No Pandas podemos fazer algo parecido, enviando para o dataset como parâmetro o filtro desejado.

 

dataset[dataset.campo1 >= 50]

 

Se for necessário retornar apenas algumas colunas, nossas consultas ficariam da seguinte forma:

 

SQL

SELECT campo2, campo3 from minha_tabela WHERE campo1 > 50

Pandas

dataset[dataset.campo1 >= 50][["campo2", "campo3"]]

 

Valores únicos

 

No SQL uma das formas de retornar valores únicos é utilizar a cláusula DISTINCT

 

SELECT DISTINCT campo1 FROM minha_tabela

 

Já no Pandas para atingir o mesmo resultado podemos usar o nome do campo seguido do método unique().

 

dataset.campo1.unique()

 

Contando valores únicos.

 

Esta é uma continuação do exemplo anterior. Ao invés de retornar os valores distintos de uma certa coluna, nossa necessidade pode ser saber apenas qual a quantidade. No SQL podemos usar COUNT junto com o DISTINCT

 

SELECT COUNT(DISTINCT campo1) FROM minha_tabela

 

No Pandas podemos usar o nome do campo seguido do método nunique().

 

dataset.campo1.nunique()

 

Agrupamento de resultados.

 

No SQL costumamos usar GROUP BY para agrupar resultados, junto com alguma função de agregação. Se por exemplo temos uma tabela contendo alunos com os campos nome, cidade e e-mail, podemos contar a quantidade de alunos por cidade desta forma:

 

SELECT cidade, COUNT(*) from alunos GROUP BY cidade

 

Se tivermos um dataset com as mesmas colunas, o Pandas nos permite chegar no mesmo resultado utilizado o método value_counts().

 

dataset.cidade.value_counts()

 

Funções de agregação

 

No SQL, junto com o GROUP BY, podemos usar funções de agregação, estas funções são as seguintes:

 

Sum - Soma os valores.

Avg - Retorna a média.

Min - Retorna o menor valor.

Max - Retorna o maior valor.

 

Estas funções também pode ser utilizadas sem o GROUP BY, se o nosso objetivo é apenas retornar um valor. 

 

Vamos ver como estas funções são utilizadas no SQL e no Pandas.

 

Soma

SQL

SELECT SUM(campo1) FROM minha_tabela

Pandas

dataset.campo1.sum()

 

Média

SQL

SELECT AVG(campo1) FROM minha_tabela

Pandas

dataset.campo1.mean()

 

Menor valor

SQL

SELECT MIN(campo1) FROM minha_tabela

Pandas

dataset.campo1.min()

 

Maior valor

SQL

SELECT MAX(campo1) FROM minha_tabela

Pandas

dataset.campo1.max()

 

Como vimos nos exemplos anteriores, no Pandas utilizamos os métodos sum, mean, min e max. Com exceção do nome "mean", os outros nomes são semelhantes aos usados no SQL.

 

Outros conteudos que podem ser de seu interesse

Como listar o tamanho das tabelas no SQL Server e no MySQL
25/09/2016SQL

Como listar o tamanho das tabelas no SQL Server e no MySQL

Veja como achar facilmente as tabelas que gastam mais espaço em seu banco de dados SQL Server ou MySQL!

Saiba mais...
Identificando as tabelas mais utilizadas no SQL SERVER
20/10/2019SQL

Identificando as tabelas mais utilizadas no SQL SERVER

Veja quais as tabelas mais utilizadas do seu banco de dados

Saiba mais...

Conteúdo sobre banco de dados sem complicação!