見出し画像

【Python(1)】Twitterでフォロワーさんのフォロワー数を分析してみよう('ω')ノ

こんにちは(@t_kun_kamakiri)

最近Twitter分析をしています。

本日は自身のTwitterのフォロワーさんが、どれだけフォロワー数をもっているのかをTwitterAPIを使って分析をしたいと思います。

TwitterAPIアクセスキーを設定

TwitterAPIを使ったTwitter情報の取得の記事はこちらに詳しく書いていますので是非ご覧ください。ほとんどが無料で見れるようにしています。

まずは、アクセスキーなどは個人情報みたいなものなので.envファイルを作成して隠しファイルに設定しておくのが安全ですね。

ちょっとごちゃごちゃファイルがありますが「.env」ファイルをjupyter labと同じ階層に置いておきます。

画像1

envファイルは↓このように書いておきます。
※SPREADSHEET_KEYは今回は使いません。

画像2

必要なライブラリをインポート

必要なライブラリをインポートします。

import tweepy
from dotenv import find_dotenv, load_dotenv
import os

次にenvファイル内の情報を取得してTwitterAPIが使えるように認証を行います。

env_file = find_dotenv()
load_dotenv(env_file)  # .envファイルを探して読み込む
CONSUMER_KEY = os.environ.get('CONSUMER_KEY')
CONSUMER_SECRET = os.environ.get('CONSUMER_SECRET')
ACCESS_KEY = os.environ.get('ACCESS_KEY')
ACCESS_KEY_SECRET = os.environ.get('ACCESS_KEY_SECRET')

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_KEY_SECRET)

api = tweepy.API(auth)

これで準備OKです。

Twitterのフォロワー数の出力

調べたいユーザーを辞書型でいくつか用意しておきます。

user_list = {
   'eco':'ally_of_earth',
   'kamakiri':'t_kun_kamakiri',
   'kousi':'mimikousi'
}
# アカウント名
acount = 'kamakiri'

僕はt_kun_kamakiriというTwitter IDなので
●キー:kamakiri
●値:t_kun_kamakiri
としておきます。

では、フォロワーの情報を取得していきます。

今回取得するのは、

●フォロワーid:user.id_str
●フォロワーのアカウント名:user.screen_name
●フォロワーの名前:user.name
●フォロワーのフォロワー数:user.followers_count
●フォロワーの自己紹介文:user.description

とします。

自己紹介文を取得するのは、フォロワーがどのような内容に興味を持っているのか、形態要素解析を使って分析を行うためです。※次回の記事で紹介します。

def follower_counts_func(acount):
   followers_list = []
   i = 0
   cursor = -1
   while cursor != 0:
       auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
       auth.set_access_token(ACCESS_KEY, ACCESS_KEY_SECRET)
       api = tweepy.API(auth, wait_on_rate_limit=True)
       itr = tweepy.Cursor(api.followers_ids, id=user_list[acount], cursor=cursor).pages()
       try:
           for follower_id in itr.next():
               try:
                   user = api.get_user(follower_id)
                   user_info = [user.id_str, user.screen_name, user.name, user.followers_count,user.description]
                   followers_list.append(user_info)
                   i = i +1
                   print(i, user_info)
               except tweepy.error.TweepError as e:
                   print(e.reason)
       except ConnectionError as e:
           print(e.reason)
       cursor = itr.next_cursor
   return followers_list
followers_list = follower_counts_func(acount)

一度にフォロワー情報の全てを取得できないため、TwitterAPIの制限を避けながらループをかけています。

実行すると以下のようなフォロワーの情報が出力されます。

画像3

データフレームにまとめる

上記で取得したデータはリスト型となっているのでpandasを使ってデータフレームにします。pandasを使えばExcelと同じようにデータの前処理が簡単に行えます。

pandasの使い方は公式ドキュメントを見て使い方を学びました。

では、データフレームにまとめてcsvファイルとして出力しましょう。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# データフレームの作成
df = pd.DataFrame(followers_list, columns=['id','screen_name','name','follower_counts','description'])
df.to_csv(f'{acount}_followers_list.csv') # csvファイルの保存

これでcsvファイルができました。

画像4

画像5

フォロワーの一覧がまるわかり('ω')ノ

フォロワーさんのフォロワー数を可視化してみよう

では、フォロワーさんのフォロワー数を可視化してみようと思います。
全てのフォロワーの分布を書くとよくわからなくなるので、

●フォロワー1000以下の分布
●フォロワー1000以上の分布

の2つのグラフを出力しようと思います('ω')ノ

# グラフの作成
plt.figure(figsize=(20,6))
sns.histplot(df[df['follower_counts']<=1000]['follower_counts'], binwidth=100)
plt.savefig(f'{acount}_followers_l1000.png')
plt.figure(figsize=(20,6))
sns.histplot(df[df['follower_counts']>=1000]['follower_counts'], binwidth=100)
plt.savefig(f'{acount}_followers_g1000.png')

これで画像ファイルが2つ出力されたと思います。

画像6

画像7

画像8

ちょっとフォントが小さいし、汚いグラフで申し訳ありません(笑)
とりあえず出力できました。

やっぱり、フォロワーは100台の人が多く、1000人を超えている人は少ないのだなーって思いました。

次回

次回は、フォロワーさんの自己紹介文の単語を分析して「どのような名詞が自己紹介に書かれているのか」を分析したいと思います。
↓こんな感じで、どんな単語が使われてるかなーって眺めます。

画像9

このようにすると、どのようなことに興味があるフォロワーさんが自分をフォローしてくれたのかがわかるわけです。

フォロワーさんにとって興味ある内容でツイートする方がウケはずで、その興味ある内容を知っているのと知らないのとではツイートの内容に差が出てくると考えています。

↓次回の記事

引き続き、Twitterマーケディング頑張ります('ω')ノ

Python独習が僕の参考書なので紹介しておきます。
細かい文法の知識は↓こちらを辞書のようにして使っています。

Twitter➡@t_kun_kamakiri
Instagram➡kamakiri1225
ブログ➡宇宙に入ったカマキリ(物理ブログ)
ココナラ➡物理の質問サポートサービス
コミュニティ➡製造業ブロガー

この記事が気に入ったらサポートをしてみませんか?