2 de maio, 2023

Pandas é uma das bibliotecas mais populares do Python para análise de dados. Ele oferece muitas funções para manipular, visualizar e extrair informações de seus dados. Porém, há momentos em que os usuários precisam de recursos adicionais para manipular dados com maior precisão e rapidez. É aí que entra o pandasql, uma ferramenta que permite usar SQL no pandas.

Pandasql é uma biblioteca Python que permite que os usuários escrevam consultas SQL em pandas. Ele usa SQLite como backend, o que significa que as consultas são executadas em memória. Isso é especialmente útil para usuários que estão acostumados a trabalhar com SQL e querem estender suas habilidades para o mundo do pandas.

Instalando pandasql

Antes de começar a usar o pandasql, você precisa instalá-lo. Você pode instalar o pandasql usando pip:

pip install pandasql
pip install sqlalchemy==1.4.46

Exemplos de uso

Para ilustrar como usar o pandasql, vamos usar um conjunto de dados simples. Imagine que temos um conjunto de dados com informações sobre filmes, incluindo o título do filme, a duração e a classificação. Vamos usar pandas para criar um DataFrame com essas informações:

import pandas as pd

data = { 'title': ['The Shawshank Redemption', 'The Godfather', 'The Dark Knight', 'Schindler\'s List', 'Forrest Gump']
, 'duration': [142, 175, 152, 195, 142]
, 'rating': ['9.3', '9.2', '9.0', '8.9', '8.8'] }

movies = pd.DataFrame(data)

Exemplo 1: Selecionando dados com pandasql (select)

Agora que temos um DataFrame, podemos usar pandasql para selecionar dados com base em uma consulta SQL. Vamos começar selecionando todos os filmes com duração superior a 150 minutos:

from pandasql import sqldf
query = ''' SELECT title, duration FROM movies WHERE duration > 150 '''

result = sqldf(query, locals())
print(result)

Este código retornará um DataFrame com os títulos e as durações dos filmes que têm mais de 150 minutos:

                title  duration
0        The Godfather       175
1     The Dark Knight       152
2    Schindler's List       195

Exemplo 2: Ordenando dados com pandasql (order by)

Podemos usar pandasql para classificar dados também. Vamos classificar os filmes por duração em ordem decrescente:

query = ''' SELECT title, duration FROM movies ORDER BY duration DESC '''
result = sqldf(query, locals())
print(result)

Este código retornará um DataFrame com os títulos e as durações dos filmes ordenados por duração em ordem decrescente:

                      title   duration
0           Schindler's List  195
1             The Godfather   175
2            The Dark Knight  152
3  The Shawshank Redemption   142
4              Forrest Gump   142

 

Exemplo 3: Agrupando dados com pandasql (group by)

Podemos usar pandasql para agrupar dados também. Vamos agrupar os filmes por classificação e calcular a média das durações:

query = ''' SELECT rating, AVG(duration) as avg_duration FROM movies GROUP BY rating ''' 
result = sqldf(query, locals()) 
print(result)

Este código retornará um DataFrame com as classificações dos filmes e as médias das durações dos filmes para cada classificação:

  rating  avg_duration
0    8.8         142.0
1    8.9         195.0
2    9.0         152.0
3    9.2         175.0
4    9.3         142.0

Exemplo 4: Unindo dados com pandasql (joins)

Podemos usar pandasql para unir dados de diferentes fontes. Vamos criar outro DataFrame com informações sobre diretores e usar pandasql para unir as informações de diretores com as informações de filmes:

data = { 'title': ['The Shawshank Redemption', 'The Godfather', 'The Dark Knight', 'Schindler\'s List', 'Forrest Gump'], 'director': ['Frank Darabont', 'Francis Ford Coppola', 'Christopher Nolan', 'Steven Spielberg', 'Robert Zemeckis'] }

directors = pd.DataFrame(data)

query = ''' SELECT title, director, duration, rating 
FROM movies 
JOIN directors ON movies.title = directors.title '''

result = sqldf(query, locals())
print(result)

Este código retornará um DataFrame com os títulos dos filmes, diretores, durações e classificações dos filmes, unindo informações de duas fontes:

                title              director  duration rating
0        The Godfather  Francis Ford Coppola       175    9.2
1     The Dark Knight     Christopher Nolan       152    9.0
2    Schindler's List     Steven Spielberg       195    8.9
3  The Shawshank Redemption       Frank Darabont       142    9.3
4          Forrest Gump     Robert Zemeckis       142    8.8

Conclusão

Pandasql é uma ferramenta poderosa para usuários do pandas que querem usar SQL para manipular seus dados. Ele oferece muitas funções para selecionar, classificar, agrupar e unir dados de forma eficiente. Esperamos que esses exemplos tenham sido úteis para você começar a usar o pandasql em seus próprios projetos de análise de dados.

 

Quer aprender mais…
Então participe da nossa live que será no dia 09/05/2023, para se inscrever só clicar no link abaixo:

Live – Python + GCP

Muito Obrigado e nos vemos na live!!

Deixe um comentário

O seu endereço de e-mail não será publicado.

Translate »