GoogleColaboratoryでTwitterのデータ分析してみた

f:id:cyclemem:20180716235358j:plain

今日は久しぶりに技術ブログを書いていきます。今回は、Google Colaboratoryを利用して、ぼくのフォロワー200名を対象に、フォロー数とフォロワー数の散布図を描いてみました。

※先日この記事を読んで、GoogleDriveから環境構築無しでPythonが使えることがわかったので、実際にやってみました。

note.mu

今回やったこと

今回のチャレンジは全部で3つの目的のもと行っています。

  1. 自分のフォロワーの「フォロワー数」を確認する
  2. 自分のフォロワーの「フォロー数」と「フォロワー数」の関係を可視化する
  3. Google Colaboratory でAPIを試してみる

1,2については、どちらも知りたいのは、「自分のツイッターをフォローしてくれている人は、どんな人なのか」ということです。

例えばフォロワーがみんな、「フォロー数」はめちゃくちゃ多いけど、「フォロワー数」は大したことないと仮定すると、そんなに影響力がなかったり、そもそもフォローすること自体を目的にしているようなアカウントにフォローされていることになります。

3はこのツールでどこまで出来るのかが試してみたかったので、APIをいじってみたかったというのが主な理由です。どうも機械学習系のライブラリはすでに入っているらしく、しかもGPUが無料で利用できるということなので、この先いろいろと遊べそう。

やり方1:Google Colaboratory を準備する

これは最初の記事に書いてるので、簡単な説明に留めます。やり方はいたって簡単で、下記4ステップです。

1.Google Driveにログインする

2.「新規」>「その他」>「アプリを追加」を選択

f:id:cyclemem:20180716232338p:plain

f:id:cyclemem:20180716232356p:plain

3.検索窓にて「Google Colaboratory」と検索

f:id:cyclemem:20180716232410p:plain

4.「+接続」を選ぶf:id:cyclemem:20180716235358j:plain

これで準備完了です。実際に見てみましょう。 利用するときには、「新規」>「その他」>「Colaboratory」をクリックでファイルを作成します。

そして三角が横向きに出ている箇所があるので、そこにお馴染みHello Worldのプログラムを書いてみます。

msg = "Hello World"

print(msg)

すると結果がこんな感じで出てきます。これくらいなら誰でもできそうですね。

f:id:cyclemem:20180716232535p:plain

やり方2:Tweepyのセットアップ

まず標準ではGoogle ColaboratoryにTweepyが入っていないので、次のプログラムを実行しておきましょう。

!pip install tweepy

正直事前準備はこれくらいです。あとはAPI使ううえでTwitterに事前申請が必要なので、こちらを参照にやっておいてください。

qiita.com

やり方3:実際にコード書いてみる

今回使ったライブラリはTweepyとMatplotlibの2つだけ。 まずコードの全体像はこんな感じです。

自分のフォロワーのフォロー数、フォロワー数を取得する

やっていることは、次の4ステップ。

  1. TwitterAPIインスタンスを生成
  2. 自分のフォロワーのIDを取得
  3. それぞれのIDについて、フォロワー数、フォロー数を取得
  4. フォロワー数、フォロー数を用いて、ヒストグラムと散布図を描画

実際の結果はこんな感じで・・・・・・と言いたいところですが、なんだかんだでエラーを処理しているうちにAPIの実行回数が制限を超えてしまいました。データの読み取りは追記で行います。

さて割と簡単なコードだけでここまでできました。しかも全部GoogleDrive上で動く。 少し調べてみると、これスプレッドシートとの連携もできそうです。 もうちょっと何ができるか調べたいところですが、とりあえず今回はここまで。

改めて技術チュートリアルって、最初からそれを書くつもりでやらないとなかなか難しいですね。 多少きれいにしたやつが作れたら、noteで販売しようかな。

それでは、本日も最後までお付き合いいただきありがとうございました。

追記:結果出ました。

このあとダメ押しでもう一度実行したら出来ました。

f:id:cyclemem:20180717000357p:plain

で、お気づきの通り、1つしか出てきませんでした。 matplotlibは複数描画してくれと頼んだ場合、再描画してしまうので、前のものは消えてしまうようです。