Análisis de Producción: Dashboard de Diagnóstico con Datos Reales
Cómo construir gráficos de producción que revelan el comportamiento de tu yacimiento
Ingeniería de Yacimientos
Producción
Vigilancia
Excel
Python
Aprende a construir gráficos de producción usando datos reales de 12 pozos. Incluye gráficos compuestos, WOR, GOR, curvas de declinación, Purvis plot y diagnóstico de mecanismo de empuje. Basado en Baker et al. (2015) “Practical Reservoir Engineering and Characterization”, Capítulo 4.
El análisis de producción es una de las tareas más importantes (y más subestimadas) del ingeniero de yacimientos. Antes de correr un simulador numérico o ajustar un modelo de balance de materia, lo primero que debemos hacer es mirar los datos de producción con ojos de detective.
En este post trabajamos con datos reales del campo HOMOL obtenidos del portal de la antigua CNH: 12 pozos productores de aceite con producción mensual de aceite, gas y agua desde enero 2007 hasta abril 2021. El objetivo es construir paso a paso los gráficos diagnóstico que todo ingeniero debería tener antes de tomar cualquier decisión sobre un yacimiento.
Referencia técnica
Los tipos de gráficos que presentamos están basados en la Tabla 4.2.2 de Practical Reservoir Engineering and Characterization (Baker, Yarranton & Jensen, 2015), que es una referencia completa y práctica para análisis de datos de producción.
Los Datos
Trabajamos con un archivo CSV con la siguiente estructura:
Columna
Descripción
Well
Nombre del pozo (12 pozos: HOMOL-1 a HOMOL-63)
Fluid
Tipo de fluido: Qo (aceite), Qg (gas), Qw (agua)
Date
Fecha mensual (DD/MM/YYYY)
Rate
Tasa de producción diaria
Resumen del campo:
Pozos activos: 12 productores
Período: Enero 2007 – Abril 2021 (172 meses)
Producción acumulada de aceite (Np): ~5.9 millones de barriles
Producción acumulada de agua (Wp): ~229 mil barriles
Producción acumulada de gas (Gp): ~6.9 millones de Mscf
Pico de producción del campo: ~60,329 bbl/d (septiembre 2014)
Ver código
import pandas as pdimport numpy as np# Cargar datosdf = pd.read_csv('Production_Data.csv')df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')df['Rate'] = pd.to_numeric(df['Rate'], errors='coerce').fillna(0)# Pivotar a formato anchopivot = df.pivot_table(index=['Well','Date'], columns='Fluid', values='Rate', aggfunc='sum').reset_index()pivot.columns.name =Nonepivot = pivot.fillna(0)# Totales del campo por mesfield = pivot.groupby('Date')[['Qo','Qg','Qw']].sum().reset_index()field = field.sort_values('Date')# Calcular acumuladasfield['Np'] = field['Qo'].cumsum()field['Gp'] = field['Qg'].cumsum()field['Wp'] = field['Qw'].cumsum()# Calcular ratios (evitar división por cero)field['GOR'] = np.where(field['Qo'] >0, field['Qg'] / field['Qo'], 0)field['WOR'] = np.where(field['Qo'] >0, field['Qw'] / field['Qo'], 0)field['WC'] = np.where((field['Qo'] + field['Qw']) >0, field['Qw'] / (field['Qo'] + field['Qw']) *100, 0)field['Qf'] = field['Qo'] + field['Qw'] # Tasa de fluido total# Conteo de pozos activos por meswell_count = pivot[pivot['Qo'] >0].groupby('Date')['Well'].nunique().reset_index()well_count.columns = ['Date', 'WellCount']field = field.merge(well_count, on='Date', how='left').fillna(0)print(f"✅ Datos cargados: {len(field)} meses, {pivot['Well'].nunique()} pozos")
El composite plot es el gráfico más importante en el análisis de producción. Combina en un solo panel el gasto de aceite, GOR, corte de agua y conteo de pozos vs tiempo.
¿Por qué semilog?
La escala semi-logarítmica en el eje Y en el gasto de aceite permite identificar fácilmente las tendencias de declinación exponencial (aparecen como líneas rectas) y detectar cambios de régimen que serían invisibles en escala lineal.
¿Qué buscar en este gráfico?
Tendencias de declinación en el gasto de aceite
Incrementos de GOR → posible liberación de gas en el yacimiento (por debajo de Pb)
Incremento de corte de agua → avance del frente de agua
Correlación con conteo de pozos → ¿el incremento de producción es por nuevos pozos o por mejora de los existentes?
Figure 1: Composite plot semilog del campo HOMOL. Panel superior: gasto de aceite y conteo de pozos. Panel medio: GOR. Panel inferior: corte de agua.
Gráfico 2 — Composite Plot vs Np (Producción Acumulada)
Este gráfico es complementario al anterior, pero usa Np en el eje X en lugar del tiempo. Esto elimina los efectos de cierres temporales y permite ver directamente cuánto aceite se ha extraído.
¿Qué buscar?
La pendiente de la curva qo vs Np indica la tasa de declinación
El GOR vs Np muestra si hay liberación de gas proporcional a la extracción
El WOR vs Np permite extrapolar el factor de recuperación final
Figure 3: Producción acumulada de aceite, gas y agua del campo HOMOL.
Gráfico 4 — Purvis Plot (Diagnóstico de Water Drive)
El Purvis plot es una herramienta poderosa para yacimientos con empuje de agua o inyección de agua. Combina en un solo gráfico semi-log: la producción acumulada de fluido, el gasto diario de fluido, el gasto diario de aceite, y el WOR+1, todo vs Np acumulado.
Si el WOR+1 forma una línea recta en escala semilog vs Np, se puede extrapolar para pronosticar la producción futura asumiendo tasa de fluido constante:
Figure 4: Purvis plot del campo HOMOL. La tendencia de WOR+1 vs Np permite pronosticar producción futura.
Gráfico 5 — Gp vs Np (Diagnóstico de Solution Gas Drive)
Para yacimientos con empuje por gas en solución, el gráfico de Gp vs Np en escala log-log muestra una tendencia lineal que permite pronosticar la recuperación final. La idea es que cuando se ha producido ~90% del gas en solución, la presión del yacimiento es tan baja que la producción se vuelve antieconómica.
Figure 5: Gp vs Np en escala log-log. Una tendencia lineal sugiere empuje por gas en solución.
Gráfico 6 — Producción Individual por Pozo (Stacked Area)
Para el análisis de producción es fundamental ver la contribución de cada pozo a la producción total del campo. El gráfico de área apilada permite identificar qué pozos son los principales contribuyentes y cuándo entran/salen de producción.
Ver código
# Preparar datos por pozowell_monthly = pivot.pivot_table(index='Date', columns='Well', values='Qo', aggfunc='sum').fillna(0)well_monthly = well_monthly.sort_index()# Ordenar pozos por producción total (mayor a menor) para mejor visualizaciónwell_order = well_monthly.sum().sort_values(ascending=False).index.tolist()well_monthly = well_monthly[well_order]fig, ax = plt.subplots(figsize=(14, 7))fig.suptitle('CAMPO HOMOL — Producción de Aceite por Pozo (Área Apilada)', fontsize=15, fontweight='bold')colors = plt.cm.tab20(np.linspace(0, 1, len(well_order)))ax.stackplot(well_monthly.index, well_monthly.T, labels=well_order, colors=colors, alpha=0.8)ax.set_ylabel('Qo total (bbl/d)', fontsize=12)ax.set_xlabel('Fecha', fontsize=12)ax.legend(loc='upper right', fontsize=8, ncol=3, framealpha=0.9)ax.grid(True, alpha=0.2)ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))plt.tight_layout()plt.show()
Figure 6: Contribución de cada pozo a la producción total del campo.
Gráfico 7 — Panel Individual por Pozo (Ejemplo)
Para un análisis detallado, cada pozo necesita su propio mini-dashboard con gasto de aceite, GOR y corte de agua. Aquí mostramos el pozo HOMOL-1 como ejemplo.
Resumen de la Tabla 4.2.2 — Tipos de Gráficos de Producción
La siguiente tabla resume los tipos de gráficos de producción recomendados por Baker et al. (2015), que son los que hemos implementado en este post:
Tipos de gráficos de producción para yacimientos de aceite. Adaptado de Tabla 4.2.2, Baker et al. (2015).
Gráfico
Eje Y
Eje X
Propósito
Composite
qo, qf, GOR, WC, pozos
Tiempo o Np
Diagnosticar mecanismo de empuje, detectar breakthrough, identificar candidatos a workover
Acumulado
Np, Gp, Wp, Wi, Gi
Tiempo o Np
Relacionar declinación con volúmenes extraídos
Gp vs Np
Gp (log)
Np (log)
Pronóstico en yacimientos de gas en solución
Purvis
WOR+1, Qf, Qo, Np_fluido (log)
Np
Pronóstico en water drive / waterfloods
Ershaghi
1/fw − ln(1−fw)⁻¹
Np
Pronóstico alternativo en waterfloods
Diagnóstico Preliminar del Campo HOMOL
A partir de los gráficos generados, podemos hacer las siguientes observaciones iniciales:
Fase de desarrollo activa (2007-2015): Se observa un crecimiento sostenido de producción conforme se van incorporando pozos (de 1 a 12 pozos)
Pico de producción en 2014: ~60,000 bbl/d con 10+ pozos activos
GOR relativamente estable: Sugiere que el yacimiento se mantiene por encima o cerca de la presión de burbuja, o que el gas producido es principalmente gas en solución
Corte de agua bajo pero creciente: La producción de agua es relativamente baja (< 5% a nivel de campo) pero algunos pozos individuales muestran mayor producción de agua (HOMOL-3, HOMOL-47, HOMOL-62)
Declinación post-2015: Se observa una declinación clara después del pico, posiblemente por agotamiento natural sin inyección de agua aparente
Siguiente paso
Con estos gráficos como base, se puede continuar con el análisis de curvas de declinación para estimar reservas remanentes.
Referencias
Baker, R.O., Yarranton, H.W., & Jensen, J.L. (2015). Practical Reservoir Engineering and Characterization. Gulf Professional Publishing. Capítulo 4: Pool History — Tabla 4.2.2.