BeautifulSoup, geopandas, matplotlib, geopandas
1)The district names are taken from the shapefile which has no attributes.
2) Using these district names their websites are
parsed and data like population and number villages are taken and added to the shapefile.
3) Thus the empty shapefile is now populated with data.
4) Now it can be visualised using matplotlib and geopandas.