ひとメモ

Pythonとか株とか

Pythonで自分のツイートをグラフにして分析してみよう!(改訂版)

 こんにちは、彼氏いない歴9年のひと(@hito_waft)です。

以前こんな記事を書きました。 

hwhw.hatenablog.com

出てくるグラフは同じなんですが、もっといい感じのプログラムで簡単にツイートをグラフにできるようになったので記事にしておきます。

 

この記事を読んでできること

f:id:hwhw:20170330020229p:image

 上のグラフを見てください。私はロックバンドのサカナクションと[Alexandros]が好きなのですが、それぞれのボーカル、山口一郎さんと世界一かっこいい川上洋平さんについてツイートした回数を月ごとの集計でグラフにしたものです。(名前が入ってるツイートだけ)

 2011年の9月頃からサカナの一郎さんのファンになり、2012年の9月頃から[Alexandros]の洋平さんのファンになり、その後は完全に[Alexandros]派になった様子が見て取れます。

 大きな波が来てるのはたぶんライブに行った時か何かでしょう。

こんな感じのグラフを簡単に作ることができます。ただTwitterの過去ログを眺めるだけより楽しいよ!

 

前提

Python実行環境は整っているものとします。pandasとmatplotlibがないならインストールしておいてください。

 あらかじめ全ツイート履歴をダウンロードして解凍しておいてください。そのうちのCSVファイルを使います。

 

では早速コードを見てみましょう

gist.github.com

 すぐ使う人向け、使い方解説

12行目のhoge/tweets.csvとなってるところを自分が保存したツイート履歴のCSVファイルのパスに置き換えます。

19行目では{"key1":"value1", "key2":"value2", ...}の形式で、ツイートから抜き出したい単語を指定します。keyのところにはグラフの凡例に出す名前を入れます。※日本語だと文字化けするのでローマ字で。valueのところには抜き出したい単語そのものを入れます。ここでは日本語で大丈夫。表記揺れがあるものを同時に抜き出したい場合、|(パイプ)で区切ります。猫、ネコ、ねこ等を一緒に抜き出せます。(例では洋平|ようぺ)

 そして実行!するとグラフが出てきます。色々言葉を変えて楽しみましょう。

 

詳しく解説

In[1]のブロックでは使うライブラリをインポートしています。

 

In[2]ではCSVファイルを読み込んでいます。その際parse_dates= オプションでタイムスタンプを日時情報として扱えるようにしています。

次の行でタイムスタンプをデータフレームのインデックスにし、その次の行でツイートした内容が入っている"text"以外の列(個々のツイートのID等)をなくしています。この段階ではツイート内容にタイムスタンプインデックスがついただけのデータフレームになっています。

 

In[3]ではディクショナリ形式でキーワードを指定しています。for文ではその指定したキーワードをitemsメソッドで同時に取得し、keyを列の名前としてデータフレームに列を追加しています。その中身はvalueで指定したキーワードがtextに含まれるか含まれないかの真理値シリーズです。

ここまできたら、ツイートの内容は邪魔になるので(残っていると文字列なのでsumできない)dropメソッドで落としておきます。axis=1というのは列を扱うというオプションです。指定しなければ行(axis=0)に対して操作が行われます。

 

In[4]ではインデックスにしたタイムスタンプを月毎にまとめ、それぞれの列の値も合計しています。真理値はTrueが1、Falseが0として扱われるのでそのままsumメソッドで合計できます。そしてプロット。グラフができました。やったね。

 

 

全部この本(Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理)を読んでできるようになりました。

Amazonではそんなに評価高くなかったので、どうかなーと思ったのですが、めちゃめちゃ役に立ちました。pandasの作者さんが書いたそうな。pandas愛を感じます。Twitterのデータ取得は認証がいるようになったので、できませんでしたが、それ以外は特に問題なく動きました。

こういう本を一冊通読しておくのは自分の能力の底上げになりますね。情報の一つ一つはググれば出てくるかもしれませんが、それで行ったり来たりする時間の無駄を考えると、読んで良かったなと思います。

今まで入れるだけ入れてたけど使い方がよくわからなかった、IPythonやjupyter notebookをこの本を見てから使うようになったのですが、もうね、めっっっっっちゃ便利です。特に私のように試行錯誤を繰り返す初心者には心強い味方になってくれるでしょう。みんなも使うといいよ。