def extract_multiple_tracts_demand_ratios(pop_norm_df, tract_ids):
    """
    Extracts fraction of primary geometry demand based on secondary geometry.

    Inputs list of tract/county IDs and provide mapping based on which demand is
    extrapolated (here, population)

    Inputs:

        pop_norm_df: matrix mapping
        tract_ids: list of tract IDs

    Outputs:

        dictionary of demand area and the fraction of demand it serves


    """
    tract_demand_ratio_dict = pop_norm_df.loc[tract_ids].sum().to_dict()
    dict_area = pop_norm_df.sum(axis=0).to_dict()
    return {k: v / dict_area[k] for k, v in tract_demand_ratio_dict.items() if v != 0}