Integrating with GeoPandas¶
As of version 0.4.0, VerticaPy features GeoPandas integration. This allows you to easily export a vDataFrame as a GeoPandas DataFrame, giving you more control over geospatial data.
This example demonstrates the advantages of GeoPandas integration with the ‘world’ dataset.
[1]:
from verticapy.datasets import load_world
world = load_world()
display(world)
123 pop_estInt | Abc continentVarchar(32) | Abc countryVarchar(82) | 🌎 Geometry(1048576) | |
| 1 | 140 | Seven seas (open ocean) | Fr. S. Antarctic Lands | |
| 2 | 2931 | South America | Falkland Is. | |
| 3 | 4050 | Antarctica | Antarctica | |
| 4 | 57713 | North America | Greenland | |
| 5 | 265100 | Asia | N. Cyprus | |
| 6 | 279070 | Oceania | New Caledonia | |
| 7 | 282814 | Oceania | Vanuatu | |
| 8 | 329988 | North America | Bahamas | |
| 9 | 339747 | Europe | Iceland | |
| 10 | 360346 | North America | Belize | |
| 11 | 443593 | Asia | Brunei | |
| 12 | 591919 | South America | Suriname | |
| 13 | 594130 | Europe | Luxembourg | |
| 14 | 603253 | Africa | W. Sahara | |
| 15 | 642550 | Europe | Montenegro | |
| 16 | 647581 | Oceania | Solomon Is. | |
| 17 | 737718 | South America | Guyana | |
| 18 | 758288 | Asia | Bhutan | |
| 19 | 778358 | Africa | Eq. Guinea | |
| 20 | 865267 | Africa | Djibouti | |
| 21 | 920938 | Oceania | Fiji | |
| 22 | 1218208 | North America | Trinidad and Tobago | |
| 23 | 1221549 | Asia | Cyprus | |
| 24 | 1251581 | Europe | Estonia | |
| 25 | 1291358 | Asia | Timor-Leste | |
| 26 | 1467152 | Africa | eSwatini | |
| 27 | 1772255 | Africa | Gabon | |
| 28 | 1792338 | Africa | Guinea-Bissau | |
| 29 | 1895250 | Europe | Kosovo | |
| 30 | 1944643 | Europe | Latvia | |
| 31 | 1958042 | Africa | Lesotho | |
| 32 | 1972126 | Europe | Slovenia | |
| 33 | 2051363 | Africa | Gambia | |
| 34 | 2103721 | Europe | Macedonia | |
| 35 | 2214858 | Africa | Botswana | |
| 36 | 2314307 | Asia | Qatar | |
| 37 | 2484780 | Africa | Namibia | |
| 38 | 2823859 | Europe | Lithuania | |
| 39 | 2875422 | Asia | Kuwait | |
| 40 | 2990561 | North America | Jamaica | |
| 41 | 3045191 | Asia | Armenia | |
| 42 | 3047987 | Europe | Albania | |
| 43 | 3068243 | Asia | Mongolia | |
| 44 | 3351827 | North America | Puerto Rico | |
| 45 | 3360148 | South America | Uruguay | |
| 46 | 3424386 | Asia | Oman | |
| 47 | 3474121 | Europe | Moldova | |
| 48 | 3500000 | Africa | Somaliland | |
| 49 | 3753142 | North America | Panama | |
| 50 | 3758571 | Africa | Mauritania | |
| 51 | 3856181 | Europe | Bosnia and Herz. | |
| 52 | 4292095 | Europe | Croatia | |
| 53 | 4510327 | Oceania | New Zealand | |
| 54 | 4543126 | Asia | Palestine | |
| 55 | 4689021 | Africa | Liberia | |
| 56 | 4926330 | Asia | Georgia | |
| 57 | 4930258 | North America | Costa Rica | |
| 58 | 4954674 | Africa | Congo | |
| 59 | 5011102 | Europe | Ireland | |
| 60 | 5320045 | Europe | Norway | |
| 61 | 5351277 | Asia | Turkmenistan | |
| 62 | 5445829 | Europe | Slovakia | |
| 63 | 5491218 | Europe | Finland | |
| 64 | 5605948 | Europe | Denmark | |
| 65 | 5625118 | Africa | Central African Rep. | |
| 66 | 5789122 | Asia | Kyrgyzstan | |
| 67 | 5918919 | Africa | Eritrea | |
| 68 | 6025951 | North America | Nicaragua | |
| 69 | 6072475 | Asia | United Arab Emirates | |
| 70 | 6163195 | Africa | Sierra Leone | |
| 71 | 6172011 | North America | El Salvador | |
| 72 | 6229794 | Asia | Lebanon | |
| 73 | 6653210 | Africa | Libya | |
| 74 | 6909701 | Oceania | Papua New Guinea | |
| 75 | 6943739 | South America | Paraguay | |
| 76 | 7101510 | Europe | Bulgaria | |
| 77 | 7111024 | Europe | Serbia | |
| 78 | 7126706 | Asia | Laos | |
| 79 | 7531386 | Africa | Somalia | |
| 80 | 7965055 | Africa | Togo | |
| 81 | 8236303 | Europe | Switzerland | |
| 82 | 8299706 | Asia | Israel | |
| 83 | 8468555 | Asia | Tajikistan | |
| 84 | 8754413 | Europe | Austria | |
| 85 | 9038741 | North America | Honduras | |
| 86 | 9549747 | Europe | Belarus | |
| 87 | 9850845 | Europe | Hungary | |
| 88 | 9960487 | Europe | Sweden | |
| 89 | 9961396 | Asia | Azerbaijan | |
| 90 | 10248069 | Asia | Jordan | |
| 91 | 10646714 | North America | Haiti | |
| 92 | 10674723 | Europe | Czechia | |
| 93 | 10734247 | North America | Dominican Rep. | |
| 94 | 10768477 | Europe | Greece | |
| 95 | 10839514 | Europe | Portugal | |
| 96 | 11038805 | Africa | Benin | |
| 97 | 11138234 | South America | Bolivia | |
| 98 | 11147407 | North America | Cuba | |
| 99 | 11403800 | Africa | Tunisia | |
| 100 | 11466756 | Africa | Burundi |
Rows: 1-100 | Columns: 4
The ‘apply’ function of the VerticaPy stats module allows you to apply any Vertica function to the data. Let’s compute the area of each country.
[2]:
import verticapy.stats as st
world["geography"] = st.apply("stv_geography", world["geometry"])
world["geography"].astype("geography")
world["area"] = st.apply("st_area", world["geography"])
display(world)
123 pop_estInt | Abc continentVarchar(32) | Abc countryVarchar(82) | 🌎 Geometry(1048576) | 🌎 Geography | 123 areaFloat | |
| 1 | 140 | Seven seas (open ocean) | Fr. S. Antarctic Lands | 11565103230.1973 | ||
| 2 | 2931 | South America | Falkland Is. | 16301980841.1126 | ||
| 3 | 4050 | Antarctica | Antarctica | 12236252243917.1 | ||
| 4 | 57713 | North America | Greenland | 2189751414857.83 | ||
| 5 | 265100 | Asia | N. Cyprus | 3786381407.62268 | ||
| 6 | 279070 | Oceania | New Caledonia | 23282206866.0818 | ||
| 7 | 282814 | Oceania | Vanuatu | 7516451865.1763 | ||
| 8 | 329988 | North America | Bahamas | 15615897741.1302 | ||
| 9 | 339747 | Europe | Iceland | 107031853684.148 | ||
| 10 | 360346 | North America | Belize | 22118506248.1485 | ||
| 11 | 443593 | Asia | Brunei | 10747411137.2812 | ||
| 12 | 591919 | South America | Suriname | 144905905345.091 | ||
| 13 | 594130 | Europe | Luxembourg | 2408816376.51917 | ||
| 14 | 603253 | Africa | W. Sahara | 96485945529.7125 | ||
| 15 | 642550 | Europe | Montenegro | 13420753080.0055 | ||
| 16 | 647581 | Oceania | Solomon Is. | 24831146940.7946 | ||
| 17 | 737718 | South America | Guyana | 210721444770.898 | ||
| 18 | 758288 | Asia | Bhutan | 39441951914.4718 | ||
| 19 | 778358 | Africa | Eq. Guinea | 27242029434.5546 | ||
| 20 | 865267 | Africa | Djibouti | 21966242368.5798 | ||
| 21 | 920938 | Oceania | Fiji | 19353579665.1023 | ||
| 22 | 1218208 | North America | Trinidad and Tobago | 7769152795.90834 | ||
| 23 | 1221549 | Asia | Cyprus | 6207615256.1115 | ||
| 24 | 1251581 | Europe | Estonia | 44441790595.9614 | ||
| 25 | 1291358 | Asia | Timor-Leste | 14776389256.2834 | ||
| 26 | 1467152 | Africa | eSwatini | 18151531542.9276 | ||
| 27 | 1772255 | Africa | Gabon | 270683290581.716 | ||
| 28 | 1792338 | Africa | Guinea-Bissau | 36333129902.2658 | ||
| 29 | 1895250 | Europe | Kosovo | 11211660926.8689 | ||
| 30 | 1944643 | Europe | Latvia | 63610085256.8848 | ||
| 31 | 1958042 | Africa | Lesotho | 27538833464.2252 | ||
| 32 | 1972126 | Europe | Slovenia | 19070599769.6852 | ||
| 33 | 2051363 | Africa | Gambia | 14084033590.0507 | ||
| 34 | 2103721 | Europe | Macedonia | 25026416110.0201 | ||
| 35 | 2214858 | Africa | Botswana | 593439013734.129 | ||
| 36 | 2314307 | Asia | Qatar | 11350868333.6489 | ||
| 37 | 2484780 | Africa | Namibia | 827008137847.344 | ||
| 38 | 2823859 | Europe | Lithuania | 63539126862.9918 | ||
| 39 | 2875422 | Asia | Kuwait | 16673251066.4255 | ||
| 40 | 2990561 | North America | Jamaica | 12500311840.4183 | ||
| 41 | 3045191 | Asia | Armenia | 28624801795.8552 | ||
| 42 | 3047987 | Europe | Albania | 29655575543.2255 | ||
| 43 | 3068243 | Asia | Mongolia | 1540264832849.55 | ||
| 44 | 3351827 | North America | Puerto Rico | 9253937792.64593 | ||
| 45 | 3360148 | South America | Uruguay | 176951396583.201 | ||
| 46 | 3424386 | Asia | Oman | 310171982406.478 | ||
| 47 | 3474121 | Europe | Moldova | 32231982684.4869 | ||
| 48 | 3500000 | Africa | Somaliland | 168036707875.77 | ||
| 49 | 3753142 | North America | Panama | 75581062586.3847 | ||
| 50 | 3758571 | Africa | Mauritania | 1057124493617.98 | ||
| 51 | 3856181 | Europe | Bosnia and Herz. | 50502366239.6244 | ||
| 52 | 4292095 | Europe | Croatia | 57402973305.489 | ||
| 53 | 4510327 | Oceania | New Zealand | 277235027306.03 | ||
| 54 | 4543126 | Asia | Palestine | 5040777637.52613 | ||
| 55 | 4689021 | Africa | Liberia | 98630883299.1132 | ||
| 56 | 4926330 | Asia | Georgia | 68940478573.1465 | ||
| 57 | 4930258 | North America | Costa Rica | 54052091511.1307 | ||
| 58 | 4954674 | Africa | Congo | 341198516478.001 | ||
| 59 | 5011102 | Europe | Ireland | 58217540791.3509 | ||
| 60 | 5320045 | Europe | Norway | 395342753995.479 | ||
| 61 | 5351277 | Asia | Turkmenistan | 480403612700.594 | ||
| 62 | 5445829 | Europe | Slovakia | 46922595108.0112 | ||
| 63 | 5491218 | Europe | Finland | 339068193512.288 | ||
| 64 | 5605948 | Europe | Denmark | 42557150895.5181 | ||
| 65 | 5625118 | Africa | Central African Rep. | 624537721851.14 | ||
| 66 | 5789122 | Asia | Kyrgyzstan | 195599523413.606 | ||
| 67 | 5918919 | Africa | Eritrea | 119741273687.089 | ||
| 68 | 6025951 | North America | Nicaragua | 130035380109.286 | ||
| 69 | 6072475 | Asia | United Arab Emirates | 80064396581.0864 | ||
| 70 | 6163195 | Africa | Sierra Leone | 76298870280.0899 | ||
| 71 | 6172011 | North America | El Salvador | 20971345487.6227 | ||
| 72 | 6229794 | Asia | Lebanon | 10102103572.6877 | ||
| 73 | 6653210 | Africa | Libya | 1636524223070.76 | ||
| 74 | 6909701 | Oceania | Papua New Guinea | 466521361114.311 | ||
| 75 | 6943739 | South America | Paraguay | 402294650536.476 | ||
| 76 | 7101510 | Europe | Bulgaria | 110029924011.404 | ||
| 77 | 7111024 | Europe | Serbia | 76232737912.4884 | ||
| 78 | 7126706 | Asia | Laos | 229798138060.241 | ||
| 79 | 7531386 | Africa | Somalia | 486443125709.23 | ||
| 80 | 7965055 | Africa | Togo | 61222637781.2825 | ||
| 81 | 8236303 | Europe | Switzerland | 46063257324.0393 | ||
| 82 | 8299706 | Asia | Israel | 23010251034.8654 | ||
| 83 | 8468555 | Asia | Tajikistan | 138010387019.761 | ||
| 84 | 8754413 | Europe | Austria | 84824085671.1678 | ||
| 85 | 9038741 | North America | Honduras | 114200451680.527 | ||
| 86 | 9549747 | Europe | Belarus | 208097501687.898 | ||
| 87 | 9850845 | Europe | Hungary | 92223563486.7973 | ||
| 88 | 9960487 | Europe | Sweden | 447872323030.887 | ||
| 89 | 9961396 | Asia | Azerbaijan | 91012352138.8303 | ||
| 90 | 10248069 | Asia | Jordan | 89284998139.1287 | ||
| 91 | 10646714 | North America | Haiti | 28628396092.6457 | ||
| 92 | 10674723 | Europe | Czechia | 80936955801.5446 | ||
| 93 | 10734247 | North America | Dominican Rep. | 48306262335.7236 | ||
| 94 | 10768477 | Europe | Greece | 131854192993.303 | ||
| 95 | 10839514 | Europe | Portugal | 93318040232.8807 | ||
| 96 | 11038805 | Africa | Benin | 117478842076.64 | ||
| 97 | 11138234 | South America | Bolivia | 1088907530803.22 | ||
| 98 | 11147407 | North America | Cuba | 115172058712.546 | ||
| 99 | 11403800 | Africa | Tunisia | 156277140541.173 | ||
| 100 | 11466756 | Africa | Burundi | 26355519798.0136 |
Rows: 1-100 | Columns: 6
We can now export our vDataFrame as a GeoPandas DataFrame.
[3]:
df = world.to_geopandas(geometry = "geometry")
display(df)
| pop_est | continent | country | geography | area | geometry | |
|---|---|---|---|---|---|---|
| 0 | 140 | Seven seas (open ocean) | Fr. S. Antarctic Lands | b'\\251UY\\305\\300\\000\\000\\000\\000\\000\\... | 1.156510e+10 | POLYGON ((68.93500 -48.62500, 69.58000 -48.940... |
| 1 | 2931 | South America | Falkland Is. | b'\\203\\377\\363\\304\\000\\000\\000\\000\\00... | 1.630198e+10 | POLYGON ((-61.20000 -51.85000, -60.00000 -51.2... |
| 2 | 4050 | Antarctica | Antarctica | b'\\200\\000\\000\\000\\000\\000\\000\\000\\00... | 1.223625e+13 | MULTIPOLYGON (((-48.66062 -78.04702, -48.15140... |
| 3 | 57713 | North America | Greenland | b'\\226\\252\\240\\000\\000\\000\\000\\000\\00... | 2.189751e+12 | POLYGON ((-46.76379 82.62796, -43.40644 83.225... |
| 4 | 265100 | Asia | N. Cyprus | b'\\274\\000\\014\\000\\000\\000\\000\\000\\00... | 3.786381e+09 | POLYGON ((32.73178 35.14003, 32.80247 35.14550... |
| ... | ... | ... | ... | ... | ... | ... |
| 172 | 207353391 | South America | Brazil | b'\\200\\000\\000\\000\\000\\000\\000\\000\\00... | 8.540950e+12 | POLYGON ((-53.37366 -33.76838, -53.65054 -33.2... |
| 173 | 260580739 | Asia | Indonesia | b'\\200\\000\\000\\000\\000\\000\\000\\000\\00... | 1.827304e+12 | MULTIPOLYGON (((141.00021 -2.60015, 141.01706 ... |
| 174 | 326625791 | North America | United States of America | b'\\226\\252\\240\\000\\000\\000\\000\\000\\00... | 9.494301e+12 | MULTIPOLYGON (((-122.84000 49.00000, -120.0000... |
| 175 | 1281935911 | Asia | India | b'\\274\\000\\000\\000\\000\\000\\000\\000\\00... | 3.150427e+12 | POLYGON ((97.32711 28.26158, 97.40256 27.88254... |
| 176 | 1379302771 | Asia | China | b'\\274\\000\\000\\000\\000\\000\\000\\000\\00... | 9.408026e+12 | MULTIPOLYGON (((109.47521 18.19770, 108.65521 ... |
177 rows × 6 columns
From there, we can draw any geospatial object.
[4]:
ax = df.plot(edgecolor = "black",
color = "white",
figsize = (10, 9))
[5]:
from verticapy.datasets import load_cities
# Loading the cities dataset
cities = load_cities()
import verticapy.stats as st
import matplotlib.pyplot as plt
# Creating a Matplotlib figure
fig, ax = plt.subplots()
fig.set_size_inches(11, 8)
# Extracting longitude and latitude
cities["lon"] = st.apply("st_x", cities["geometry"])
cities["lat"] = st.apply("st_y", cities["geometry"])
# Drawing the data on a Map
ax = cities.scatter(["lon", "lat"], ax = ax)
df.plot(edgecolor = "black",
color = "white",
ax = ax)
[5]:
<AxesSubplot:xlabel='"lon"', ylabel='"lat"'>
You can also draw maps using the ‘geo_plot’ method. The dataset used in the following cell is available here.
[6]:
import verticapy as vp
# Africa Dataset
africa = vp.read_csv("data/africa_education.csv")
africa_world = load_world()
africa_world = africa_world[africa_world["continent"] == "Africa"]
ax = africa_world["geometry"].geo_plot(color = "white",
edgecolor='black',)
# displaying schools in Africa
africa.scatter(["lon", "lat"],
catcol = "country_long",
ax = ax,
with_others = False,
max_cardinality = 20)
[6]:
<AxesSubplot:xlabel='"lon"', ylabel='"lat"'>