前回は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年)をスクレイピングします。アメリカ地質調査所はアメリカ内に重点を置くので、アメリカ以外の国の場合、規模が大きな地震のみを含みます。
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選(ノーコード型ツール含め)で紹介したほかのツールも使いやすいですし、必要によって利用してみてください!