Если crs GeoDataFrame известны (EPSG: 4326 единица = градус, здесь), вам не нужны ни Shapely, ни pyproj в вашем скрипте, потому что GeoPandas их использует).
import geopandas as gpd
test = gpd.read_file("test_wgs84.shp")
print test.crs
test.head(2)
Теперь скопируйте ваш GeoDataFrame и измените проекцию на декартову систему (EPSG: 3857, unit = m, как в ответе ResMar)
tost = test.copy()
tost= tost.to_crs({'init': 'epsg:3857'})
print tost.crs
tost.head(2)
Сейчас площадь в квадратных километрах
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
Но поверхности в проекции Меркатора не правильные, поэтому с другой проекцией в метрах.
tost= tost.to_crs({'init': 'epsg:32633'})
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
epsg:3857
, но ваш кодepsg:3395
, какой из этих двух является правильным?