Edited at

【超簡単~】10分間でPython+FineReportで地震ヒートマップを作成

前回はExcelでハリケーンの進路を可視化でアメリカ2017年の超大型ハリケーン「イルマ」の進路を、Excelで描きました。Excelは簡単なグラフの作成がいいですが、複雑なタイプとなると手順の数が多いです。

今回はPythonでWebスクレイピングして、抽出した地震データをFineReportでヒートマップに作成します。10分間ぐらいかかって、超簡単だと思います。

FineReport【2019年】データ分析・可視化に本気でおすすめのツール30選(ノーコード型ツール含め)に紹介したものです。)

では、はじめます。


Pythonでスクレイピング


1.環境構築

ここはAnacondaでPythonの環境を構築しました。具体的なインストール方法は調べるといろいろありますので、ここは省きします。

(Qiitaの記事Anaconda で Python 環境をインストールするをご参考にしてもいいです。)

AnacondaでPython をインストールした場合、Jupyter Notebook が Python と同時にインストールされています。コマンドプロンプトでJupyter Notebook を起動します。


2.ライブラリ導入

Jupyter Notebookのホームページで「New」ボタン ⇒「Python3」を選択し、ノートブックを作成します。

requests、Beautifulsoap4、pandasをインポートします。

requests:HTTPリクエストを作成する

BeautifulSoup:htmlファイルから目的のデータを抽出する

pandas:データ操作によく用いられるパッケージ。ここでは抽出したデータをCSVへのエクスポートのために使う


3.Webスクレイピング

下記のURLから、USGS(アメリカ地質調査所)の提供した世界中の地震データ(1999~2019年)をスクレイピングします。アメリカ地質調査所はアメリカ内に重点を置くので、アメリカ以外の国の場合、規模が大きな地震のみを含みます。

http://ditu.92cha.com/dizhen.php?page=1&dizhen_ly=usa&dizhen_zjs=1&dizhen_zje=10&dizhen_riqis=1999-07-11&dizhen_riqie=2019-07-11

BeautifulSoupを使い地震データを抽出します。


#htmlからページ1~3のデータを抽出する
for i in range(1,3):
url = 'http://ditu.92cha.com/dizhen.php?page={}&dizhen_ly=usa&dizhen_zjs=1&dizhen_zje=10&dizhen_riqis=1999-07-11&dizhen_riqie=2019-07-11'.format(i)
page = requests.get(url)
soup = BeautifulSoap(page.content,'lxml')
tb = soup.find_all('td',class_='text-center')
for i in tb:
b.append(i.string)

データを区切って列名を指定し、Excelファイルに出力します。


i in range(0,len(b),5):
sj.append(b(i))

dataframe = pd.DataFrame({'time':sj,'magnitude':zj,'longitude':jd,'latitude':wd,'depth':sd})

dataframe.to _excel("test.xls",index=False,sep!=',')

出力したデータは以下の通り:


FineReportで地震ヒートマップを作成


1.Excelデータをインポート

FineReportを公式サイトからダウンロードし、インストールします。(個人体験版の試用期限が無制限。インストール方法が申し込み後のダウンロード画面にあるので、ここでは省きます。)

ExcelファイルをFineReportのインストール先C:\FineReport_10.0\webapps\webroot\WEB-INF\reportletsに置きます。

FineReportデザイナを開くと、左上のテンプレート一覧に先のExcelファイルがあります。

これからデータセットを作ります。

データセットパネルで「ファイルデータセット」を選択します。

以下に示すように、Excelファイルからデータセットを作成します。

プレビューして、データセットは以下の通り:


2.ヒートマップを作成

ダッシュボードを新規作成し、ツールバーからヒートマップを追加します。

「編集」ボタンをクリックし、右側に地図のポイントとGISレイヤを設定します。

「データ」で地図のデータを設定します。

データソースは上記のデータセットを選択し、経度、緯度、エリア名、系列を以下のように設定します。

ここまでヒートマップの作成がほぼ終わりましたが、見た目をきれいにするために、スタイルも調整します。

凡例は既定でグラデーションとなりますが、場合によって最大値、最小値などを変更できます。

では、完了したヒートマップを以下に示します。

また、拡張グラフの地球を選択し、上記のように設定すれば、以下の効果が出できます。かっこいいじゃないか?



以上です。

ぜひやってみてください!

【2019年】データ分析・可視化に本気でおすすめのツール30選(ノーコード型ツール含め)で紹介したほかのツールも使いやすいですし、必要によって利用してみてください!