Hannibal is located in Marion county Missouri with a geographic area of 16.0 square miles. The total population in Hannibal is 17,312 with 47.7% male and 52.3% female. Children under age 5 represent 5.9% of the population, under age 18 equal 23.2% of the population and over age 65 is 18.3% of the population. The median household income is $46,504, per capita income is $24,110. There are a total of 7,053 housing units with 57.1% owner occupied. Education includes 34.5% of residents that are high school graduates and 22.5% with a bachelor's degree or higher. The average temperature in Hannibal in the summer is 75 degrees, and in the winter 32 degrees.