GeoDataFlame の集計
これは dissolve を使う
これを使い地理データの集計を行う
# world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowers'))
# cities = gpd.read_file(gpd.datasets.get_path('naturalearth_cities'))
import geopandas as gpd
import requests, zipfile, io
# 世界地図(国境)
url_world = "https://naturalearth.s3.amazonaws.com/110m_cultural/ne_110m_admin_0_countries.zip"
r = requests.get(url_world)
z = zipfile.ZipFile(io.BytesIO(r.content))
z.extractall("naturalearth_data")
world = gpd.read_file("naturalearth_data/ne_110m_admin_0_countries.shp")
# 都市データ
url_cities = "https://naturalearth.s3.amazonaws.com/110m_cultural/ne_110m_populated_places.zip"
r = requests.get(url_cities)
z = zipfile.ZipFile(io.BytesIO(r.content))
z.extractall("naturalearth_data")
cities = gpd.read_file("naturalearth_data/ne_110m_populated_places.shp")
print(world.head())
print(cities.head())
で世界地理情報の取得
国名はADMINになっているので
日本の情報を取得するのなら
world[world['ADMIN']=='Japan']
とすれば
featurecla scalerank LABELRANK SOVEREIGNT SOV_A3 ADM0_DIF LEVEL TYPE TLC ADMIN ... FCLASS_TR FCLASS_ID FCLASS_PL FCLASS_GR FCLASS_IT FCLASS_NL FCLASS_SE FCLASS_BD FCLASS_UA geometry 155 Admin-0 country 1 2 Japan JPN 0 2 Sovereign country 1 Japan ... None None None None None None None None None MULTIPOLYGON (((141.8846 39.18086, 140.95949 3...
world[world['ADMIN']=='Japan'].plot()
で日本地図の表示

この世界データは国ごとの情報になっている
これを国ではなく大陸ごとに変えたい
この時に位置情報などを取り扱うには dissolve を使う
その前に人口が出てないので調べた
「人口情報が出てこない」のは、表示されていないだけの可能性が高い
Natural Earth の属性は列数が多く、print(df.head()) だと途中で省略される
# 国ごとの推定人口
print(world[['ADMIN','ISO_A3','POP_EST']].head())
# 都市の人口(大きい順に上位10件)
print(cities[['NAME','ADM0NAME','POP_MAX','POP_MIN']].sort_values('POP_MAX', ascending=False).head(10))
とすると
ADMIN ISO_A3 POP_EST
0 Fiji FJI 889953.0
1 United Republic of Tanzania TZA 58005463.0
2 Western Sahara ESH 603253.0
3 Canada CAN 37589262.0
4 United States of America USA 328239523.0
NAME ADM0NAME POP_MAX POP_MIN
233 Tokyo Japan 35676000 8336599
218 New York United States of America 19040000 8008278
224 Mexico City Mexico 19028000 10811002
234 Mumbai India 18978000 12691836
239 São Paulo Brazil 18845000 10021295
232 Shanghai China 14987000 14608512
237 Kolkata India 14787000 4631392
171 Dhaka Bangladesh 12797394 7000940
210 Buenos Aires Argentina 12795000 10929146
216 Los Angeles United States of America 12500000 3694820
というように表示された
なので
japan = world[world['ADMIN'] == 'Japan'] print(japan[['ADMIN','ISO_A3','POP_EST']])
とすれば
ADMIN ISO_A3 POP_EST
155 Japan JPN 126264931.0
というように表示された
Natural Earth の Admin-0 Countries データには continent というカラムがあり
continent の意味
* 各国・地域が属している 大陸名 を示す属性です。
* 値の例:
* “Asia”(日本、中国、インドなど)
* “Europe”(フランス、ドイツなど)
* “Africa”
* “North America”
* “South America”
* “Oceania”
* “Seven seas (open ocean)”(公海などの海洋エリア)
* “Antarctica”
ということで大陸名を調べようと
japan = world[world['ADMIN'] == 'Japan'] print(japan[['ADMIN','continent']])
としたが
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[53], line 2
1 japan = world[world['ADMIN'] == 'Japan']
----> 2 print(japan[['ADMIN','continent']])
File ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/geopandas/geodataframe.py:1896, in GeoDataFrame.__getitem__(self, key)
1890 def __getitem__(self, key):
1891 """
1892 If the result is a column containing only 'geometry', return a
1893 GeoSeries. If it's a DataFrame with any columns of GeometryDtype,
1894 return a GeoDataFrame.
1895 """
-> 1896 result = super().__getitem__(key)
1897 # Custom logic to avoid waiting for pandas GH51895
1898 # result is not geometry dtype for multi-indexes
1899 if (
1900 pd.api.types.is_scalar(key)
1901 and key == ""
(...) 1904 and not is_geometry_type(result)
1905 ):
File ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/pandas/core/frame.py:4108, in DataFrame.__getitem__(self, key)
4106 if is_iterator(key):
4107 key = list(key)
-> 4108 indexer = self.columns._get_indexer_strict(key, "columns")[1]
4110 # take() does not accept boolean indexers
4111 if getattr(indexer, "dtype", None) == bool:
File ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/pandas/core/indexes/base.py:6200, in Index._get_indexer_strict(self, key, axis_name)
6197 else:
6198 keyarr, indexer, new_indexer = self._reindex_non_unique(keyarr)
-> 6200 self._raise_if_missing(keyarr, indexer, axis_name)
6202 keyarr = self.take(indexer)
6203 if isinstance(key, Index):
6204 # GH 42790 - Preserve name from an Index
File ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/pandas/core/indexes/base.py:6252, in Index._raise_if_missing(self, key, indexer, axis_name)
6249 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
6251 not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique())
-> 6252 raise KeyError(f"{not_found} not in index")
KeyError: "['continent'] not in index"
となる
どうやら変更されている
print(world.columns.tolist())
の結果は
['featurecla', 'scalerank', 'LABELRANK', 'SOVEREIGNT', 'SOV_A3', 'ADM0_DIF', 'LEVEL', 'TYPE', 'TLC', 'ADMIN', 'ADM0_A3', 'GEOU_DIF', 'GEOUNIT', 'GU_A3', 'SU_DIF', 'SUBUNIT', 'SU_A3', 'BRK_DIFF', 'NAME', 'NAME_LONG', 'BRK_A3', 'BRK_NAME', 'BRK_GROUP', 'ABBREV', 'POSTAL', 'FORMAL_EN', 'FORMAL_FR', 'NAME_CIAWF', 'NOTE_ADM0', 'NOTE_BRK', 'NAME_SORT', 'NAME_ALT', 'MAPCOLOR7', 'MAPCOLOR8', 'MAPCOLOR9', 'MAPCOLOR13', 'POP_EST', 'POP_RANK', 'POP_YEAR', 'GDP_MD', 'GDP_YEAR', 'ECONOMY', 'INCOME_GRP', 'FIPS_10', 'ISO_A2', 'ISO_A2_EH', 'ISO_A3', 'ISO_A3_EH', 'ISO_N3', 'ISO_N3_EH', 'UN_A3', 'WB_A2', 'WB_A3', 'WOE_ID', 'WOE_ID_EH', 'WOE_NOTE', 'ADM0_ISO', 'ADM0_DIFF', 'ADM0_TLC', 'ADM0_A3_US', 'ADM0_A3_FR', 'ADM0_A3_RU', 'ADM0_A3_ES', 'ADM0_A3_CN', 'ADM0_A3_TW', 'ADM0_A3_IN', 'ADM0_A3_NP', 'ADM0_A3_PK', 'ADM0_A3_DE', 'ADM0_A3_GB', 'ADM0_A3_BR', 'ADM0_A3_IL', 'ADM0_A3_PS', 'ADM0_A3_SA', 'ADM0_A3_EG', 'ADM0_A3_MA', 'ADM0_A3_PT', 'ADM0_A3_AR', 'ADM0_A3_JP', 'ADM0_A3_KO', 'ADM0_A3_VN', 'ADM0_A3_TR', 'ADM0_A3_ID', 'ADM0_A3_PL', 'ADM0_A3_GR', 'ADM0_A3_IT', 'ADM0_A3_NL', 'ADM0_A3_SE', 'ADM0_A3_BD', 'ADM0_A3_UA', 'ADM0_A3_UN', 'ADM0_A3_WB', 'CONTINENT', 'REGION_UN', 'SUBREGION', 'REGION_WB', 'NAME_LEN', 'LONG_LEN', 'ABBREV_LEN', 'TINY', 'HOMEPART', 'MIN_ZOOM', 'MIN_LABEL', 'MAX_LABEL', 'LABEL_X', 'LABEL_Y', 'NE_ID', 'WIKIDATAID', 'NAME_AR', 'NAME_BN', 'NAME_DE', 'NAME_EN', 'NAME_ES', 'NAME_FA', 'NAME_FR', 'NAME_EL', 'NAME_HE', 'NAME_HI', 'NAME_HU', 'NAME_ID', 'NAME_IT', 'NAME_JA', 'NAME_KO', 'NAME_NL', 'NAME_PL', 'NAME_PT', 'NAME_RU', 'NAME_SV', 'NAME_TR', 'NAME_UK', 'NAME_UR', 'NAME_VI', 'NAME_ZH', 'NAME_ZHT', 'FCLASS_ISO', 'TLC_DIFF', 'FCLASS_TLC', 'FCLASS_US', 'FCLASS_FR', 'FCLASS_RU', 'FCLASS_ES', 'FCLASS_CN', 'FCLASS_TW', 'FCLASS_IN', 'FCLASS_NP', 'FCLASS_PK', 'FCLASS_DE', 'FCLASS_GB', 'FCLASS_BR', 'FCLASS_IL', 'FCLASS_PS', 'FCLASS_SA', 'FCLASS_EG', 'FCLASS_MA', 'FCLASS_PT', 'FCLASS_AR', 'FCLASS_JP', 'FCLASS_KO', 'FCLASS_VN', 'FCLASS_TR', 'FCLASS_ID', 'FCLASS_PL', 'FCLASS_GR', 'FCLASS_IT', 'FCLASS_NL', 'FCLASS_SE', 'FCLASS_BD', 'FCLASS_UA', 'geometry']
The history saving thread hit an unexpected error (OperationalError('unable to open database file')).History will not be written to the database.
カラム一覧を見ると、このデータでは
* 大陸は CONTINENT(全部大文字)
* 地域は REGION_UN、SUBREGION
これを元に
# 日本だけ絞り込み japan = world[world["ADMIN"] == "Japan"] # 大陸名を見る(大文字の CONTINENT) print(japan[["ADMIN", "CONTINENT"]]) # 代替として地域区分を見る print(japan[["ADMIN", "REGION_UN", "SUBREGION"]])
とすれば
ADMIN CONTINENT
155 Japan Asia
ADMIN REGION_UN SUBREGION
155 Japan Asia Eastern Asia
となる
これで世界の大陸ごとに分けることができそうなので
大陸列に対して dissolve で集計する
集計方法は
aggfuncで指定する
今回は sum
continents = world.dissolve(by='CONTINENT',aggfunc='sum') continents
とすると
geometry featurecla scalerank LABELRANK SOVEREIGNT SOV_A3 ADM0_DIF LEVEL TYPE TLC ADMIN ADM0_A3 GEOU_DIF GEOUNIT GU_A3 SU_DIF SUBUNIT SU_A3 BRK_DIFF NAME NAME_LONG BRK_A3 BRK_NAME BRK_GROUP ABBREV POSTAL FORMAL_EN FORMAL_FR NAME_CIAWF NOTE_ADM0 NOTE_BRK NAME_SORT NAME_ALT MAPCOLOR7 MAPCOLOR8 MAPCOLOR9 MAPCOLOR13 POP_EST POP_RANK POP_YEAR GDP_MD GDP_YEAR ECONOMY INCOME_GRP FIPS_10 ISO_A2 ISO_A2_EH ISO_A3 ISO_A3_EH ISO_N3 ISO_N3_EH UN_A3 WB_A2 WB_A3 WOE_ID WOE_ID_EH WOE_NOTE ADM0_ISO ADM0_DIFF ADM0_TLC ADM0_A3_US ADM0_A3_FR ADM0_A3_RU ADM0_A3_ES ADM0_A3_CN ADM0_A3_TW ADM0_A3_IN ADM0_A3_NP ADM0_A3_PK ADM0_A3_DE ADM0_A3_GB ADM0_A3_BR ADM0_A3_IL ADM0_A3_PS ADM0_A3_SA ADM0_A3_EG ADM0_A3_MA ADM0_A3_PT ADM0_A3_AR ADM0_A3_JP ADM0_A3_KO ADM0_A3_VN ADM0_A3_TR ADM0_A3_ID ADM0_A3_PL ADM0_A3_GR ADM0_A3_IT ADM0_A3_NL ADM0_A3_SE ADM0_A3_BD ADM0_A3_UA ADM0_A3_UN ADM0_A3_WB REGION_UN SUBREGION REGION_WB NAME_LEN LONG_LEN ABBREV_LEN TINY HOMEPART MIN_ZOOM MIN_LABEL MAX_LABEL LABEL_X LABEL_Y NE_ID WIKIDATAID NAME_AR NAME_BN NAME_DE NAME_EN NAME_ES NAME_FA NAME_FR NAME_EL NAME_HE NAME_HI NAME_HU NAME_ID NAME_IT NAME_JA NAME_KO NAME_NL NAME_PL NAME_PT NAME_RU NAME_SV NAME_TR NAME_UK NAME_UR NAME_VI NAME_ZH NAME_ZHT FCLASS_ISO TLC_DIFF FCLASS_TLC FCLASS_US FCLASS_FR FCLASS_RU FCLASS_ES FCLASS_CN FCLASS_TW FCLASS_IN FCLASS_NP FCLASS_PK FCLASS_DE FCLASS_GB FCLASS_BR FCLASS_IL FCLASS_PS FCLASS_SA FCLASS_EG FCLASS_MA FCLASS_PT FCLASS_AR FCLASS_JP FCLASS_KO FCLASS_VN FCLASS_TR FCLASS_ID FCLASS_PL FCLASS_GR FCLASS_IT FCLASS_NL FCLASS_SE FCLASS_BD FCLASS_UA CONTINENT Africa MULTIPOLYGON (((-11.43878 6.78592, -11.70819 6.8601, -12.4281 7.26294, -12.94905 7.79865, -13.12403 8.16395, -13.24655 8.90305, -13.68515 9.49474, -14.07404 9.88617, -14.33008 10.01572, -14.5797 10.21447, -14.69323 10.6563, -14.83955 10.87657, -15.13031 11.04041, -15.66418 11.45847, -16.08521 11.52459, -16.31479 11.80651, -16.30895 11.9587, -16.61384 12.17091, -16.67745 12.38485, -16.84152 13.15139, -16.71373 13.59496, -17.12611 14.37352, -17.62504 14.72954, -17.18517 14.91948, -16.70071 15.62153, -16.4631 16.13504, -16.54971 16.67389, -16.27055 17.16696, -16.14635 18.10848, -16.25688 19.09672, -16.37765 19.59382, -16.27784 20.09252, -16.53632 20.56787, -17.06342 20.99975, -17.02043 21.42231, -16.97325 21.88574, -16.58914 22.15823, -16.26192 22.67934, -16.32641 23.01777, -15.98261 23.72336, -15.426 24.35913, -15.08933 24.52026, -14.82465 25.10353, -14.80093 25.63626, -14.43994 26.25442, -13.7738 26.61889, -13.13994 27.64015, -13.12161 27.65415, -12.61884 28.03819, -11.68892 28.14864, -10.90096 28.83214, -10.39959 29.09859, -9.56481 29.93357, -9.81472 31.17774, -9.43479 32.0381, -9.30069 32.56468, -8.65748 33.24025, -7.65418 33.69706, -6.91254 34.11048, -6.24434 35.14587, -5.92999 35.75999, -5.19386 35.75518, -4.59101 35.33071, -3.64006 35.39986, -2.60431 35.17909, -2.16991 35.1684, -1.2086 35.71485, -0.12745 35.88866, 0.50388 36.30127, 1.46692 36.60565, 3.1617 36.7839, 4.81576 36.86504, 5.32012 36.71652, 6.26182 37.11066, 7.33038 37.11838, 7.73708 36.88571, 8.42096 36.94643, 9.50999 37.34999, 10.21 37.23, 10.18065 36.72404, 11.02887 37.0921, 11.10003 36.9, 10.6 36.41, 10.59329 35.94744, 10.93952 35.69898, 10.80785 34.83351, 10.14959 34.33077, 10.33966 33.78574, 10.85684 33.76874, 11.1085 33.29334, 11.48879 33.137, 12.66331 32.79278, 13.08326 32.87882, 13.91868 32.71196, 15.24563 32.26508, 15.71394 31.37626, 16.61162 31.18218, 18.02109 30.76357, 19.08641 30.26639, 19.57404 30.52582, 20.05335 30.98576, 19.82033 31.75179, 20.13397 32.2382, 20.85452 32.7068, 21.54298 32.8432, 22.89576 32.63858, 23.2368 32.19149, 23.60913 32.18726, 23.9275 32.01667, 24.92114 31.89936, 25.16482 31.56915, 26.49533 31.58568, 27.45762 31.32126, 28.45048 31.02577, 28.91353 30.87005, 29.68342 31.18686, 30.09503 31.4734, 30.97693 31.55586, 31.68796 31.4296, 31.96041 30.9336, 32.19247 31.26034, 32.99392 31.02407, 33.7734 30.96746, 34.26543 31.21936, 34.26544 31.21936, 34.82324 29.76108, 34.9226 29.50133, 34.64174 29.09942, 34.42655 28.34399, 34.15451 27.8233, 33.92136 27.6487, 33.58811 27.97136, 33.13676 28.41765, 32.42323 29.85108, 32.32046 29.76043, 32.73482 28.70523, 33.34876 27.69989, 34.10455 26.14227, 34.47387 25.59856, 34.79507 25.03375, 35.69241 23.92671, 35.49372 23.75237, 35.52598 23.10244, 36.69069 22.20485, 36.86623 22, 37.18872 21.01885, 36.96941 20.83744, 37.1147 19.80796, 37.48179 18.61409, 37.86276 18.36786, 38.41009 17.99831, 38.99062 16.84063, 39.26611 15.92272, 39.81429 15.43565, 41.17927 14.49108, 41.73495 13.92104, 42.27683 13.34399, 42.58958 13.00042, 43.08123 12.69964, 43.31785 12.39015, 43.28638 11.97493, 42.71587 11.73564, 43.1453 11.46204, 43.47066 11.27771, 43.66667 10.86417, 44.1178 10.44554, 44.61426 10.44221, 45.55694 10.69803, 46.6454 10.81655, 47.52566 11.12723, 48.0216 11.19306, 48.37878 11.37548, 48.94821 11.41062, 48.9482 11.41062, 49.26776 11.43033, 49.72862 11.5789, 50.25878 11.67957, 50.73202 12.0219, 51.1112 12.02464, 51.13387 11.74815, 51.04153 11.16651, 51.04531 10.6409, 50.83418 10.27972, 50.55239 9.19874, 50.07092 8.08173, 49.4527 6.80466, 48.59455 5.33911, 47.74079 4.2194, 46.56476 2.85529, 45.56399 2.04576, 44.06815 1.05283, 43.13597 0.2922, 42.04157 -0.91916, 41.81095 -1.44647, 41.58513 -1.68325, 40.88477 -2.08255, 40.63785 -2.49979, 40.26304 -2.57309, 40.12119 -3.27768, 39.80006 -3.68116, 39.60489 -4.34653, 39.20222 -4.67677, 38.74054 -5.90895, 38.79977 -6.47566, 39.44 -6.84, 39.47 -7.1, 39.19469 -7.7039, 39.25203 -8.00781, 39.18652 -8.48551, 39.53574 -9.11237, 39.9496 -10.0984, 40.31659 -10.3171, 40.31659 -10.3171, 40.47839 -10.76544, 40.43725 -11.76171, 40.56081 -12.63918, 40.59962 -14.20198, 40.77548 -14.69176, 40.47725 -15.40629, 40.08926 -16.10077, 39.45256 -16.72089, 38.53835 -17.10102, 37.41113 -17.58637, 36.28128 -18.65969, 35.8965 -18.84226, 35.1984 -19.55281, 34.78638 -19.78401, 34.70189 -20.49704, 35.17613 -21.25436, 35.37343 -21.84084, 35.38585 -22.14, 35.56255 -22.09, 35.53393 -23.07079, 35.37177 -23.53536, 35.60747 -23.70656, 35.45875 -24.12261, 35.04073 -24.47835, 34.21582 -24.81631, 33.01321 -25.35757, 32.57463 -25.72732, 32.66036 -26.14858, 32.91596 -26.21587, 32.83012 -26.74219, 32.58026 -27.47016, 32.46213 -28.30101, 32.20339 -28.7524, 31.521 -29.25739, 31.32556 -29.40198, 30.90176 -29.90996, 30.62281 -30.42378, 30.05572 -31.14027, 28.92555 -32.17204, 28.21976 -32.77195, 27.46461 -33.22696, 26.41945 -33.61495, 25.90966 -33.66704, 25.78063 -33.94465, 25.17286 -33.79685, 24.67785 -33.98718, 23.59404 -33.79447, 22.98819 -33.91643, 22.57416 -33.86408, 21.5428 -34.25884, 20.68905 -34.41718, 20.07126 -34.79514, 19.61641 -34.81917, 19.19328 -34.4626, 18.85531 -34.44431, 18.42464 -33.99787, 18.37741 -34.13652, 18.2445 -33.86775, 18.25008 -33.28143, 17.92519 -32.61129, 18.24791 -32.42913, 18.22176 -31.66163, 17.56692 -30.72572, 17.06442 -29.87864, 17.06292 -29.87595, 16.34498 -28.57671, 15.60182 -27.82125, 15.21047 -27.09096, 14.98971 -26.11737, 14.74321 -25.39292, 14.40814 -23.85301, 14.38572 -22.65665, 14.25771 -22.11121, 13.86864 -21.69904, 13.3525 -20.87283, 12.82685 -19.67317, 12.60856 -19.04535, 11.79492 -18.06913, 11.7342 -17.30189, 11.6401 -16.67314, 11.77854 -15.79382, 12.12358 -14.87832, 12.17562 -14.44914, 12.5001 -13.5477, 12.73848 -13.13791, 13.31291 -12.48363, 13.63372 -12.03864, 13.73873 -11.29786, 13.68638 -10.73108, 13.38733 -10.37358, 13.12099 -9.7669, 12.87537 -9.16693, 12.92906 -8.95909, 13.23643 -8.56263, 12.93304 -7.59654, 12.7283 -6.92712, 12.22735 -6.29445, 12.32243 -6.10009, 12.18234 -5.78993, 11.91496 -5.03799, 11.09377 -3.97883, 10.06614 -2.96948, 9.40525 -2.14431, 8.798 -1.1113, 8.83009 -0.77907, 9.04842 -0.45935, 9.29135 0.26867, 9.49289 1.01012, 9.30561 1.16091, 9.64916 2.28387, 9.7952 3.0734, 9.40437 3.73453, 8.94812 3.90413, 8.74492 4.35222, 8.48882 4.49562, 8.50029 4.77198, 7.46211 4.41211, 7.0826 4.46469, 6.69807 4.24059, 5.89817 4.26245, 5.3628 4.88797, 5.03357 5.6118, 4.32561 6.27065, 3.57418 6.2583, 2.6917 6.25882, 1.86524 6.14216, 1.06012 5.92884, -0.50764 5.34347, -1.06362 5.00055, -1.96471 4.71046, -2.85613 4.99448, -3.31108 4.9843, -4.00882 5.17981, -4.64992 5.16826, -5.8345 4.9937, -6.52877 4.70509, -7.51894 4.33829, -7.71216 4.36457, -7.97411 4.35576, -9.00479 4.83242, -9.91342 5.59356, -10.76538 6.14071, -11.43878 6.78592)), ((50.20027 -16.00026, 49.86061 -15.41425, 49.67261 -15.7102, 49.86334 -16.45104, 49.77456 -16.87504, 49.49861 -17.10604, 49.43562 -17.95306, 49.04179 -19.11878, 48.54854 -20.49689, 47.93075 -22.3915, 47.54772 -23.78196, 47.09576 -24.94163, 46.28248 -25.17846, 45.40951 -25.60143, 44.83357 -25.3461, 44.03972 -24.98835, 43.76377 -24.46068, 43.69778 -23.57412, 43.34565 -22.7769, 43.25419 -22.05741, 43.4333 -21.33648, 43.89368 -21.16331, 43.89637 -20.83046, 44.37433 -20.07237, 44.4644 -19.43545, 44.23242 -18.96199, 44.04298 -18.33139, 43.96308 -17.40994, 44.31247 -16.8505, 44.44652 -16.21622, 44.94494 -16.17937, 45.50273 -15.97437, 45.87299 -15.79345, 46.31224 -15.78002, 46.88218 -15.21018, 47.70513 -14.5943, 48.00521 -14.09123, 47.86905 -13.66387, 48.29383 -13.78407, 48.84506 -13.08917, 48.86351 -12.48787, 49.19465 -12.04056, 49.54352 -12.46983, 49.80898 -12.89528, 50.05651 -13.55576, 50.21743 -14.75879, 50.47654 -15.22651, 50.37711 -15.70607, 50.20027 -16.00026)))
というようになってしまうので方法を変える
continents = world.dissolve(
by='CONTINENT',
aggfunc={
'POP_EST': 'sum',
'GDP_MD': 'sum'
}
).reset_index()
continents[['CONTINENT','POP_EST','GDP_MD']]
としたが
CONTINENT POP_EST GDP_MD 0 Africa 1.306370e+09 2455514 1 Antarctica 4.490000e+03 898 2 Asia 4.550277e+09 32725478 3 Europe 7.454125e+08 21587850 4 North America 5.837560e+08 25075988 5 Oceania 4.120487e+07 1647113 6 Seven seas (open ocean) 1.400000e+02 16 7 South America 4.270667e+08 3852015
となって geometry が無くなっている
計後に列を選び直したときに geometry 列を外してしまい、ただの DataFrame になったからです。geometry が無いと GeoDataFrame ではなくなるので地理情報が消えたように見える
これだと使えないので別の方法にする
GPTで調べたら
pandas の表示設定で抑える(geometryはそのまま)
Shapelyオブジェクトは文字列化されると長い座標列が出ますが、
pd.set_option を調整すると途中で省略される
import pandas as pd
pd.set_option("display.max_colwidth", 80) # 長さ制限
continents.head()
とすれば
これなら geometry は Shapely のまま保持され、
計算や可視化にもそのまま使える
CONTINENT geometry POP_EST GDP_MD 0 Africa MULTIPOLYGON (((-11.43878 6.78592, -11.70819 6.8601, -12.4281 7.26294, -12.9... 1.306370e+09 2455514 1 Antarctica MULTIPOLYGON (((-61.13898 -79.98137, -60.61012 -79.62868, -59.57209 -80.0401... 4.490000e+03 898 2 Asia MULTIPOLYGON (((48.67923 14.0032, 48.23895 13.94809, 47.93891 14.00723, 47.3... 4.550277e+09 32725478 3 Europe MULTIPOLYGON (((-53.55484 2.3349, -53.77852 2.3767, -54.08806 2.10556, -54.5... 7.454125e+08 21587850 4 North America MULTIPOLYGON (((-155.22217 19.23972, -155.54211 19.08348, -155.68817 18.9161... 5.837560e+08 25075988