Twitterのツイート情報から生活リズムを把握しよう
僕が応援するフィロソフィーのダンスというアイドルグループの十束おとはさん(以下、おとはす)が以前、こんなツイートをしていました。
ツイッター徘徊しすぎてみんなの生活リズムが分かってきました(お昼にほっこりするツイート)
— 十束おとは🎮フィロソフィーのダンス (@ttk_philosophy) 2018年2月9日
このツイートを見てから、目には目を歯に歯を!的な精神でおとはすの生活リズムをツイート情報から定量的に把握できないかな、と思い生活リズムの把握を試みました。
※興味本位なものであり、決して悪用目的やプライバシーを侵害する事が目的ではありません。
ツイート投稿時間からの把握
まずはツイート投稿時間をプロットして、何時くらいのツイートが多いのか見てみようと思いました。
TwitterAPIでは一回のリクエストで200件のツイートが取得できるので、API制限上で取得可能な上限の3200件を取得するために16回同じ処理を回します。投稿時間はGETメソッドを用いてstatuses/user_timeline.jsonの"created_at"から取得可能です。
APIを使用するにあたりOAuth認証周りがめんどくさいのでRequests-OAuthlib というライブラリを使用しました。以下参考。
Python で Twitter API にアクセス - Qiita
from requests_oauthlib import OAuth1Session import json import config #対象者のTwitterID screen_name = "ttk_philosophy" def get_all_tweets(): #config.py に取得したキーなどを登録しておく CK = config.CONSUMER_KEY CS = config.CONSUMER_SECRET AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET # OAuth認証 twitter = OAuth1Session(CK, CS, AT, ATS) #timelineのURL url = "https://api.twitter.com/1.1/statuses/user_timeline.json" max_id = None timeCounter = [0 for i in range(24)] for i in range(16): #パラメータ指定 params = {"count" : 200 ,"screen_name": screen_name,"max_id":max_id} req = twitter.get(url, params = params) # レスポンスを確認 if req.status_code == 200: tweets = json.loads(req.text) max_id = tweets[-1]["id"]-1 for tweet in tweets: # TimeZoneをAsia/Tokyoにする time = tweet["created_at"].split() hour = int(time[3][0:2])+9 hour = hour -24 if hour >= 24 else hour timeCounter[hour]+=1 else: print ("Error: %d" % req.status_code) return timeCounter def plot_bar_chart(x,y): plt.title(screen_name+type) #タイトル plt.bar(x,y,color="gold",alpha=0.7) #カラー指定してbar plot plt.xticks(x) #x軸目盛 plt.ylim([0,600]) #y軸目盛 plt.xlabel('Hour') plt.ylabel('Tweets') plt.savefig(screen_name+".png") #画像として保存 if __name__ == '__main__': x_axis = range(24) y_axis = get_all_tweet() plot_bar_chart(x_axis,y_axis)
max_idを指定することで直前の処理で取得した最後のツイートの一個前のツイートから取得することが可能です。
取得した3200件のツイートを1時間毎のツイート投稿時間を棒グラフにしてみます。可視化ライブラリはmatplotlibを使用しました。
予想
おとはすさんはアイドルの中でも割と早寝早起きタイプだと思われます。以前、他のメンバーから「おとちゃんはゲーマーなのに早寝早起きだからLINE送っても早朝に返信が来る」的なことを聞いたことがあったので、深夜のツイートは少ないと予測しました。
結果
な、なんと規則正しい生活...!
深夜3時以降のツイートはほとんどなく、8時台から朝のツイートをし始めている!
アイドルでゲーマーという、なんとも不規則そうな生活を送っているのに早寝早起きをしているおとはすはエライ!
ツイート内容からの把握
おとはすさんのツイート内容には、就寝時と起床時の一貫したルールが存在します。
・起床時
╭◜◝ ͡ ◜◝╮/
— 十束おとは🎮フィロソフィーのダンス (@ttk_philosophy) 2018年6月6日
( •ω• )もくもくもくようびおはす〜
╰◟◞ ͜ ◟◞╯\
・就寝時
みんなは明日お休みかな?おとはすは明日お休みなのでたくさんエゴサしてから寝るゾ〜〜わいわいლ(^ω^ლ) ლ(^ω^ლ) おやはすლ(^ω^ლ) わいわい
— 十束おとは🎮フィロソフィーのダンス (@ttk_philosophy) 2018年4月29日
このように、朝一番のツイートには「おはす〜」、寝る前のツイートには「おやはす〜」という文字列が混在していることがわかります。
これらは、朝の挨拶の「おはよう」及び就寝時の挨拶の「おやすみ」に愛称である「おとはす」の"はす"の部分を結合したものでありマス!説明不要だと思いますが!
そのため、先ほど取得した3200件のツイートから「おはす」「おやはす」という文字列が混在するツイートをフィルタリングして、起床時間と就寝時間を見てみたいと思います。
ちなみに、午前中にツイートをせず昼を迎えた場合には「昼はす〜」という固有の挨拶も存在しますが、割愛しました。
結果
起床時と就寝時のツイートをプロットし、平均時間を算出しました。
・起床時のツイート時間
#起床ツイートの平均時間 10:31:47
・就寝時のツイート時間
#就寝ツイートの平均時間 0:54:17
以上の結果から、おとはすさんは、平均として10時31分47秒くらいに「おはす〜」を投稿し、0時54分17秒あたりに「おやはす〜」を投稿することが分かりました。
素晴らしく規則正しい生活、見習いたいです。
まとめ
興味本位で生活リズムを把握を試みましたが、予想通りと言えば予想通りの結果が現れました。
今回分析の対象とさせてくれた十束おとはさんには大変感謝しています。
ちなみにおとはすさんははてなブロガーなので、こちらもぜひ。
otohatotsuka.hatenablog.com