Pythonを使ってツイートをグラフにしてみよう!(月によって違いはあるのか?編)
こんにちは。ひと(@hito_waft)です。
前回自分のツイートから単語を抜き出して、簡単にグラフ化する方法を紹介しました。
前回は全ての期間を対象にグラフを作りましたが、今回は月によって単語の出現頻度に変化があるのか調べてみたいと思います。今回使うライブラリはpandas、numpy、matplotlibの三つです。なければpip3 installしておいてください。
(2017/4/12:追記あり)
今回作るグラフの例
こちらをご覧ください。
私が愛してやまない[Alexandros]の川上洋平さんについて言及したツイートの数を、月毎に平均したグラフです。6月から8月にかけてツイートが増えていることがわかります。これはたぶん、夏フェスなどでメディアへの露出が増え、それを見てかっこいいかっこいいとわめいていたのだと思います。
このように、全期間で作ったグラフだけ見ていてもわかりにくい季節の傾向などが可視化できるようになります。使い方はあなた次第。
早速コードを見てみましょう
とりあえず使って見る人向け手順
- 13行目の"/hoge/tweets.csv"となってるところを、自分が保存した全ツイート履歴のCSVファイルのパスに書き換えます。
- 続いて20行目にキーワードを入れます。前回はいくつか同時にグラフを出すことができましたが、今回はややこしいので一度に一つだけ。{"label":"keyword"}の形式でlabelの所には凡例に出す名前を入れます。ここは文字化けするのでローマ字で。keywordにはツイートから抜き出したい単語を入れます。表記揺れ(猫、ネコ、ねこ等)は|(縦棒)で区切って入力します。例では"洋平|ようぺ"となっていますね。
そして実行するとグラフが出ます。色々キーワードを変えて遊んでみましょう。
もう少し詳しく解説
In[3]ブロックまではほぼ前回の記事と同じなので割愛します。気になったら前の記事を参照してください。
In[4]ではまずgraghという名の空リストを作っています。ここにグラフ用のデータを入れていきます。
forループでは、データフレームのインデックスの中で1月なら1月のデータだけ(2010-01,2011-01,2012-01...)を抜き出してmean()で平均を出し、graphリストに追加しています。それを1月から12月まで12回繰り返しています。
これでデータはできましたが、リストのままではグラフにできないようなので、これをpandasのデータフレームに直しておきます。ついでに簡易なラベル(1〜12)を付けています。
そして棒グラフでプロット。kind="bar"の所を"line"に変えれば折れ線グラフになったりします。このグラフの設定は色々細かくできるようですが、私はあんまり調べてないので興味のある人は自分で調べて試してみてください。
追記:コメントアウトしてある部分を外すと、キーワードを含むツイートそのものを出力するようにしています。数が多いと省略されますが、雰囲気くらいはつかめます。
おまけ:こんな可愛い星空みたいなグラフもできました。一つ一つの星は、実はかなりネガティブな言葉をツイートした数ですが…笑