{
"cells": [
{
"cell_type": "markdown",
"id": "fitting-louisville",
"metadata": {},
"source": [
"# GeoPandas"
]
},
{
"cell_type": "markdown",
"id": "impressed-native",
"metadata": {},
"source": [
"GeoPandas is a library that extends Pandas for geospatial data."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "wanted-comfort",
"metadata": {},
"outputs": [],
"source": [
"import geopandas as gpd\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "forty-opportunity",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" city | \n",
" country | \n",
" lat | \n",
" lon | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Buenos Aires | \n",
" Argentina | \n",
" -34.58 | \n",
" -58.66 | \n",
"
\n",
" \n",
" 1 | \n",
" Brasilia | \n",
" Brazil | \n",
" -15.78 | \n",
" -47.91 | \n",
"
\n",
" \n",
" 2 | \n",
" Santiago | \n",
" Chile | \n",
" -33.45 | \n",
" -70.66 | \n",
"
\n",
" \n",
" 3 | \n",
" Bogota | \n",
" Colombia | \n",
" 4.60 | \n",
" -74.08 | \n",
"
\n",
" \n",
" 4 | \n",
" Caracas | \n",
" Venezuela | \n",
" 10.48 | \n",
" -66.86 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" city country lat lon\n",
"0 Buenos Aires Argentina -34.58 -58.66\n",
"1 Brasilia Brazil -15.78 -47.91\n",
"2 Santiago Chile -33.45 -70.66\n",
"3 Bogota Colombia 4.60 -74.08\n",
"4 Caracas Venezuela 10.48 -66.86"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_cities = pd.DataFrame({\n",
" 'city': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n",
" 'country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n",
" 'lat': [-34.58, -15.78, -33.45, 4.60, 10.48],\n",
" 'lon': [-58.66, -47.91, -70.66, -74.08, -66.86]\n",
"})\n",
"df_cities"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "greater-painting",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" city | \n",
" country | \n",
" lat | \n",
" lon | \n",
" geometry | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Buenos Aires | \n",
" Argentina | \n",
" -34.58 | \n",
" -58.66 | \n",
" POINT (-58.66000 -34.58000) | \n",
"
\n",
" \n",
" 1 | \n",
" Brasilia | \n",
" Brazil | \n",
" -15.78 | \n",
" -47.91 | \n",
" POINT (-47.91000 -15.78000) | \n",
"
\n",
" \n",
" 2 | \n",
" Santiago | \n",
" Chile | \n",
" -33.45 | \n",
" -70.66 | \n",
" POINT (-70.66000 -33.45000) | \n",
"
\n",
" \n",
" 3 | \n",
" Bogota | \n",
" Colombia | \n",
" 4.60 | \n",
" -74.08 | \n",
" POINT (-74.08000 4.60000) | \n",
"
\n",
" \n",
" 4 | \n",
" Caracas | \n",
" Venezuela | \n",
" 10.48 | \n",
" -66.86 | \n",
" POINT (-66.86000 10.48000) | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" city country lat lon geometry\n",
"0 Buenos Aires Argentina -34.58 -58.66 POINT (-58.66000 -34.58000)\n",
"1 Brasilia Brazil -15.78 -47.91 POINT (-47.91000 -15.78000)\n",
"2 Santiago Chile -33.45 -70.66 POINT (-70.66000 -33.45000)\n",
"3 Bogota Colombia 4.60 -74.08 POINT (-74.08000 4.60000)\n",
"4 Caracas Venezuela 10.48 -66.86 POINT (-66.86000 10.48000)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdf_cities = gpd.GeoDataFrame(\n",
" df_cities,\n",
" geometry=gpd.points_from_xy(df_cities.lon, df_cities.lat),\n",
" crs=4326\n",
")\n",
"gdf_cities"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "underlying-sussex",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" pop_est | \n",
" continent | \n",
" name | \n",
" iso_a3 | \n",
" gdp_md_est | \n",
" geometry | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 920938 | \n",
" Oceania | \n",
" Fiji | \n",
" FJI | \n",
" 8374.0 | \n",
" MULTIPOLYGON (((180.00000 -16.06713, 180.00000... | \n",
"
\n",
" \n",
" 1 | \n",
" 53950935 | \n",
" Africa | \n",
" Tanzania | \n",
" TZA | \n",
" 150600.0 | \n",
" POLYGON ((33.90371 -0.95000, 34.07262 -1.05982... | \n",
"
\n",
" \n",
" 2 | \n",
" 603253 | \n",
" Africa | \n",
" W. Sahara | \n",
" ESH | \n",
" 906.5 | \n",
" POLYGON ((-8.66559 27.65643, -8.66512 27.58948... | \n",
"
\n",
" \n",
" 3 | \n",
" 35623680 | \n",
" North America | \n",
" Canada | \n",
" CAN | \n",
" 1674000.0 | \n",
" MULTIPOLYGON (((-122.84000 49.00000, -122.9742... | \n",
"
\n",
" \n",
" 4 | \n",
" 326625791 | \n",
" North America | \n",
" United States of America | \n",
" USA | \n",
" 18560000.0 | \n",
" MULTIPOLYGON (((-122.84000 49.00000, -120.0000... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pop_est continent name iso_a3 gdp_md_est \\\n",
"0 920938 Oceania Fiji FJI 8374.0 \n",
"1 53950935 Africa Tanzania TZA 150600.0 \n",
"2 603253 Africa W. Sahara ESH 906.5 \n",
"3 35623680 North America Canada CAN 1674000.0 \n",
"4 326625791 North America United States of America USA 18560000.0 \n",
"\n",
" geometry \n",
"0 MULTIPOLYGON (((180.00000 -16.06713, 180.00000... \n",
"1 POLYGON ((33.90371 -0.95000, 34.07262 -1.05982... \n",
"2 POLYGON ((-8.66559 27.65643, -8.66512 27.58948... \n",
"3 MULTIPOLYGON (((-122.84000 49.00000, -122.9742... \n",
"4 MULTIPOLYGON (((-122.84000 49.00000, -120.0000... "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdf_world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))\n",
"gdf_world.head()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "finnish-charleston",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" pop_est | \n",
" continent | \n",
" name | \n",
" iso_a3 | \n",
" gdp_md_est | \n",
" geometry | \n",
"
\n",
" \n",
" \n",
" \n",
" 9 | \n",
" 44293293 | \n",
" South America | \n",
" Argentina | \n",
" ARG | \n",
" 879400.0 | \n",
" MULTIPOLYGON (((-68.63401 -52.63637, -68.25000... | \n",
"
\n",
" \n",
" 10 | \n",
" 17789267 | \n",
" South America | \n",
" Chile | \n",
" CHL | \n",
" 436100.0 | \n",
" MULTIPOLYGON (((-68.63401 -52.63637, -68.63335... | \n",
"
\n",
" \n",
" 20 | \n",
" 2931 | \n",
" South America | \n",
" Falkland Is. | \n",
" FLK | \n",
" 281.8 | \n",
" POLYGON ((-61.20000 -51.85000, -60.00000 -51.2... | \n",
"
\n",
" \n",
" 28 | \n",
" 3360148 | \n",
" South America | \n",
" Uruguay | \n",
" URY | \n",
" 73250.0 | \n",
" POLYGON ((-57.62513 -30.21629, -56.97603 -30.1... | \n",
"
\n",
" \n",
" 29 | \n",
" 207353391 | \n",
" South America | \n",
" Brazil | \n",
" BRA | \n",
" 3081000.0 | \n",
" POLYGON ((-53.37366 -33.76838, -53.65054 -33.2... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pop_est continent name iso_a3 gdp_md_est \\\n",
"9 44293293 South America Argentina ARG 879400.0 \n",
"10 17789267 South America Chile CHL 436100.0 \n",
"20 2931 South America Falkland Is. FLK 281.8 \n",
"28 3360148 South America Uruguay URY 73250.0 \n",
"29 207353391 South America Brazil BRA 3081000.0 \n",
"\n",
" geometry \n",
"9 MULTIPOLYGON (((-68.63401 -52.63637, -68.25000... \n",
"10 MULTIPOLYGON (((-68.63401 -52.63637, -68.63335... \n",
"20 POLYGON ((-61.20000 -51.85000, -60.00000 -51.2... \n",
"28 POLYGON ((-57.62513 -30.21629, -56.97603 -30.1... \n",
"29 POLYGON ((-53.37366 -33.76838, -53.65054 -33.2... "
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdf_south_america = gdf_world.loc[world.continent == 'South America']\n",
"gdf_south_america.head()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "vulnerable-medication",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = gdf_south_america.plot(color='white', edgecolor='black')\n",
"\n",
"gdf_cities.plot(ax=ax, color='green')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "southeast-melissa",
"metadata": {},
"source": [
"For more information, see the [documentation](https://geopandas.org/)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "pangeo",
"language": "python",
"name": "pangeo"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}