For the first question I think answer would be:
.rename(columns={'count':'Total_Numbers'})
or
.columns = ['ID', 'Region', 'Total_Numbers']
As for second one I'd say the answer would be no. It's possible to use it like 'df.ID' because of python datamodel:
Attribute references are translated to lookups in this dictionary,
e.g., m.x is equivalent to m.dict["x"]