irhamni commited on
Commit
439d2b6
·
verified ·
1 Parent(s): 4e98675

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -0
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