Skip to main content

Biblioteca Python para registo, consulta e análise de compras em bombas de gasolina.

Project description

MADS Bombas de Gasolina

Biblioteca Python para registo, consulta e análise de compras em bombas de gasolina.

O módulo foi organizado a partir do conteúdo do Colab original e disponibiliza funções para:

  • registo de compras de combustível;
  • listagem de bombas por marca;
  • consulta do histórico de preços;
  • obtenção do preço mais recente;
  • registo de localizações para mapa;
  • visualização geográfica com Folium;
  • gráfico de variação de preços;
  • filtragem por período;
  • top 3 bombas mais baratas e mais caras;
  • exportação de consultas para CSV e PDF;
  • exportação total dos dados para CSV.

Instalação local

pip install .

Importação

from MadsBombasGasolina import *

Também é possível importar funções específicas:

from MadsBombasGasolina import registar_compra, listar_bombas_por_marca, mapa_bombas

Estrutura de dados

O módulo trabalha com dois ficheiros JSON locais:

  • compras.json
  • localizacoes_mapa.json

Isto significa que os dados ficam persistidos em ficheiros no diretório onde o programa é executado.

Fluxo recomendado

  1. Registar compras com registar_compra.
  2. Consultar preços com consultar_historico_precos ou get_preco_mais_recente.
  3. Registar localizações com registar_localizacao_mapa.
  4. Gerar o mapa com mapa_bombas.
  5. Analisar dados por período ou rankings.
  6. Exportar resultados com exportar_consulta_resumida ou exportar_todos_dados.

API Principal

HU01 — Registar compra de combustível

registar_compra(nif, marca, preco, data, tipo_combustivel)

Valida e regista uma compra no ficheiro compras.json.

Validações principais:

  • NIF com 9 dígitos;
  • marca válida: galp, bp, repsol, cepsa, prio;
  • preço positivo;
  • data no formato YYYY-MM-DD e não futura;
  • tipo de combustível válido: gasolina, gasoleo, gpl;
  • evita duplicados para a mesma marca, NIF e data.

HU02 — Listar bombas por marca

listar_bombas_por_marca(marca)

Lista todos os registos existentes para uma marca.

HU03 — Consultar histórico de preços

consultar_historico_precos(marca)

Mostra o histórico cronológico de preços de uma marca.

HU04 — Obter preço mais recente

get_preco_mais_recente(marca)

Devolve o preço mais recente registado para uma marca.

HU05 — Adicionar bombas ao mapa

registar_localizacao_mapa(marca, latitude, longitude)

Regista a localização geográfica de uma marca, associando também a cor usada no mapa.

HU06 — Mapa com identificação da bomba

mapa_bombas()

Gera um mapa Folium com:

  • limite do concelho da Maia;
  • várias camadas cartográficas;
  • marcadores por marca;
  • popup com marca e preço mais recente;
  • legenda dinâmica.

HU07 — Gráfico de variação de preços

grafico_variacao_precos(marca)

Mostra um gráfico com a evolução dos preços da marca nos últimos 6 meses.

HU08 — Filtrar dados por data

filtrar_dados_por_periodo(data_inicio, data_fim)

Filtra compras entre duas datas no formato YYYY-MM-DD.

HU09 — Top 3 bombas mais baratas

top_3_bombas_mais_baratas(data_inicio, data_fim)

Devolve as 3 compras mais baratas no período indicado.

HU10 — Top 3 bombas mais caras

top_3_bombas_mais_caras(data_inicio, data_fim)

Devolve as 3 compras mais caras no período indicado.

HU11 — Exportar consulta resumida

exportar_consulta_resumida(dados, formato="csv", nome_ficheiro="exportacao_consulta")

Exporta uma lista de resultados para:

  • CSV
  • PDF

HU12 — Exportar todos os dados

exportar_todos_dados(nome_ficheiro="backup_total_bombas")

Exporta todos os registos existentes em compras.json para CSV.

Exemplo completo

from MadsBombasGasolina import *

registar_compra("123456789", "galp", 1.75, "2026-03-10", "gasolina")
registar_compra("987654321", "bp", 1.69, "2026-03-11", "gasoleo")

print(listar_bombas_por_marca("galp"))
print(consultar_historico_precos("bp"))

registar_localizacao_mapa("galp", 41.235, -8.620)
registar_localizacao_mapa("bp", 41.220, -8.600)

mapa = mapa_bombas()
mapa.save("mapa_bombas.html")

dados = filtrar_dados_por_periodo("2026-03-01", "2026-03-31")
exportar_consulta_resumida(dados, formato="csv", nome_ficheiro="consulta_marco")
exportar_todos_dados()

Conteúdo incluído no repositório

  • pacote Python MadsBombasGasolina;
  • notebook original Bombas_de_Gasolina.ipynb;
  • ficheiros de empacotamento (pyproject.toml, setup.py, MANIFEST.in);
  • licença MIT;
  • .gitignore.

About

Projeto desenvolvido no âmbito da UC Metodologias Ágeis de Desenvolvimento de Software, reorganizado em formato de repositório GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mads_bombas_gasolina-0.1.0.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mads_bombas_gasolina-0.1.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file mads_bombas_gasolina-0.1.0.tar.gz.

File metadata

  • Download URL: mads_bombas_gasolina-0.1.0.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for mads_bombas_gasolina-0.1.0.tar.gz
Algorithm Hash digest
SHA256 425e5842ca025d744de25188d2896431ab35e9289668c575fafe36cd8615bfe0
MD5 62ebed1df89d1b05d709d22c5a96f7d0
BLAKE2b-256 f48c962f0a5937d93b3c931579fa71fd69dc156394745c80de35c011ceea38a2

See more details on using hashes here.

File details

Details for the file mads_bombas_gasolina-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mads_bombas_gasolina-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbc56c426f3ac987524af289c1a33ec1f565eb7bc87759acbc849a271e02cf72
MD5 f2f0b9400682df599594a20846e38195
BLAKE2b-256 2c96c6dfe42d8905e85c39fb4412d1ea6422da2cbf21ea7da029bdf0f7c12777

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page