Public
Edited
Jun 3, 2023
Importers
Insert cell
Insert cell
fetchCensusGroup = async function (
year,
base_var,
place_fips = "14000",
state = "17",
expand_var = false
) {
const response = await fetch(
`https://census-api.bunkum.us/data/${year}/acs/acs1?get=NAME,group(${base_var})&for=place:${place_fips}&in=state:${state}`
);
const data = await response.json();

const zipped = d3.zip(...data);
const geography = zipped.find((d) => d[0] === "NAME")[1];
const vars = zipped
.filter((d) => d[0] !== "NAME")
.map(([variable, value]) => ({
year,
geography,
variable,
value: Number(value)
}));

if (expand_var) {
const var_response = await fetch(
`https://census-api.bunkum.us/data/${year}/acs/acs1/groups/${base_var}.json`
);
const var_data = await var_response.json();

const enriched_vars = vars.map((d) => ({
...d,
variable_definition: var_data.variables[d.variable]
}));

return enriched_vars;
}

return vars;
}
Insert cell
censusChicagoGroupYears = async (
base_var,
start = 2005,
stop = 2021,
expand_var = false
) => {
const variables_promises = d3
.range(start, stop + 1)
.filter((d) => d !== 2020)
.map((year) => fetchCensusGroup(year, base_var, "14000", "17", expand_var));
const variables = await Promise.all(variables_promises);
return variables.flat();
}
Insert cell
censusGroupYears = async (
base_var,
place_fips = "14000",
state_fips = "17",
start = 2005,
stop = 2019,
expand_var = false
) => {
const variables_promises = d3
.range(start, stop + 1)
.filter((d) => d !== 2020)
.map((year) =>
fetchCensusGroup(year, base_var, place_fips, state_fips, expand_var)
);
const variables = await Promise.all(variables_promises);
return variables.flat();
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more