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