|
10 | 10 | from oda_data.clean_data.channels import add_channel_names |
11 | 11 |
|
12 | 12 | from src.data import config |
| 13 | +from src.data.config import PATHS |
13 | 14 |
|
14 | 15 | set_data_path(config.PATHS.DATA) |
15 | 16 |
|
@@ -228,24 +229,51 @@ def pipeline( |
228 | 229 | currency: str = "USD", |
229 | 230 | by_recipient: bool = False, |
230 | 231 | base_year: int | None = None, |
| 232 | + include_bilateral: bool = False, |
231 | 233 | ) -> pd.DataFrame: |
232 | | - bilateral = get_bilateral_disbursements_by_sector( |
233 | | - start_year=start_year, |
234 | | - end_year=end_year, |
235 | | - currency=currency, |
236 | | - by_recipient=by_recipient, |
237 | | - base_year=base_year, |
238 | | - ).assign(indicator="Bilateral") |
239 | | - multilateral = get_imputed_multilateral_disbursements_by_sector( |
240 | | - start_year=start_year, |
241 | | - end_year=end_year, |
242 | | - currency=currency, |
243 | | - by_recipient=by_recipient, |
244 | | - base_year=base_year, |
245 | | - ).assign(indicator="Multilateral") |
| 234 | + if include_bilateral: |
| 235 | + bilateral = get_bilateral_disbursements_by_sector( |
| 236 | + start_year=start_year, |
| 237 | + end_year=end_year, |
| 238 | + currency=currency, |
| 239 | + by_recipient=by_recipient, |
| 240 | + base_year=base_year, |
| 241 | + ).assign(indicator="bilateral_flow_disbursement_gross") |
| 242 | + else: |
| 243 | + bilateral = pd.DataFrame() |
246 | 244 |
|
247 | | - return pd.concat([bilateral, multilateral], ignore_index=True) |
| 245 | + data = ( |
| 246 | + get_imputed_multilateral_disbursements_by_sector( |
| 247 | + start_year=start_year, |
| 248 | + end_year=end_year, |
| 249 | + currency=currency, |
| 250 | + by_recipient=by_recipient, |
| 251 | + base_year=base_year, |
| 252 | + ) |
| 253 | + .assign(indicator="imputed_multi_flow_disbursement_gross") |
| 254 | + .pipe(add_names_columns, ["purpose_code"]) |
| 255 | + ) |
| 256 | + |
| 257 | + if include_bilateral: |
| 258 | + data = pd.concat([bilateral, data], ignore_index=True) |
| 259 | + |
| 260 | + return data.filter( |
| 261 | + [ |
| 262 | + "year", |
| 263 | + "indicator", |
| 264 | + "donor_code", |
| 265 | + "donor_name", |
| 266 | + "purpose_code", |
| 267 | + "purpose_name", |
| 268 | + "channel_code", |
| 269 | + "mapped_name", |
| 270 | + "currency", |
| 271 | + "prices", |
| 272 | + "value", |
| 273 | + ] |
| 274 | + ) |
248 | 275 |
|
249 | 276 |
|
250 | 277 | if __name__ == "__main__": |
251 | | - df = pipeline() |
| 278 | + df = pipeline(base_year=2024) |
| 279 | + df.to_csv(PATHS.TOPIC_PAGE / "seek_imputed_2024_constant.csv", index=False) |
0 commit comments