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_est
Int
Abc
continent
Varchar(32)
Abc
country
Varchar(82)
🌎
Geometry(1048576)
1140Seven seas (open ocean)Fr. S. Antarctic Lands
22931South AmericaFalkland Is.
34050AntarcticaAntarctica
457713North AmericaGreenland
5265100AsiaN. Cyprus
6279070OceaniaNew Caledonia
7282814OceaniaVanuatu
8329988North AmericaBahamas
9339747EuropeIceland
10360346North AmericaBelize
11443593AsiaBrunei
12591919South AmericaSuriname
13594130EuropeLuxembourg
14603253AfricaW. Sahara
15642550EuropeMontenegro
16647581OceaniaSolomon Is.
17737718South AmericaGuyana
18758288AsiaBhutan
19778358AfricaEq. Guinea
20865267AfricaDjibouti
21920938OceaniaFiji
221218208North AmericaTrinidad and Tobago
231221549AsiaCyprus
241251581EuropeEstonia
251291358AsiaTimor-Leste
261467152AfricaeSwatini
271772255AfricaGabon
281792338AfricaGuinea-Bissau
291895250EuropeKosovo
301944643EuropeLatvia
311958042AfricaLesotho
321972126EuropeSlovenia
332051363AfricaGambia
342103721EuropeMacedonia
352214858AfricaBotswana
362314307AsiaQatar
372484780AfricaNamibia
382823859EuropeLithuania
392875422AsiaKuwait
402990561North AmericaJamaica
413045191AsiaArmenia
423047987EuropeAlbania
433068243AsiaMongolia
443351827North AmericaPuerto Rico
453360148South AmericaUruguay
463424386AsiaOman
473474121EuropeMoldova
483500000AfricaSomaliland
493753142North AmericaPanama
503758571AfricaMauritania
513856181EuropeBosnia and Herz.
524292095EuropeCroatia
534510327OceaniaNew Zealand
544543126AsiaPalestine
554689021AfricaLiberia
564926330AsiaGeorgia
574930258North AmericaCosta Rica
584954674AfricaCongo
595011102EuropeIreland
605320045EuropeNorway
615351277AsiaTurkmenistan
625445829EuropeSlovakia
635491218EuropeFinland
645605948EuropeDenmark
655625118AfricaCentral African Rep.
665789122AsiaKyrgyzstan
675918919AfricaEritrea
686025951North AmericaNicaragua
696072475AsiaUnited Arab Emirates
706163195AfricaSierra Leone
716172011North AmericaEl Salvador
726229794AsiaLebanon
736653210AfricaLibya
746909701OceaniaPapua New Guinea
756943739South AmericaParaguay
767101510EuropeBulgaria
777111024EuropeSerbia
787126706AsiaLaos
797531386AfricaSomalia
807965055AfricaTogo
818236303EuropeSwitzerland
828299706AsiaIsrael
838468555AsiaTajikistan
848754413EuropeAustria
859038741North AmericaHonduras
869549747EuropeBelarus
879850845EuropeHungary
889960487EuropeSweden
899961396AsiaAzerbaijan
9010248069AsiaJordan
9110646714North AmericaHaiti
9210674723EuropeCzechia
9310734247North AmericaDominican Rep.
9410768477EuropeGreece
9510839514EuropePortugal
9611038805AfricaBenin
9711138234South AmericaBolivia
9811147407North AmericaCuba
9911403800AfricaTunisia
10011466756AfricaBurundi
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_est
Int
Abc
continent
Varchar(32)
Abc
country
Varchar(82)
🌎
Geometry(1048576)
🌎
Geography
123
area
Float
1140Seven seas (open ocean)Fr. S. Antarctic Lands11565103230.1973
22931South AmericaFalkland Is.16301980841.1126
34050AntarcticaAntarctica12236252243917.1
457713North AmericaGreenland2189751414857.83
5265100AsiaN. Cyprus3786381407.62268
6279070OceaniaNew Caledonia23282206866.0818
7282814OceaniaVanuatu7516451865.1763
8329988North AmericaBahamas15615897741.1302
9339747EuropeIceland107031853684.148
10360346North AmericaBelize22118506248.1485
11443593AsiaBrunei10747411137.2812
12591919South AmericaSuriname144905905345.091
13594130EuropeLuxembourg2408816376.51917
14603253AfricaW. Sahara96485945529.7125
15642550EuropeMontenegro13420753080.0055
16647581OceaniaSolomon Is.24831146940.7946
17737718South AmericaGuyana210721444770.898
18758288AsiaBhutan39441951914.4718
19778358AfricaEq. Guinea27242029434.5546
20865267AfricaDjibouti21966242368.5798
21920938OceaniaFiji19353579665.1023
221218208North AmericaTrinidad and Tobago7769152795.90834
231221549AsiaCyprus6207615256.1115
241251581EuropeEstonia44441790595.9614
251291358AsiaTimor-Leste14776389256.2834
261467152AfricaeSwatini18151531542.9276
271772255AfricaGabon270683290581.716
281792338AfricaGuinea-Bissau36333129902.2658
291895250EuropeKosovo11211660926.8689
301944643EuropeLatvia63610085256.8848
311958042AfricaLesotho27538833464.2252
321972126EuropeSlovenia19070599769.6852
332051363AfricaGambia14084033590.0507
342103721EuropeMacedonia25026416110.0201
352214858AfricaBotswana593439013734.129
362314307AsiaQatar11350868333.6489
372484780AfricaNamibia827008137847.344
382823859EuropeLithuania63539126862.9918
392875422AsiaKuwait16673251066.4255
402990561North AmericaJamaica12500311840.4183
413045191AsiaArmenia28624801795.8552
423047987EuropeAlbania29655575543.2255
433068243AsiaMongolia1540264832849.55
443351827North AmericaPuerto Rico9253937792.64593
453360148South AmericaUruguay176951396583.201
463424386AsiaOman310171982406.478
473474121EuropeMoldova32231982684.4869
483500000AfricaSomaliland168036707875.77
493753142North AmericaPanama75581062586.3847
503758571AfricaMauritania1057124493617.98
513856181EuropeBosnia and Herz.50502366239.6244
524292095EuropeCroatia57402973305.489
534510327OceaniaNew Zealand277235027306.03
544543126AsiaPalestine5040777637.52613
554689021AfricaLiberia98630883299.1132
564926330AsiaGeorgia68940478573.1465
574930258North AmericaCosta Rica54052091511.1307
584954674AfricaCongo341198516478.001
595011102EuropeIreland58217540791.3509
605320045EuropeNorway395342753995.479
615351277AsiaTurkmenistan480403612700.594
625445829EuropeSlovakia46922595108.0112
635491218EuropeFinland339068193512.288
645605948EuropeDenmark42557150895.5181
655625118AfricaCentral African Rep.624537721851.14
665789122AsiaKyrgyzstan195599523413.606
675918919AfricaEritrea119741273687.089
686025951North AmericaNicaragua130035380109.286
696072475AsiaUnited Arab Emirates80064396581.0864
706163195AfricaSierra Leone76298870280.0899
716172011North AmericaEl Salvador20971345487.6227
726229794AsiaLebanon10102103572.6877
736653210AfricaLibya1636524223070.76
746909701OceaniaPapua New Guinea466521361114.311
756943739South AmericaParaguay402294650536.476
767101510EuropeBulgaria110029924011.404
777111024EuropeSerbia76232737912.4884
787126706AsiaLaos229798138060.241
797531386AfricaSomalia486443125709.23
807965055AfricaTogo61222637781.2825
818236303EuropeSwitzerland46063257324.0393
828299706AsiaIsrael23010251034.8654
838468555AsiaTajikistan138010387019.761
848754413EuropeAustria84824085671.1678
859038741North AmericaHonduras114200451680.527
869549747EuropeBelarus208097501687.898
879850845EuropeHungary92223563486.7973
889960487EuropeSweden447872323030.887
899961396AsiaAzerbaijan91012352138.8303
9010248069AsiaJordan89284998139.1287
9110646714North AmericaHaiti28628396092.6457
9210674723EuropeCzechia80936955801.5446
9310734247North AmericaDominican Rep.48306262335.7236
9410768477EuropeGreece131854192993.303
9510839514EuropePortugal93318040232.8807
9611038805AfricaBenin117478842076.64
9711138234South AmericaBolivia1088907530803.22
9811147407North AmericaCuba115172058712.546
9911403800AfricaTunisia156277140541.173
10011466756AfricaBurundi26355519798.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))
../../../_images/notebooks_full_stack_geopandas_index_8_0.png
[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"'>
../../../_images/notebooks_full_stack_geopandas_index_9_1.png

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"'>
../../../_images/notebooks_full_stack_geopandas_index_11_1.png