Update app.py
Browse files
app.py
CHANGED
|
@@ -355,12 +355,21 @@ def _parse_pop_khusus(path_xlsx: str) -> pd.DataFrame:
|
|
| 355 |
if c_mix is None:
|
| 356 |
raise ValueError("POP_KHUSUS: kolom gabungan Provinsi/Kab/Kota tidak ditemukan.")
|
| 357 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 358 |
c_target = pick_col(df, [
|
|
|
|
|
|
|
| 359 |
"target_total_68","Target_Total_68","TARGET_68","target_68",
|
| 360 |
"sampel_total","Sampel_total","TOTAL_SAMPEL","total_sampel",
|
| 361 |
"target","Target","Sampel"
|
| 362 |
])
|
|
|
|
| 363 |
c_pop = pick_col(df, [
|
|
|
|
| 364 |
"total_populasi","Total Populasi","POPULASI","populasi",
|
| 365 |
"jumlah_penduduk","Jumlah Penduduk","PENDUDUK","penduduk",
|
| 366 |
"total_penduduk","Total Penduduk","TOTAL_PENDUDUK","total_pend",
|
|
@@ -397,6 +406,31 @@ def _parse_pop_khusus(path_xlsx: str) -> pd.DataFrame:
|
|
| 397 |
if pop.empty:
|
| 398 |
return pop
|
| 399 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 400 |
pop["kab_key"] = pop["Kab_Kota_Label"].apply(norm_kab_label)
|
| 401 |
pop["prov_key"] = pop["Provinsi_Label"].apply(norm_prov_label)
|
| 402 |
|
|
|
|
| 355 |
if c_mix is None:
|
| 356 |
raise ValueError("POP_KHUSUS: kolom gabungan Provinsi/Kab/Kota tidak ditemukan.")
|
| 357 |
|
| 358 |
+
# =========================
|
| 359 |
+
# UPDATE SESUAI REQUEST:
|
| 360 |
+
# POP khusus ada di kolom POP_KHUSUS
|
| 361 |
+
# target 68% khusus ada di kolom SAMPEL_KHUSUS_68%
|
| 362 |
+
# =========================
|
| 363 |
c_target = pick_col(df, [
|
| 364 |
+
"SAMPEL_KHUSUS_68%", "Sampel_Khusus_68%", "sampel_khusus_68%",
|
| 365 |
+
"SAMPEL_KHUSUS_68", "Sampel_Khusus_68", "sampel_khusus_68",
|
| 366 |
"target_total_68","Target_Total_68","TARGET_68","target_68",
|
| 367 |
"sampel_total","Sampel_total","TOTAL_SAMPEL","total_sampel",
|
| 368 |
"target","Target","Sampel"
|
| 369 |
])
|
| 370 |
+
|
| 371 |
c_pop = pick_col(df, [
|
| 372 |
+
"POP_KHUSUS", "Pop_Khusus", "pop_khusus",
|
| 373 |
"total_populasi","Total Populasi","POPULASI","populasi",
|
| 374 |
"jumlah_penduduk","Jumlah Penduduk","PENDUDUK","penduduk",
|
| 375 |
"total_penduduk","Total Penduduk","TOTAL_PENDUDUK","total_pend",
|
|
|
|
| 406 |
if pop.empty:
|
| 407 |
return pop
|
| 408 |
|
| 409 |
+
pop["kab_key"] = pop["Kab_Kota_Label"].apply(norm_kab_label)
|
| 410 |
+
pop["prov_key"] = pop["Provinsi_Label"].apply(norm_prov_label)
|
| 411 |
+
|
| 412 |
+
pop["Target68_Total_Jenis"] = pd.to_numeric(pop["Target68_Total_Jenis"], errors="coerce")
|
| 413 |
+
pop["Pop_Total_Jenis"] = pd.to_numeric(pop["Pop_Total_Jenis"], errors="coerce")
|
| 414 |
+
|
| 415 |
+
# fallback POP dari target
|
| 416 |
+
m_need_pop = pop["Pop_Total_Jenis"].isna() & pop["Target68_Total_Jenis"].notna() & (pop["Target68_Total_Jenis"] > 0)
|
| 417 |
+
pop.loc[m_need_pop, "Pop_Total_Jenis"] = pop.loc[m_need_pop, "Target68_Total_Jenis"] / float(FALLBACK_TARGET_RATIO)
|
| 418 |
+
|
| 419 |
+
# fallback target dari POP
|
| 420 |
+
m_need_target = pop["Target68_Total_Jenis"].isna() & pop["Pop_Total_Jenis"].notna() & (pop["Pop_Total_Jenis"] > 0)
|
| 421 |
+
pop.loc[m_need_target, "Target68_Total_Jenis"] = pop.loc[m_need_target, "Pop_Total_Jenis"] * float(FALLBACK_TARGET_RATIO)
|
| 422 |
+
|
| 423 |
+
# agregat per kab (tetap seperti sebelumnya)
|
| 424 |
+
pop = pop.groupby("kab_key", as_index=False).agg({
|
| 425 |
+
"Kab_Kota_Label": "first",
|
| 426 |
+
"Provinsi_Label": "first",
|
| 427 |
+
"Target68_Total_Jenis": "max",
|
| 428 |
+
"Pop_Total_Jenis": "max",
|
| 429 |
+
"prov_key": "first",
|
| 430 |
+
})
|
| 431 |
+
return pop
|
| 432 |
+
|
| 433 |
+
|
| 434 |
pop["kab_key"] = pop["Kab_Kota_Label"].apply(norm_kab_label)
|
| 435 |
pop["prov_key"] = pop["Provinsi_Label"].apply(norm_prov_label)
|
| 436 |
|