|
|
|
|
@ -95,6 +95,7 @@ class Prediksi:
|
|
|
|
|
FROM lcc_equipment_tr_data
|
|
|
|
|
WHERE assetnum = %s
|
|
|
|
|
and is_actual=1
|
|
|
|
|
and seq != 0
|
|
|
|
|
;
|
|
|
|
|
"""
|
|
|
|
|
cursor.execute(query, (equipment_id,))
|
|
|
|
|
@ -711,7 +712,6 @@ class Prediksi:
|
|
|
|
|
if df is None:
|
|
|
|
|
print("Data tidak tersedia untuk prediksi.")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
# Mendapatkan tahun proyeksi dari DB
|
|
|
|
|
par_tahun_target = self.__get_param(assetnum)
|
|
|
|
|
|
|
|
|
|
@ -769,19 +769,14 @@ class Prediksi:
|
|
|
|
|
try:
|
|
|
|
|
# Case untuk kolom yang terkait dengan corrective maintenance (cm)
|
|
|
|
|
if "cm" in col_lower:
|
|
|
|
|
# Tentukan jumlah baris recent yang dianggap actual jika kolom is_actual ada
|
|
|
|
|
if "is_actual" in df.columns:
|
|
|
|
|
recent_df = df[df["is_actual"] == 1]
|
|
|
|
|
recent_n = recent_df.shape[0]
|
|
|
|
|
avg_recent = recent_df[column].mean()
|
|
|
|
|
print(f"avg_recent: {avg_recent}")
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
|
|
recent_df = df
|
|
|
|
|
recent_n = df.shape[0]
|
|
|
|
|
|
|
|
|
|
recent_n = max(1, recent_n)
|
|
|
|
|
recent_vals = (
|
|
|
|
|
recent_df.sort_values("year", ascending=True)
|
|
|
|
|
recent_df
|
|
|
|
|
.sort_values("year", ascending=True)
|
|
|
|
|
.head(recent_n)[column]
|
|
|
|
|
.dropna()
|
|
|
|
|
)
|
|
|
|
|
@ -798,7 +793,7 @@ class Prediksi:
|
|
|
|
|
avg = 0.0 if pd.isna(avg) else float(avg)
|
|
|
|
|
|
|
|
|
|
preds = np.repeat(float(avg), n_future)
|
|
|
|
|
print(preds)
|
|
|
|
|
# print(preds)
|
|
|
|
|
else:
|
|
|
|
|
# Untuk kolom non-cm, gunakan nilai dari last actual year bila ada,
|
|
|
|
|
# jika tidak ada gunakan last available non-NA value, jika tidak ada pakai 0.0
|
|
|
|
|
|