Exemplo de Gerenciamento de Aquisições com Python#
Introdução#
O gerenciamento de aquisições é uma parte essencial do gerenciamento de projetos, garantindo que os recursos e serviços necessários sejam obtidos para atender às necessidades do projeto. Nesta aula, usaremos Python para explorar:
Planejamento de aquisições.
Seleção de fornecedores.
Geração de formulários para coleta de dados e critérios.
Os exemplos estão alinhados com os conceitos do PMBOK 7ª edição no domínio Entrega.
Exercício Prático: Planejamento de Aquisições para um Projeto de Construção#
Considere realizar um exercício prático onde você irá planejar as aquisições para um pequeno projeto de construção civil, levando em consideração as etapas descritas anteriormente.
Passos para o Exercício:#
Defina as necessidades do projeto: O que você precisa adquirir para o projeto?
Selecione os fornecedores: Quem pode fornecer o que você precisa?
Determine o orçamento: Qual é o orçamento disponível para as aquisições?
Estabeleça os prazos: Quando os materiais e serviços precisam ser entregues?
Planejamento de Aquisições#
Antes de adquirir recursos, é essencial planejar adequadamente. Vamos criar um formulário simples em Python para coletar requisitos do projeto.
import csv
from IPython.display import FileLink # Biblioteca para criar link de download
def criar_formulario():
# Definição dos campos do formulário
campos = [
"Nome do Requisitante",
"Descrição do Item/Serviço",
"Quantidade Necessária",
"Prazo de Entrega",
"Orçamento Estimado"
]
print("Preencha os dados abaixo para criar um formulário de aquisições.")
dados = {} # Dicionário para armazenar os dados preenchidos pelo usuário
# Coleta de dados interativa para cada campo
for campo in campos:
dados[campo] = input(f"{campo}: ")
# Atualiza o caminho do arquivo para a pasta ../../data/
nome_arquivo = "../../../data/formulario_aquisicoes.csv"
with open(nome_arquivo, mode="w", newline="") as arquivo:
# Configura o escritor CSV com os campos definidos
escritor = csv.DictWriter(arquivo, fieldnames=campos)
escritor.writeheader() # Escreve os cabeçalhos no arquivo
escritor.writerow(dados) # Escreve os dados coletados como uma linha
print(f"Formulário salvo como {nome_arquivo}.") # Mensagem de sucesso
return nome_arquivo # Retorna o nome do arquivo criado
def exibir_formulario(nome_arquivo):
# Exibe o conteúdo do formulário a partir do arquivo CSV
print("\nConteúdo do Formulário de Aquisição Salvo:")
with open(nome_arquivo, mode="r", newline="") as arquivo:
leitor = csv.DictReader(arquivo)
for linha in leitor:
for campo, valor in linha.items():
print(f"{campo}: {valor}")
def criar_link_download(nome_arquivo):
# Cria um link de download para o arquivo
display(FileLink(nome_arquivo)) # Exibe o link para download do arquivo
# Executa a função para testar a criação do formulário
arquivo_salvo = criar_formulario()
# Exibe o conteúdo do arquivo salvo
exibir_formulario(arquivo_salvo)
# Cria o link de download do arquivo
criar_link_download(arquivo_salvo)
Preencha os dados abaixo para criar um formulário de aquisições.
Formulário salvo como ../../../data/formulario_aquisicoes.csv.
Conteúdo do Formulário de Aquisição Salvo:
Nome do Requisitante: r
Descrição do Item/Serviço: r
Quantidade Necessária: r
Prazo de Entrega: r
Orçamento Estimado: r
Seleção de Fornecedores#
Após coletar os requisitos, avaliamos os fornecedores com base em critérios como preço, qualidade e prazos. Aqui está um exemplo prático em Python para selecionar fornecedores.
import pandas as pd
# Dados fictícios de fornecedores
dados = {
"Fornecedor": ["Fornecedor A", "Fornecedor B", "Fornecedor C"],
"Preço": [1000, 1200, 1100],
"Qualidade (1-10)": [8, 9, 7],
"Prazo de Entrega (dias)": [30, 40, 25]
}
# Criar DataFrame
df = pd.DataFrame(dados)
# Pesos para critérios
pesos = {"Preço": 0.4, "Qualidade (1-10)": 0.4, "Prazo de Entrega (dias)": 0.2}
# Normalizar dados e calcular pontuação
df["Pontuação"] = (
(1 / df["Preço"]) * pesos["Preço"] +
df["Qualidade (1-10)"] * pesos["Qualidade (1-10)"] +
(1 / df["Prazo de Entrega (dias)"]) * pesos["Prazo de Entrega (dias)"]
)
# Ordenar por pontuação
df = df.sort_values(by="Pontuação", ascending=False)
print("Ranking dos Fornecedores:")
print(df)
Ranking dos Fornecedores:
Fornecedor Preço Qualidade (1-10) Prazo de Entrega (dias) Pontuação
1 Fornecedor B 1200 9 40 3.605333
0 Fornecedor A 1000 8 30 3.207067
2 Fornecedor C 1100 7 25 2.808364
Conclusão#
Com Python, podemos automatizar partes importantes do gerenciamento de aquisições, como:
Coletar requisitos por meio de formulários.
Avaliar fornecedores com base em critérios definidos.
Baixe o arquivo gerado durante a execução para usá-lo em seus projetos!
Sugestão de Atividade:#
Modifique os critérios de seleção e os pesos no exemplo para ver como o ranking dos fornecedores muda.