1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DuckDB + Jupyter + Kepler.gl で位置情報データの可視化を試す

Last updated at Posted at 2023-02-27

はじめに

今回は、社内で紹介されていたDuckDBに関する下記の記事が気になったので試してみました!

普段の業務ではSQLを使うことが多いので、DuckDBの特徴としてあげられている下記の点が特に気になりました。

  • Pandas・dplyrなどに比べ、高速(クエリの最適化を行う)、SQL(表現力や移植性)が使える、トランザクションが使える
  • ParquetやCSVの読み書き、Pands DataFrameの読み書き
    • ローカルだけではなく、HTTP(S)、S3からも取得できるようです

この記事ではDuckDBを使って緯度経度情報を持つCSVを読み込み、Kepler.glで可視化(位置情報を扱う会社の記事なので🌏!)しています。

DuckDBをインストール

今回はpython環境にインストールしてみました。
公式HPにあるように、PythonだけでなくRなど色々な環境でつかえるとのこと。

インストール方法は公式にある通り、下記でOKです。
なお、公式のGoogle Collab notebookのサンプルも公開されているので、そちらを参考にサクッと使うのもおすすめです!

pip install duckdb

今回は、Jupyterで使ってみたいので、こちらも公式ドキュメントを参考に下記のものもインストールします。

pip install notebook
pip install jupysql
pip install duckdb-engine
pip install pandas

加えて、kepler.glで可視化もしたいのでこちらもインストール。

pip install kepler.gl

使ってみる

Jupyter Notebookを開いて、必要なライブラリのインポート

import duckdb
import pandas as pd

%load_ext sql

jupysqlの設定

%config SqlMagic.autopandas = True # Pandasデータフレーム化
%config SqlMagic.feedback = False # フィードバック表示
%config SqlMagic.displaycon = False # 接続先情報表示

メモリ上にDBを構築してDuckDBに接続

%sql duckdb:///:memory:

CSVからテーブル作成

国土数値情報からダウンロードした東京都の郵便局データをQGISでCSV化したものを使いたいと思います。

# CSVを読み込んでテーブルを作成
%%sql
create table yuubin as
select *
from read_csv_auto('tokyo_yuubin.csv'); #郵便局データの読み込み
# 作成したテーブルに対してクエリを投げてみる
%%sql
select *
from yuubin;

↓結果
クエリ結果.png

次は住所に「渋谷」がつく郵便局を調べてみましょう!

%%sql
select *
from yuubin
where P30_006 like '渋谷%';

↓結果
渋谷抽出結果.png

Kepler.glで地図にプロットしてみる

読み込んだCSVの緯度経度(latitude, longitude)をもとにKepler.glをつかって地図にプロットしてみましょう!

まずはkepler.glをインポート

from keplergl import KeplerGl

続いて、先程作成したテーブルをデータフレームに格納します。

%%sql
df <<
select *
from yuubin;

最後に、そのデータフレームをkeplerで読み込みます。

map_yuubin = KeplerGl(height=400)
map_yuubin.add_data(data=df, name='yuubin')
map_yuubin

そうすると、下図のようにインタラクティブなマップが表示され、グリグリ動かせます。
色を変えたり、マーカーサイズを変更したりと操作可能です。
kepler.glで可視化.png

今回は本当にさわりの部分のみを試してみましたが、色々と活用できそうな気配なので研究していきたいと思います!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?