def get_commune_geojson() -> FeatureCollection: cercles_df = pandas.read_csv(path_to_dataset("mali/Lars_data_cercle.csv")) cercles_df = cercles_df.set_index("Cercle") communes_df = pandas.read_csv( path_to_dataset("mali/Lars_data_commune.csv")) communes_df = communes_df.set_index("Commune") with open(path_to_dataset("mali/mli_admbnda_adm3_pop_2017.geojson"), "r") as fp: communes_geo = load(fp) for f in communes_geo["features"]: commune_props = f["properties"] cercle_name = commune_props["admin2_nam"] commune_name = commune_props["admin3_nam"] cercle_data = (cercles_df.loc[cercle_name].to_dict() if cercle_name in cercles_df.index else {}) commune_data = (communes_df.loc[commune_name].to_dict() if commune_name in communes_df.index else {}) f["properties"] = { "objectid": commune_props["objectid"], "admin2_nam": cercle_name, "admin3_nam": commune_props["admin3_nam"], "pop2017_to": commune_props["pop2017_to"], "milieu": commune_data.get("Milieu", None), "pop_2016": cercle_data.get("pop_2016", 0), "taux_fonct": round(cercle_data.get("taux_fonct", 0)), "taux_acces": round(cercle_data.get("taux_acces", 0)), "taux_equip": round(cercle_data.get("taux_equip", 0)), } return communes_geo
def get_functionality_percentage_per_region_geojson() -> Dict[str, Any]: region_df = pandas.read_csv( path_to_dataset("mali/functionality_wp_mali.csv"), sep=";") region_data = region_df.set_index("ADM1_FR")["Percentage"].to_dict() with open(path_to_dataset("mali/mli_hdx.json"), "r") as fp: region_geo = json.load(fp) for f in region_geo["features"]: region = f["properties"]["admin1Name"] f["properties"] = {"region": region, "value": region_data[region]} return region_geo
def get_waterpointdata_geojson() -> Dict[str, Any]: dataframe = pandas.read_csv(path_to_dataset("sierra-leone/WPDx_SL.csv")) dataframe = dataframe.where(pandas.notnull(dataframe), None) features = [] for i in range(0, len(dataframe.index)): item = dataframe.loc[i] longitude = item["#lon_deg"] latitude = item["#lat_deg"] props = { "adm1": item["#adm1"], "adm2": item["#adm2"], } try: feature = Feature( geometry=Point(( float(longitude), float(latitude), )), properties=props, id=f"{longitude},{latitude}", ) features.append(feature) except ValueError: pass return FeatureCollection(features)
def get_waterpoints_geojson() -> Dict[str, Any]: dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_wells.csv"), delimiter=";") dataframe = dataframe.where(pandas.notnull(dataframe), None) features = [] for i in range(0, len(dataframe.index)): item = dataframe.loc[i] longitude = item["geo longitude"] latitude = item["geo latitude"] props = { "province": item.province, "district": item.district, "chiefdom": item.chiefdom, "water_supply_type": item.water_supply_type, } try: feature = Feature( geometry=Point(( float(longitude), float(latitude), )), properties=props, id=f"{longitude},{latitude}", ) features.append(feature) except ValueError: pass return FeatureCollection(features)
def get_resources_media() -> List[Dict[str, Any]]: dataframe = pandas.read_csv( path_to_dataset("mali/Media-Library-Export-2020-December-21-1352.csv")) dataframe = dataframe.where(pandas.notnull(dataframe), None) resources = [] for i in range(0, len(dataframe.index)): item = dataframe.loc[i] files = [item._media_lib_file] if item._media_lib_file2: files.append(item._media_lib_file2) resources.append({ "id": int(item.ID), "title": item.Title, "slug": slugify(item.Title), "content": item.Content, "date": item.Date, "locations": item.Locations.split("|") if item.Locations else [], "types": item.Types.split("|") if item.Types else [], "categories": item.Categories.split("|") if item.Categories else [], "author": item._media_lib_author, "files": files, }) return resources
def get_population_per_region_geojson() -> Dict[str, Any]: region_df = pandas.read_csv( path_to_dataset("mali/Mali_populationV8_model_short.csv")) region_data = region_df.set_index("ADM1_FR")["Pop.2016"].to_dict() with open(path_to_dataset("mali/mli_hdx.json"), "r") as fp: region_geo = json.load(fp) for f in region_geo["features"]: region = f["properties"]["admin1Name"] f["properties"] = { "region": region, "value": region_data.get(region, 0) } return region_geo
def get_waterpoints_geojson() -> Dict[str, Any]: dataframe = pandas.read_csv( path_to_dataset("mali/23112020_Mali_seasonality.csv")) dataframe = dataframe.where(pandas.notnull(dataframe), None) features = [] for i in range(0, len(dataframe.index)): item = dataframe.loc[i] props = { "region": item.region, "functionality_main": item.functionality_main, "puits_safety": item.puits_safety, "seasonality": item.seasonality, "water_months": item.water_months, "photo": item.photo, } try: feature = Feature( geometry=Point((float(item.longitude), float(item.latitude))), properties=props, id=f"{item.longitude},{item.latitude}", ) features.append(feature) except ValueError: pass return FeatureCollection(features)
def get_water_quality_summary() -> Dict[str, Any]: dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) summary = (dataframe.groupby([ "risk.level.ecoli" ])["conf_inter_ecoli", "mpn.100ml"].mean().sort_values( by=["mpn.100ml"]).rename(columns={"mpn.100ml": "mpn_100ml"})) return summary.to_dict()
def get_reported_water_sources_summary() -> List[Dict[str, Any]]: sources = OrderedDict((s, { "source": s }) for s in ["Improved", "Unimproved", "Surface water"]) dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) summary = dataframe.groupby(["sdg_improved_source"]).size().to_dict() for key, val in summary.items(): sources[key]["value"] = val return [v for v in sources.values()]
def get_improved_reason_summary() -> List[Dict[str, Any]]: dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) unimproved = dataframe[dataframe["sdg_sanitation"] == "Improved"] facility_types = (unimproved.groupby( ["toilet_facility_type"]).size().sort_values(ascending=False)) result = {"facility": "Improved"} for type, size in facility_types.items(): result[type] = size return [result]
def get_shared_facilities_summary() -> List[Dict[str, Any]]: facilities = ["Open Defecation", "Unimproved", "Improved"] result = OrderedDict((facility, { "facility": facility }) for facility in facilities) dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) summary = dataframe.groupby(["sdg_sanitation", "share_facility"]).size().to_dict() for (facility, shared), size in summary.items(): result[facility][shared] = size return [val for val in result.values()]
def get_waterpoint_distances_summary() -> List[Dict[str, Any]]: sources = OrderedDict( (s, { "distance": s }) for s in ["Water on premises", "Less than 30 minutes", "More than 30 minutes"]) dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) summary = dataframe.groupby(["sdg_round_trip"]).size().to_dict() for key, val in summary.items(): sources[key]["value"] = val return [v for v in sources.values()]
def get_households_geojson() -> Dict[str, Any]: dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv")) dataframe = dataframe.where(pandas.notnull(dataframe), None) features = [] for i in range(0, len(dataframe.index)): item = dataframe.loc[i] props = { "region": item.location_region, "district": item.location_district, "chiefdom": item.location_chiefdom, "sdg_improved_source": item.sdg_improved_source, "sdg_round_trip": item.sdg_round_trip, "sdg_sanitation": item.sdg_sanitation, "sdg_hand_washing": item.sdg_hand_washing, "toilet_facility_type": item.toilet_facility_type, "flush_to": item.flush_to, "share_facility": item.share_facility, "hand_wash_observe": item.hand_wash_observe, "risk_level_ecoli": item["risk.level.ecoli"], "mpn_per_100ml": item["mpn.100ml"], "conf_inter_ecoli": item.conf_inter_ecoli, "photo_ecoli": item.photo_ecoli, } try: feature = Feature( geometry=Point(( float(item.geolocation_longitude), float(item.geolocation_latitude), )), properties=props, id=f"{item.geolocation_longitude},{item.geolocation_latitude}", ) features.append(feature) except ValueError: pass return FeatureCollection(features)
def get_pump_safety_json() -> Any: return FileResponse(path_to_dataset("mali/pump-safety.json"))
def get_additional_people_json() -> Any: return FileResponse(path_to_dataset("mali/additional-people.json"))
def get_possible_progres_json() -> Any: return FileResponse(path_to_dataset("mali/possible-progress.json"))
def get_treatment_type_json() -> Any: return FileResponse(path_to_dataset("mali/treatment-type.json"))
def get_pump_type_json() -> Any: return FileResponse(path_to_dataset("mali/pump-type.json"))
def get_pollution_type_json() -> Any: return FileResponse(path_to_dataset("mali/pollution-type.json"))
def get_mechanic_vs_manual_pump_json() -> Any: return FileResponse(path_to_dataset("mali/mechanic-vs-manual-pump.json"))
def get_distance_json() -> Any: return FileResponse(path_to_dataset("mali/distance.json"))
def get_abandonment_json() -> Any: return FileResponse(path_to_dataset("mali/abandonment.json"))
def get_region_names() -> List[str]: dataframe = pandas.read_csv( path_to_dataset("mali/23112020_Mali_seasonality.csv")) dataframe = dataframe.where(pandas.notnull(dataframe), None) return list(dataframe.region.unique())
def get_communes_data() -> List[Dict[str, Any]]: df = pandas.read_csv(path_to_dataset("mali/Lars_data_commune.csv")) df = df.where(pandas.notnull(df), None) return df.to_dict("records")