KeiSuuuuke

データエンジニアとして、データビジュアライゼーションの実践と普及に関する活動に熱中している。

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

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

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

では、はじめます。

 

Pythonスクレイピング

1.環境構築

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

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

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


0401.png

2.ライブラリ導入

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

0402.png

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

Python


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を使い地震データを抽出します。

 

>|Python|
#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ファイルに出力します。

 

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

FineReportダウンロード

 

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

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

FineReportデザイナ

これからデータセットを作ります。
データセットパネルで「ファイルデータセット」を選択します。

 

FineReportファイルデータセット

 

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

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

FineReportデータセット

 

2.ヒートマップを作成

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

 

FineReportダッシュボードモード

 

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

 

FineReport地図



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


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

FineReportグラフ設定




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

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

FineReportグラフ作成

 

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

 

FineReportヒートマップ

 

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

FineReport拡張グラフ




FineReport拡張地図



 

以上です。

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

 

本記事はQiitaにも掲載されました!

qiita.com