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は下記のサイトで調べることができます。
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でトレンドを確認してみます。
たしかに、同じ情報を取得できていることがわかります。
取得した情報をデータフレームに整える
次は、取得した情報をデータフレームに変換して内容を整理してみます。
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でのマーケティング等にも活用できる方法だと思うので、ツイート分析する際にはぜひ使ってみてください^^
ではでは👋