fp='https://raw.githubusercontent.com/'+\
'OlgaBelitskaya/data/main/external_json/'
se=pandas.read_json(fp+'h7rb-945c.json')
fl=['graduation_rate','city','council_district']
se['graduation_rate_range']=se.shape[0]*['0']
se['graduation_rate']=se['graduation_rate']\
.astype('str').str.replace('N/A','0').astype('float')
se['council_district']=se['council_district']\
.astype('int').astype('str')
se.loc[se['graduation_rate']<=.5,
'graduation_rate_range']='gr <= 0.5'
se.loc[(se['graduation_rate']>.5)&(se['graduation_rate']<=.75),
'graduation_rate_range']='0.5 < gr <= 0.75'
se.loc[(se['graduation_rate']>.75)&(se['graduation_rate']<=.9),
'graduation_rate_range'] = '0.75 < gr <= 0.9'
se.loc[se['graduation_rate']>.9,
'graduation_rate_range']='gr > 0.9'
gr_list=['gr <= 0.5','0.5 < gr <= 0.75',
'0.75 < gr <= 0.9','gr > 0.9']
fig,ax=pylab.subplots(nrows=2,ncols=1,figsize=(6.5,6.5))
s='Student Graduation Rate by Council Districts and Cities'
pandas.crosstab(se['council_district'],se['graduation_rate_range'])[gr_list]\
.plot.bar(ax=ax[0],cmap=pylab.cm.bwr)
ax[0].tick_params('x',rotation=90)
city_list=['New York','Bronx','Brooklyn','Staten Island',
'Jamaica','Flushing','Long Island City','Manhattan']
data=se.loc[se['city'].isin(city_list)]
pandas.crosstab(data['city'],se['graduation_rate_range'])[gr_list]\
.plot.barh(ax=ax[1],cmap=pylab.cm.bwr)
ax[1].tick_params('y',labelsize=7,rotation=60)
pylab.suptitle(s); pylab.show()