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:
Muito Obrigado e nos vemos na live!!