Skip to content

Commit d01904c

Browse files
authored
update sectors data and validation (#35)
1 parent bc02877 commit d01904c

8 files changed

Lines changed: 3064 additions & 6928 deletions

File tree

src/data/analysis_tools/sub_sectors.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"4": "Health, General",
77
"5": "Post-Secondary Education",
88
"6": "Secondary Education",
9-
"7": "Unallocated/ Unspecificed",
9+
"7": "Unallocated/ Unspecified",
1010
"8": "Business & Other Services",
1111
"9": "Democratic participation and civil society",
1212
"10": "Emergency Response",
@@ -63,5 +63,8 @@
6363
"61": "Public procurement",
6464
"62": "Hybrid Energy Plants",
6565
"63": "Non-communicable diseases (NCDs)",
66-
"64": "Unallocated/unspecificed"
66+
"64": "Unallocated/unspecified",
67+
"65": "General Environment Protection",
68+
"66": "Energy",
69+
"67": "Unallocated/unspecificed"
6770
}

src/data/partners/seek/sectors.py

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from oda_data.clean_data.channels import add_channel_names
1111

1212
from src.data import config
13+
from src.data.config import PATHS
1314

1415
set_data_path(config.PATHS.DATA)
1516

@@ -228,24 +229,51 @@ def pipeline(
228229
currency: str = "USD",
229230
by_recipient: bool = False,
230231
base_year: int | None = None,
232+
include_bilateral: bool = False,
231233
) -> 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()
246244

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+
)
248275

249276

250277
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)

src/data/scripts/sectors_view.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import pandas as pd
33

4-
from oda_data import CRSData
4+
from oda_data import CRSData, add_sectors
55
from oda_data.tools import sector_lists
66
from oda_data.indicators.research.sector_imputations import (
77
imputed_multilateral_by_purpose,
@@ -148,7 +148,11 @@ def combined_sectors():
148148
sectors["sub_sector_code"] = sectors["sub_sector"].map(subsector_mapping)
149149
sectors = sectors.rename(columns={"sub_sector": "sub_sector_name"})
150150
sector_mapping = sector_lists.get_broad_sector_groups()
151-
sectors["sector_name"] = sectors["sub_sector_name"].map(sector_mapping)
151+
sectors["sector_name"] = (
152+
sectors["sub_sector_name"]
153+
.map(sector_mapping)
154+
.fillna("Unallocated/ Unspecified")
155+
)
152156

153157
logger.info("Pivoting to wide format...")
154158
sectors = widen_currency_price(

0 commit comments

Comments
 (0)