PytrendsとPlotlyを用いてコロナへの関心が強い国を可視化してみた

投稿者: | 2020年5月18日

タイトルの遠いpythonのライブラリであるpytrendsとplotlyを用いてコロナへの関心が強い国を可視化してみました。(githubにもコードを載せています)。COVIDでの検索数が多い国=コロナへの関心が強い国、と今回は決めてデータを取得、可視化してみたいと思います。
ちなみにpytrendsはGoogleトレンドの情報を引っ張てこれるライブラリで、plotlyはインタラクティブなかっこいいグラフを描写するライブラリです。地味に連携する際に面倒くさい部分があったので、備忘録的な感じで記録しておきます。

必要なライブラリをインポート

import pandas as pd
import numpy as np
import plotly
import plotly.express as px
from pytrends.request import TrendReq
from pycountry_convert import map_country_alpha2_to_country_alpha3 as pc

pycountry_convertはpytrendsのデータをplotryに描画する際に必要なライブラリです。これを用いて、pytrendsで吐き出される2文字の国コードを3文字に変換します。

pytrendsでCOVIDの検索数を取得

pytrend = TrendReq()
pytrend.build_payload(kw_list=["COVID"])
df = pytrend.interest_by_region(inc_geo_code=True)

pytrendsのデータをデータフレームにします。
kw_listには取得したいワードを入れてください。
pytrend.interest_by_regionのinc_geo_codeをTrueにすることで2文字の国コード(alpha2)も取得できるようになるので、plotlyで可視化するためにこちらも取得します。

pycountry_convertで2文字の国コード(alpha2)を3文字の国コード(alpha3)に変換する

ここが面倒くさいポイントで、plotlyでマッピングする際には2文字ではなく3文字の国コードが必要になるので、pycountry_convertのmap_country_alpha2_to_country_alpha3を用いて国コードを変換します。

alpha = pc()
df["ISO3"] = [alpha.get(code) for code in df["geoCode"]]

plotlyで可視化する

fig = px.choropleth(df, 
                    locations="ISO3",
                    color="COVID", 
                    hover_name="ISO3"
                    )
fig.show()

plotly

無事可視化できました。

まとめ

今回、注意しないといけないのはコロナというより「COVID」というワードに関心が強い国を可視化しているという点です。例えば日本人でしたら「コロナ」で検索してコロナについて調べるので、厳密にはコロナに関して関心の強い国を可視化したとはいえません。まぁ今回はpytrendsとplotlyの連携についてのデモみないな感じで…
今回コードは検索ワードを変えれば色々遊べるので、ぜひ試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です