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"'>