【Python】Twitterを操作する⑦ -トレンド取得

Twitterのデータを使って分析するにあたって、トレンドを把握することは非常に重要です。

今回は、TwitterのAPIを使ってPythonでリアルタイムなツイートのトレンドを取得する方法を紹介します。

事前準備

Twitter APIの利用には、Twitter Developersに登録している必要があります。まだ登録されていない方は、以下記事を参考に登録&プロジェクトの作成を済ませてください。

https://www.learning-nao.com/?p=1948

WOEID

WOEIDはWhere On Earth IDentifierのことで、世界の国、都市に一意に振られたIDです。Twitter APIではこのWOEIDを利用して、特定の地域のトレンドを取得することができます。

WOEIDは世界中のどの都市にも割り当てられているわけではありません。

日本では以下の都市に割り振られています。

都市WOEID
千葉1117034
福岡1117099
浜松1117155
広島1117227
川崎1117502
北九州1110809
神戸1117545
熊本1117605
京都15015372
名古屋1117817
新潟1117881
岡山90036018
沖縄2345896
大阪15015370
相模原1118072
埼玉1116753
札幌1118108
仙台1118129
高松1118285
東京1118370
横浜1118550
日本23424856

日本でのトレンドが知りたい場合は上記のWOEIDを指定することで各地域のトレンドを取得することができます。

また、世界各地のWOEIDは下記のサイトで調べることができます。

https://www.findmecity.com/

Pythonで実装

PythonでTwitterのトレンドを取得するには、tweepyを使用します。

認証

まずは Twitter Developersからキーを取得し、認証を行います。

import tweepy

API_Key     = "Your API key"
API_Sec     = "Your API Key Secret"
Token       = "Your Access Token"
Token_Sec   = "Your Access Token Secret"

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(API_Key, API_Sec)
auth.set_access_token(Token, Token_Sec)
api = tweepy.API(auth)

トレンド取得

トレンド取得にはAPI.get_place_trends()を用います。

API.get_place_trends(id *, exclude)

WOEIDを渡してあげればその地域のトレンドワードを含んだ情報が辞書で返ってきます(上位50件)。

#日本のWOEID
woeid = 23424856
#トレンド一覧取得
trends = api.get_place_trends(woeid)

以下のように返ってきます。

トレンド取得結果

実際にTwitterでトレンドを確認してみます。

Twitterアプリで見るトレンド

たしかに、同じ情報を取得できていることがわかります。

取得した情報をデータフレームに整える

次は、取得した情報をデータフレームに変換して内容を整理してみます。

API.get_place_trends()で取得したままでは、辞書が入れ子になっていたりと使いにくいです。なので、必要な情報を取り出してデータフレームにまとめます。

import pandas as pd
df = pd.DataFrame(trends[0]["trends"])

dfは以下のような内容になります。

取得した情報をデータフレームに変換した結果

トレンドワードだけでなくそのタイムラインのURLやツイート数といった情報も併せて取得できます。

コード全体

最後に今回のコード全体を出しておきます。

import tweepy

API_Key     = "Your API key"
API_Sec     = "Your API Key Secret"
Token       = "Your Access Token"
Token_Sec   = "Your Access Token Secret"

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(API_Key, API_Sec)
auth.set_access_token(Token, Token_Sec)
api = tweepy.API(auth)

#日本のWOEID
woeid = 23424856
#トレンド一覧取得
trends = api.get_place_trends(woeid)

#データフレームに変換
import pandas as pd
df = pd.DataFrame(trends[0]["trends"])

まとめ

Twitter APIを使ってPythonからトレンドワードを取得する方法を紹介しました。

現在のトレンドはどういったものなのかといった傾向を把握し、Twitterでのマーケティング等にも活用できる方法だと思うので、ツイート分析する際にはぜひ使ってみてください^^

ではでは👋