逃げ恥の「あああ」絶叫ツイートの「あ」を数える(2016/11/22 22:48のみ)
はじめまして
僕自身は逃げ恥を見ていないのですが、twitter上で
11/22 22:48の「あ」の数を数えるプログラムを教えて
というツイートを見かけたので、データサイエンスの練習にと試しに調べてみました。
まず初めにpythonのモジュールのtweepyを用いて
日本の、「あああ」を含むツイートを、ある程度日時を絞って17400ほど取得しました。
# -*- coding: utf-8 -*- import tweepy import datetime import sys from pandas import DataFrame import pandas #twitterの設定 CONSUMER_KEY = "" CONSUMER_SECRET = "" auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) ACCESS_TOKEN = "" ACCESS_SECRET ="" auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) # text.translate(non_bmp_map) api = tweepy.API(auth) tweets = [] count = 0 for status in tweepy.Cursor(api.search, locale="ja", count = 100, q="あああ", max_id=801060320181506048).items(): status.created_at += datetime.timedelta(hours=9) tweets.append((status.created_at, status.text, status.id)) count+=1 if count%100 == 0: print(count) twframe = DataFrame(tweets) twframe.to_csv("aaatweets")
こうして抽出したデータをjupyter notebook上でpandasを使って操作して
import datetime import numpy as np import pandas as pd import matplotlib as plt import seaborn as sns from pandas import DataFrame, Series twframe = pd.read_csv("aaatweets2.csv") twframe = twframe[[1, 2]] twframe.columns = ["datetime", "text"] # それぞれの行のあの数を数えた列を追加 def a_count(text): count = str(text).count("あ") return count twframe["count"] = twframe["text"].apply(a_count) # datetime列がstr型なのでdatetime型に変換 def datecomverter(text): try: result = datetime.datetime.strptime(text, "%Y-%m-%d %H:%M:%S") return result except: return np.nan twframe["datetime"] = twframe["datetime"].apply(datecomverter) # 22:48分のツイートのみを抽出 twframe1 = twframe.dropna(how = "all") twframe1 = twframe1[datetime.datetime(2016, 11, 22, 22, 49, 00) > twframe1["datetime"]] twframe1 = twframe1[twframe1["datetime"] >= datetime.datetime(2016, 11, 22, 22, 48, 0)]
これで準備完了です
もう少し操作した後ですが、twframe1の中身はこうなっています
twframe1.info()で詳細を見てみましょう
<class 'pandas.core.frame.DataFrame'> Int64Index: 1408 entries, 1656 to 3063 Data columns (total 3 columns): datetime 1408 non-null datetime64[ns] text 1408 non-null object count 1408 non-null int64 dtypes: datetime64[ns](1), int64(1), object(1) memory usage: 44.0+ KB
これにtwframe1.sum()を適応するだけで
count 19579 dtype: int64
約20000の「あ」が一分間にtwitter上で叫ばれていたことが分かりました
TL上を見る限り「あ~~~~」とか「あぁぁぁぁぁぁ」とかもありましたがそれはカウントに入れていません
鍵垢も表示されないです
恐るべし逃げ恥……
おまけ:秒ごとに分類してツイート数のカーネル密度推定を行ってみました
追記:不等号が>のせいで0秒と59秒を含んでいなかったので修正しました