Si se conoce el crs del GeoDataFrame (EPSG:4326 unit=degree, aquí), no necesita Shapely, ni pyproj en su script porque GeoPandas los utiliza).
import geopandas as gpd
test = gpd.read_file("test_wgs84.shp")
print test.crs
test.head(2)
Ahora copia tu GeoDataFrame y cambia la proyección a un sistema cartesiano (EPSG:3857, unidad= m como en la respuesta de ResMar)
tost = test.copy()
tost= tost.to_crs({'init': 'epsg:3857'})
print tost.crs
tost.head(2)
Ahora la superficie en kilómetros cuadrados
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
Pero las superficies en la proyección Mercator no son correctas, así que con otra proyección en metros.
tost= tost.to_crs({'init': 'epsg:32633'})
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)