タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

【フォロワー分析】ツイートを拡散してくれるファンをPythonで見つける

f:id:tadaken3:20180920185152p:plain こんにちは!
タダケン(@tadaken3)です。

SNS運用を勉強しているさなか、フォロワー数2万人のソーシャルメディアマーケターjigen_1(@Kloutter)さんの記事を読みました。

marketeer.jp

SNSマーケティングを考える上でさけてはとおれない口コミの仕組みなどが具体的に書かれており、大変勉強になりました。

jigen_1(@Kloutter)さんの記事によると自分のツイートを拡散してくれそうなファンには3つのパターンがあるそうです。

f:id:tadaken3:20180920154756p:plain 口コミ拡散のためにはコンテンツが1番、では2番は何に?|jigen_1さんが語るツイートが拡散する仕組みとは - marketeer(マーケティア)

今回は、自分のフォロワーさんの中からツイートを拡散してくれそうなファンをPythonをつかってリストアップする方法を解説します。

ツイートを拡散してくれそうなアカウント3パターン

詳細はぜひ元の記事を読んでいただければと思いますが、なぜこの3パターンがツイートを拡散してくれやすいのかというところだけ少し解説しておきます。

パターン①の「フォロー数が少な人」の場合、フォロー数が少ない分、自分のツイートがその人のタイムラインに表示される確率が高いです。また、フォロワーのエンゲージメントが高いのでリツイートされやすい傾向にあります。

パターン②の「ツイート数が多い人」は、いわゆるツイ廃と呼ばれる人たちです。Twitterの滞在時間が長く、躊躇なくリツイートをしてくれる傾向にあります。

パターン③の「インタレストグラフでつながっている人」の場合です。趣味でつながっているアカウントでフォロワーが多く、同じ趣味なのでエンゲージメントが高いのが特徴です。

これらの3パターンの条件に当てはまるアカウントをPythonを使ってリストアップするのが本記事の目的です。

Twitterのデータを分析するための下準備

ではさっそく分析の準備をしていきましょう

Pythonの実行環境は、Google Colaboratory(以下、Google Colab)を使います。Google Colabはブラウザ上で、Pythonを利用することができるので、ちょっとした分析などをするときに非常に便利です。

詳しくは本ブログのGoogle Colabの解説記事をご覧ください。

tadaken3.hatenablog.jp

今回、Twitterのデータを取得するために、Twitter APIを利用します。Twitter APIを利用するためには、Twitter Developerアカウントが必要です。以下の記事を参考にDeveloperアカウントの申請をしてみてください。

masatoshihanai.com

Pythonでフォロワーの情報を取得する

データ分析に必要なライブラリを使えるようにする

さて、それではTwitter APIを使って、フォロワーさんのデータを取得していきましょう。

まず、PythonでTwitterのAPIを操作するためにtweepyというライブラリをインストールします。

#TwitterのAPIを簡単に取り扱えるtweepyをインストール
!pip install tweepy

続いて、tweepyの他に必要なライブラリをimportしていきます。

#必要なライブラリをインポート
import time
import tweepy
import pandas as pd
from tqdm import tqdm

Twitter APIを利用するための認証情報をtweepyにセットしていきます。

#TwitterAPIを使うための必要な情報を記載
#各種キーは、api.twitter.comから取得してください
CONSUMER_KEY = "your consumer key" 
CONSUMER_SECRET = "your consumer secret"
ACCESS_TOKEN = "your access token"
ACCESS_TOKEN_SECRET = "your acess token secret"

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth ,wait_on_rate_limit = True)

これでTwitter APIからデータを取得する準備が整いました。

自分のフォロワーのリストを取得する

まずは自分のフォロワー一覧のデータを取得したいと思います。search_idに自分のアカウントIDを入力して、情報を取得していきます。

#まずはフォロワー一覧を取得したいと思います。
#search_idにフォロワーの情報を取得したいユーザーを指定します。

search_id = "tadaken3"

#Twitter API経由でフォロワーのIDを取得します。
followers_ids = tweepy.Cursor(api.followers_ids,
                                id = search_id,
                                cursor = -1).items()

#取得したフォロワーの情報をリストに保存していきます。
followers_list = []
for follower_id in followers_ids:
    followers_list.append(follower_id)

取得したフォロワーのリストと自分のフォロワー数が一致するか確認します。

#念の為フォロワー数と一致するか確認
print ("your followers:" + str(len(followers_list)))

f:id:tadaken3:20180920161621p:plain

フォロワーさんのプロフィール文、フォロワー数などの情報を取得していく

では、取得した自分のフォロワーのリストから、各フォロワーさんの情報を取得していきます。取得できる情報は以下の記事を参考にしてみてくださいな。

syncer.jp

今回は、分析に必要な以下の情報を取得して、表にまとめていきます。

  • Twitter ID
  • プロフィール文
  • フォロワー数
  • フォロー数
  • ツイート数
  • アカウント作成日
  • 鍵付きアカウントかどうか
#取得したフォロワーのリスト情報をもとに、各フォロワーのプロフィール情報やフォロワー数などの情報を取得します。
df = pd.DataFrame()

for follower in tqdm(followers_list):
  user = api.get_user(follower)  
  user_id     = user.screen_name
  description = user.description     #プロフィール文
  followers   = user.followers_count #フォロワー数
  friends     = user.friends_count   #フォロー数
  tweets      = user.statuses_count  #ツイート数
  created_at  = user.created_at      #アカウント作成日
  protected   = user.protected       #鍵付きアカウントかどうか
  
  data = pd.Series([user_id, 
                    description, 
                    followers, 
                    friends, 
                    tweets, 
                    created_at, 
                    protected])
  df = df.append(data, ignore_index=True)
  time.sleep(.26) #15分間で900ユーザー分のみのデータしか取得できないので簡易的にスリープして対応

  
#わかりやすいようにデータフレームにヘッダーを追加します。
df.columns = ['user_id', 
              'description', 
              'followers', 
              'friends',
              'tweets',
              'created_at',
              'protected']

実行すると、このような形でプログレスバーが進んでいき、ユーザーの情報を取得していきます。フォロワー数が多い方は少し時間がかかるかもしれません。

f:id:tadaken3:20180920162016p:plain

データの取得がおわったら、データの中身を確認します。

#データの確認
df.head()

f:id:tadaken3:20180920162031p:plain

無事にデータが取得できましたね。

ここでいったん、csvファイルに取得したデータを保存しておきましょう。

#ファイルを保存する
from google.colab import files

df.to_csv("follower_list.csv")
files.download("follower_list.csv")

条件に合わせてデータを抽出する

ここからが本題です。取得したフォロワーの情報から「自分のツイートを拡散してくれやすい人」を抽出してきましょう。

ひとまず、おさらいです。以下の3パターンですね。

  • パターン①:フォロー数が少ないアカウント(3〜300人ぐらい)
  • パターン②:ツイート数が多いアカウント(10000ツイート以上)
  • パターン③:インタレストグラフ(趣味)でつながっているアカウント

パターン①:フォロー数が少ないアカウント

まず「フォロー数が少ないユーザー(≒自分のツイートがタイムラインに表示される確率が高いユーザー)」を抽出していきます。

特定の条件に一致するデータを抽出する場合、pandasのqueryメソッドを使います。 またsort_value関数でデータの並び替えをすることもできます。

#パターン①:フォロ−数が少ないアカウントを抽出する
#queryでフォロ−数が3〜300人で、鍵付きじゃないアカウントを抽出
#さらにsort_valuesでフレンド数で照準に並び替える
df.query('3<friends<=300 and protected==0').sort_values(by=['friends'])

f:id:tadaken3:20180920162902p:plain

パターン②:ツイート数が多いアカウント

次に、「ツイート数が多いユーザー(≒ツイッターが好きでとにかくリツイートしてくれる可能性が高いユーザー)」を抽出していきます。 先ほどと同じようにqueryメソッドを使います。

#パターン②:ツイート数が1万以上のアカウント
df.query('tweets>=10000 and protected==0').sort_values(by=['tweets'],ascending=False)

f:id:tadaken3:20180920162914p:plain

パターン③:インタレストグラフ(趣味)でつながっているアカウント

最後の「インタレストグラフ(趣味)でつながっているユーザー」を抽出してみます。

str.containsをつかってプロフィールに特定の文字列が含まれているユーザーを抽出してみます。 例えば、プロフィールに「Python」が含まれているフォロワーさんをリストアップしてみます。

#パターン③:インタレストグラフが近いユーザー。
#str.containsでdescriptionで'Python'を含むユーザーを抽出

df.query('description.str.contains("Python")')

f:id:tadaken3:20180920162932p:plain

応用編:パターン①とパターン②の両方の条件に当てはまる場合

もちろん、これらを組み合わせてフォロワーさんをリストアップすることもできます。 例えば、パターン①とパターン②を組みあせて抽出した場合はこのようになります。

#パターン①とパターン②の組み合わせ
df.query('friends<=300 and tweets>=10000 and protected==0')

f:id:tadaken3:20180920162948p:plain

おまけ: サンプルコードを含むGoogle Clolabノートブック

今回、作成したGoogle Colabのノートブックはこちらに保存しています。サンプルコードはすべてノートブックに保存してますので、ぜひお試しください。

まとめ

今回は、Twitterで自分のツイートを拡散してくれそうなファンをPythonを活用してリストアップしてみました。

Pythonを使うとツイッターの分析もはかどりますね。

最後にあらためて「ツイートを拡散してくれそうなアカウント3パターン」をまとめます。

Point!!
  • フォロー数が少ないアカウント
  • ツイート数が多いアカウント
  • インタレストグラフでつながっているアカウント

最後に少し宣伝です

本ブログでは、Pythonやデータ分析に関するブログ記事を公開しております。もしよければ、Twitterアカウントをフォローもしくは、ブログの読者登録していただけるとうれしいです!

ぜひ、よろしくお願いいたします。