In [1]:
import seaborn as sns
import metapack as mp
import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display
%matplotlib inline
sns.set_context('notebook')
In [2]:
pkg = mp.jupyter.open_package()
#pkg = mp.jupyter.open_source_package()
pkg
Out[2]:
In [3]:
from publicdata import parse_app_url
url = parse_app_url('census://2015/5/CA/140/B17001')
tracts = url.geoframe()
In [4]:
parse_app_url('census://2015/5/CA/140/B17001').geo_url.shape_url
Out[4]:
In [5]:
tracts.plot()
Out[5]:
In [6]:
# The puma files moved, so the publicdata package is wrong.
url = parse_app_url('shape+ftp://ftp2.census.gov/geo/tiger/TIGER2018/PUMA/tl_2018_06_puma10.zip')
pumas = url.get_resource().geoframe()
In [7]:
pumas.plot()
Out[7]:
In [8]:
counties_pkg = mp.open_package('http://library.metatab.org/census.gov-counties-2017-2.csv')
counties = counties_pkg.resource('counties').geoframe()
sd = counties[counties.name == 'San Diego']
In [9]:
# The direct route crashes: Assertion failed: (0), function query, file AbstractSTRtree.cpp, line 287.
sd_pumas = pumas[pumas.GEOID10.str.startswith('06073')]
sd_pumas.plot()
Out[9]:
In [ ]:
In [10]:
sd_pumas_tracts = gpd.sjoin(tracts, sd_pumas)
sd_pumas_tracts = sd_pumas_tracts[sd_pumas_tracts.countyfp == '073'].copy()
sd_pumas_tracts.plot(column='PUMACE10')
Out[10]:
In [11]:
#sd_pumas_tracts.to_file('tracts.geojson','GeoJSON')
#sd_pumas.to_file('pumas.geojson','GeoJSON')
In [12]:
t = sd_pumas_tracts[['geoid', 'GEOID10']]
from geoid.census import CensusGeoid, State_puma5, Tract
t = pd.DataFrame({
'puma_geoid': sd_pumas_tracts.GEOID10.apply(lambda v: State_puma5.parse(v).as_acs()),
'tract_geoid': sd_pumas_tracts.geoid.apply(lambda v: Tract.parse(v).as_acs())
}
)
t = t.reset_index(drop=True)
t.to_csv('sandiego_puma_tract.csv')
In [13]:
url = parse_app_url('census://2016/5/CA/795/B03002')
pums_pop = url.dataframe()
pums_pop.titles.head().T
Out[13]:
In [14]:
!pwd
In [ ]: