【要約】アメダスの観測所データを使ってデータアナリストごっこしてみる [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者は、気象庁が公開しているアメダスの観測所データを、より効率的に分析したいと考えた。JSON形式のままでは、特定の条件に基づいた複雑な検索や集計が困難である。具体的には以下の課題があった。
- ・JSON構造のままでは、緯度・経度などの数値計算がしにくい。
- ・観測可能な項目(elems)が文字列として格納されており、検索性が低い。
- ・特定の属性(空港名など)の抽出に手間がかかる。
// Approach
筆者は、Pythonを用いてJSONデータをパースし、SQLite3へ格納するETL処理を実装した。データの構造化と検索性の向上を目的として、以下の手順を踏んでいる。
- ・
curlを用いて気象庁のJSONデータをローカルに取得する。 - ・Pythonの
jsonモジュールでデータを読み込み、緯度・経度をfloat型へ変換する。 - ・
elems文字列をパースし、各観測項目を個別のカラムに展開する。 - ・
INSERT ... ON CONFLICT構文を用い、データの更新(Upsert)を可能にする。
// Result
データのデータベース化により、SQLを用いた迅速なデータ探索が可能となった。筆者は、地理的な極値や特定の施設条件に基づくクエリを実行し、以下の知見を得た。
- ・日本国内の最北・最南・最東・最西の観測地点の特定。
- ・空港に併設された観測所のリストアップ。
- ・標高の極値(富士山や地下3mの地点)の抽出。
Senior Engineer Insight
> 本手法は、小規模なデータ探索やプロトタイピングにおいて極めて有効である。標準ライブラリのみで完結しており、環境構築のコストが低い。しかし、大規模なトラフィックやリアルタイム性が求められる現場では、以下の点に注意が必要だ。
- ・Pythonの逐次処理によるスループットの限界。
- ・エラーハンドリングの不足によるデータ整合性のリスク。
- ・SQLite3の書き込みロックによる並行性の制約。