pytrendsのインストール方法【グーグル(検索)トレンド】

Pytrendsのインストール方法【グーグル(検索)トレンド】 プログラミング

Google Trendsの分析をプログラムでやりたい人向けの記事です。
プログラムの言語は、Pythonです。

データ分析をするなら、Pythonですね。
私は、PHPでWebシステムを開発します。
しかし、データ分析はPythonで行います。

Python使いでない方は、今回をきっかけにPythonを使ってはどうでしょう?
Anacondaという開発環境をインストールすれば、簡単にPythonを使えます。
Anacondaは、WindowsにもMacにもインストール可能です。

さて、この記事の本題はpytrendsのインストールです。
pytrendsは、Pythonのライブラリです。

本記事の内容

  • pytrendsのインストール
  • pytrendsの動作確認

上記の内容に沿っていけば、pytrendsをインストールできるようになります。
ただ、途中でハマるポイントがあります。

しかし、そのハマりポイントの解決方法を詳しく説明しています。
だから、安心して読み進めてください。

pytrendsのインストール

pytrendsとは?

公式ページ
https://pypi.org/project/pytrends/

Google TrendsへアクセスするPythonのライブラリです。
2020年5月21日時点では、pytrends 4.7.2が最新バージョンとなります。
このライブラリを利用すれば、簡単にGoogle Trendsのデータを取得できます。

ただし、pytrendsはGoogleには公認されていません。
非公式ツールです。

そのため、いきなり動かなくなるリスクはあります。
一般的には、このようなライブラリはそういうものですね。
だから、割り切って利用しましょう。

インストール・動作の前提条件は以下。

  • Pythonのバージョンが、Python2系なら2.7以上 or Python3系なら3.3以上
  • Requests, lxml, Pandasモジュール

Pythonのバージョン確認

次のコードを実行すれば、バージョンが確認可能。

import sys

print(sys.version)

実行。
ちなみに、私はSpyderをPythonの開発環境として利用しています。

3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]

3.7.3なので、Pythonのバージョンは問題ありません。

必要モジュールの確認

Requests

Requestsは、HTTPアクセスを行うライブラリです。Google TrendsへHTTPアクセスするために必要なのでしょう。

確認方法は、Pythonのバージョン確認を同じようにコードを実行します。
実際にコードを動かしてみることが、簡単で確実な確認方法です。

import requests

r = requests.get("https://example.com/")
print(r.text)

「Example Domain」のhtmlソースが取得できれば、Requestsは利用可能です。
エラーが出る場合は、インストールから試しましょう。

pip install requests

lxml

lxmlは、xmlやhtmlを扱うライブラリ。
取得したデータ(xmlやhtml)から値を抜き出すために必要なのでしょう。

Requestsモジュールの動作確認で利用したコードに追記します。
アクセス先ページのタイトルを取得して表示するプログラムです。

import requests
import lxml.html

r = requests.get("https://example.com/")
html = lxml.html.fromstring(r.text)
print(html.find(".//title").text)

「Example Domain」と表示されれば、lxmlは利用可能です。
エラーが出る場合は、インストールから試しましょう。

pip install lxml

Pandas

Pandasは、データを効率的に解析するためのライブラリです。 
データ分析結果を表示するグラフを作成することも可能です。

pytrendsでは、グラフ出力が機能として存在します。
その機能のために、Pandasが利用されているということでしょうか?

Pandasには、バージョン確認用の関数が用意されています。
次は、Pandasのバージョンを表示するプログラムです。

import pandas as pd

print(pd.__version__)

実行。

0.24.2

上記のようにバージョンが表示されれば、Pandasは利用可能です。
エラーが出る場合は、インストールから試しましょう。

pip install pandas

pytrendsのインストール

前提条件はクリアできていれば、後は簡単です。
pytrendsライブラリのインストール

pip install pytrends

次のように表示されれば、インストール成功です。

Successfully built pytrends
Installing collected packages: pytrends
Successfully installed pytrends-4.7.2

pytrendsの動作確認

次は、pytrendsの動作確認です。
以下のコードを実行します。

内容は、コメントに書いています。

# Pytrendsのモジュール読み込み
from pytrends.request import TrendReq

# Google Trend APIへ接続(続言語とタイムゾーンを指定)
pytrends = TrendReq(hl='ja-JP', tz=360)

# 転送データの作成(検索したいキーワード、期間、地域)
kw_list = ["Twitter"]
pytrends.build_payload(kw_list, timeframe='2010-01-01 2020-04-30', geo='JP')

# 時系列データ取得
df = pytrends.interest_over_time()

# 取得した時系列データをグラフ化
df.plot(figsize=(15, 3), lw=.7)

グラフが表示されれば、pytrendsの動作確認が完了です。
しかし、次のようなエラーが出る場合があります。

File "C:\anaconda\lib\site-packages\pytrends\request.py", line 13, in <module>    from pandas.io.json._normalize import nested_to_recordModuleNotFoundError: No module named 'pandas.io.json._normalize'

このエラーを調べれば、結構頻繁に出ているようです。
エラーの内容は、request.py(Requestsライブラリ)上でのモジュール読み込みエラーです。
「pandas.io.json._normalize」というモジュールをインポートできていません。

解決方法は、「pandas.io.json._normalize」を「pandas.io.json.normalize」に変更するだけです。
request.py上の13行目を修正します。

normalizeの前にある「_」アンダースペースを削除します。
そして、request.pyを保存。

再度、pytrendsの動作確認コードを実行します。
実行後、次のようなグラフが出れば、成功です。

2010年1月1日から2020年4月30日の間における「Twitter」の検索トレンド(日本)

2010年1月1日から2020年4月30日の間における「Twitter」の検索トレンド(日本)が表示されています。
上手く動作しているようです。

まとめ

pytrendsは、Pythonのライブラリです。
pytrendsを利用すれば、Google Trendsのデータにアクセスできます。

この記事では、pytrendsのインストール方法を説明してきました。
説明通りに進めていけば、インストールは成功します。

そして、pytrendsの動作確認のために、「Twitter」の検索トレンドをグラフで出力しました。
このグラフが、興味深いものです。
pytrends云々は関係なく。

Twitterは、2011年にピークを迎えています。
2011年の初めの頃ですね。

それ以降は、徐々に検索される回数は減っています。
それだけTwitterが浸透したと言えるのでしょう。

しかし、2020年の3月ぐらいから盛り返しています。
これは、コロナの影響だと思います。

多くの人々が、自粛のために家で過ごすことになりました。
そして、主に情報収集のためにTwitterを利用しようしたと思われます。
おそらく、新規ユーザが多く増えているのでしょう。

このことがキッカケとなり、Twitterは第二のピークを迎えています。
今後、コロナの収束に伴い、このトレンドがどうなるのかが興味深いです。

タイトルとURLをコピーしました