概要
GeoPandasはちょっとインストールが厄介なパッケージで、入門者がローカル環境に入れるのは結構しんどい(Windowsは特に)。でも、位置情報を扱うのに便利なパッケージなので、使いたい。紹介したい。でも、環境作成大変だし・・・ってのがありました。
それがGoogle Colabにプリインストールされて凄い便利になりました。実はちょっと前まで、GeoPandas以外のパーツまでそろっていたのに、GeoPandasは入っていない状態を見てなんでだろうな?と思っていたのですが、最近入ったようです。
その状況を疑問に思った私のツイートは6月9日に行われてるので、それからすぐ入ったっぽい。
https://twitter.com/OgawaHideyuki/status/1667107337851793408
ちょっとした使い方の紹介
GeoPandasの紹介もしておきます。GeoPandasは表形式のデータ+位置情報が扱えるライブラリです。pandasプラス位置情報という感じでいろいろ便利に扱えます。
https://geopandas.org/en/stable/index.html
ちょっと使ってみましょう。ここのコードをすべて実行したColabのリンクは次の通りです。
https://colab.research.google.com/drive/17dz-gePQcF9mj9TvWShoI5Z-HcoK-Mw7?usp=sharing
まず、サンプルデータを持つライブラリgeodatasetsと位置情報の可視化のためにmapclassifyというライブラリをインストールします。
!pip install geodatasets #位置情報のサンプルデータ https://github.com/geopandas/geodatasets
!pip install mapclassify # 可視化ツール https://github.com/pysal/mapclassify
次にライブラリをインポートします。pandas同様、データを扱うのも容易なことを紹介するために、可視化ライブラリplotly expressも用います。
import geopandas as gpd
from geodatasets import data, get_path
import plotly.express as px #データ可視化ツール
サンプルデータを全部確認してみましょう。
print(data)
次のような感じで出力されます。
{'geoda': {'airbnb': {'url': 'https://geodacenter.github.io/data-and-lab//data/airbnb.zip', 'license': 'NA', 'attribution': 'Center for Spatial Data Science, University of Chicago', 'name': 'geoda.airbnb', 'description': 'Airbnb rentals, socioeconomics, and crime in Chicago', 'geometry_type': 'Polygon', 'nrows': 77, 'ncols': 21, 'details': 'https://geodacenter.github.io/data-and-lab//airbnb/', 'hash': 'a2ab1e3f938226d287dd76cde18c00e2d3a260640dd826da7131827d9e76c824', 'filename': 'airbnb.zip'}, 'atlanta': {'url': 'https://geodacenter.github.io/data-and-lab//data/atlanta_hom.zip', 'license': 'NA', 'attribution': 'Center for Spa
最初にあるair bnbのデータを読み込みます。データの詳細はリンク先を参照ください。次のような77行21列のデータが表示されます。
bnb = gpd.read_file(get_path('geoda airbnb'))
bnb
レイティングと犯罪数を散布図でプロットしました。
fig = px.scatter(bnb, x='num_crimes', y='rev_rating')
fig.show()
次にGeoDataFrameのexploreメソッドを使って、コロプレス図を作成します。コロプレス図に使いたい列名を渡すだけです。簡単。
bnb.explore('rev_rating')
ツールチップが全部見えて嫌な場合は、引数tooltipに表示したい列名を渡せば、見たいものだけ見られます。
bnb.explore('rev_rating', tooltip=['response_r', 'accept_r', 'rev_rating', 'price_pp'])
まとめ
というわけで、こんな感じで位置情報が扱えるGeoPandasがColabから簡単に使えるようになった話でした。