viernes, 24 de abril de 2026

Gerencia de proyectos. Utilización de Python para análisis costo-beneficio

Fuente: Gemini

¡Absolutamente! Python es una de las herramientas más potentes para la gestión de proyectos (Project Management) y el Análisis de Costo-Beneficio (ACB) debido a su capacidad para manejar grandes volúmenes de datos, automatizar cálculos complejos y generar visualizaciones claras para la toma de decisiones.

Aquí te presento cómo se aplica en cada área con ejemplos resueltos.


1. Análisis de Costo-Beneficio (ACB)

El ACB busca determinar si una inversión es rentable comparando el Valor Presente Neto (VAN o NPV) y la Tasa Interna de Retorno (TIR o IRR).

Ejemplo Resuelto: Evaluación de un Proyecto de Software

Supongamos que una empresa quiere invertir 100,000 USD en un nuevo sistema. Se espera que ahorre 30,000 USD anuales durante 5 años. La tasa de descuento es del 10%.

Python 1.
>>import numpy_financial as npf

>># Datos del proyecto
>>inversion_inicial = -100000
>>flujos_efectivo = [30000, 30000, 30000, 30000, 30000]
>>tasa_descuento = 0.10

>># Unir la inversión con los flujos
>>caja = [inversion_inicial] + flujos_efectivo

>># Cálculos
>>van = npf.npv(tasa_descuento, caja)
>>tir = npf.irr(caja)

>>print(f"Valor Presente Neto (VAN): ${van:,.2f}")
>>print(f"Tasa Interna de Retorno (TIR): {tir:.2%}")

>>if van > 0:
>>    print("Resultado: El proyecto es financieramente viable.")
>>else:
>>    print("Resultado: El proyecto no es viable.")

En google colab:

>>!pip install numpy-financial

>>>
Collecting numpy-financial
  Downloading numpy_financial-1.0.0-py3-none-any.whl.metadata (2.2 kB)
Requirement already satisfied: numpy>=1.15 in /usr/local/lib/python3.12/dist-packages (from numpy-financial) (2.0.2)
Downloading numpy_financial-1.0.0-py3-none-any.whl (14 kB)
Installing collected packages: numpy-financial
Successfully installed numpy-financial-1.0.0
>> Python 1.

>>>
Valor Presente Neto (VAN): $13,723.60
Tasa Interna de Retorno (TIR): 15.24%
Resultado: El proyecto es financieramente viable.

2. Gestión de Proyectos: Método de la Ruta Crítica (CPM)

Python permite calcular fechas tempranas, tardías y la ruta crítica de un proyecto (las tareas que, si se retrasan, retrasan todo el proyecto).

Ejemplo Resuelto: Programación de Tareas

Utilizando la librería criticalpath, podemos definir dependencias:

Python 2.
>>from criticalpath import Node

>># Crear el proyecto
>>p = Node('Proyecto Construcción')

>># Añadir tareas (Nombre, duración)
>>a = p.add(Node('A: Cimientos', duration=5))
>>b = p.add(Node('B: Paredes', duration=10))
>>c = p.add(Node('C: Techo', duration=7))
>>d = p.add(Node('D: Instalación Eléctrica', duration=4))

>># Definir dependencias (B depende de A, C depende de B, etc.)
>>p.link(a, b).link(b, c)
>>p.link(b, d) # La electricidad puede empezar tras las paredes

>># Calcular ruta crítica
>>ruta_critica = p.get_critical_path()
>>duracion_total = p.get_duration()

>>print(f"Ruta Crítica: {[str(n) for n in ruta_critica]}")
>>print(f"Duración total del proyecto: {duracion_total} días")



>>!pip install criticalpath
>>>
Collecting criticalpath
  Downloading criticalpath-0.1.5.tar.gz (10 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: criticalpath
  Building wheel for criticalpath (setup.py) ... done
  Created wheel for criticalpath: filename=criticalpath-0.1.5-py3-none-any.whl size=12028 sha256=e2e0fb8fd5509a1a61a276a5a281c5273b5b6d402634246079e1e69134070b0f
  Stored in directory: /root/.cache/pip/wheels/d8/45/b4/18e42948498dfccab8c61f199bc0473d6045b18e1b170e69ef
Successfully built criticalpath
Installing collected packages: criticalpath
Successfully installed criticalpath-0.1.5

>>Python 2.
>>>
Ruta Crítica: ['A: Cimientos', 'B: Paredes', 'C: Techo']
Duración total del proyecto: 22 días


3. Visualización con Diagramas de Gantt

Aunque existen softwares como MS Project, con Python puedes generar diagramas dinámicos usando Plotly o Matplotlib.

Ejemplo de Visualización:

Python
import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Diseño", Start='2026-05-01', Finish='2026-05-15', Resource='Equipo A'),
    dict(Task="Desarrollo", Start='2026-05-16', Finish='2026-06-20', Resource='Equipo B'),
    dict(Task="Testing", Start='2026-06-21', Finish='2026-07-05', Resource='Equipo A')
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()


>>>

May 32026May 17May 31Jun 14Jun 28DesarrolloTestingDiseño
ResourceEquipo AEquipo BTask

Beneficios de usar Python frente a Excel:

  1. Repetibilidad: Puedes ejecutar el mismo análisis con nuevos datos en segundos.

  2. Simulación de Monte Carlo: Puedes modelar la incertidumbre del proyecto generando miles de escenarios aleatorios para ver la probabilidad de éxito.

  3. Integración: Puedes conectar tus scripts directamente a bases de datos de la empresa o APIs de finanzas.

No hay comentarios: