・PythonによるTwitter APIの使い方を知りたい方
・Pythonライブラリのtweepyの扱い方を知りたい方
・tweepyで取得したデータをグラフで表現したい方
など
どうも、こんにちは。
コンです。
私は普段Twitterで好きなアニメについて感想をつぶやいたり
コンビニの美味しいものを紹介しているのですが
(地味ですみません。。。。)
「いいね」がつくと、なんだか嬉しい気持ちになります。
ふとある時、今までどれくらいの数の「いいね」をもらってきたのかが気になったので
またTwitterのAPIを使って、これまでの「いいね」をもらった情報を取得して数えようと思います。
APIの使い方に関しては、こちらの記事が参考になるかと思います。
今回はお題の通り、TwitterのAPIを使って自分のツイートを取得して
自分のツイートの いいね数をヒストグラムで示したいと思います。
作成したヒストグラム
今回は自分のツイートのみ(他の人のリツイートは除く)のデータを200件収集しました。
そして、それぞれのツイートについた「いいね」の数を取得します。
実際に作成したヒストグラムが以下のようになっております。
![](https://plantprogramer.com/wp-content/uploads/2022/09/Figure_1-1-1024x768.png)
今回はせっかくなので
ヒストグラムを作成したデータから、平均値(average)・中央値(median)を計算し、
その値をグラフにも描画しました。
中央値は3で平均が7と、まさに最大値に平均値が引っ張られるような統計データになりました。
今回は描写しなかったんですが、やっぱ最頻値は0なんですね(笑)
このヒストグラムの書き方や考え方に関してはこちらも参考になるかと思います。
コード
早速コードの紹介です。
import tweepy
import collections
import matplotlib.pyplot as plt
import numpy as np
def histgram(npdata):
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.hist(npdata, bins = 200)
#平均
mean = np.mean(npdata)
#中央
median = np.median(npdata)
#計算値をヒストグラムに描画
tx = 0.7 # 文字出力位置調整用
ty = 0.91 # 文字出力位置調整用
tt = 0.1 # 文字出力位置調整用
tp = dict( horizontalalignment='left',verticalalignment='bottom',
transform=plt.gca().transAxes, fontsize=11 )
plt.text( tx, ty, f'average {mean:.2f}', **tp, color='green')
plt.text( tx, ty-tt, f'median {median:.2f}', **tp, color='red')
plt.vlines(mean, 0, 65, color='green', linewidth=1)
plt.vlines(median,0, 65, color='red', linewidth=1)
plt.show()
plt.close()
def main():
consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token_key = 'XXX'
access_token_secret = 'XXX'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)
api = tweepy.API(auth)
my_user_id = api.verify_credentials().id_str
#自分のアカウントのツイートを取ってくる
statuses = tweepy.Cursor(api.user_timeline).items(1000)
number_like = np.empty(0)
text_len = np.empty(0)
count = 0
for status in statuses:
if status.retweeted == 0:
number_like = np.append(number_like, status.favorite_count)
count = count + 1
if count == 200:
break
print(number_like)
histgram(number_like)
main()
ポイントはtweepy.Cursorを理解しているかがポイントなのですが
正直難しかったので下記のサイトと実際の自分のツイートをスマホで確認しながら
・status.retweetedが0を示すものが自分のツイート
・status.favorite_countがいいねもらった数
などを確認しながらコードは書いていきました。
おわりに
ここまで読んでいただき、ありがとうございました!!
私自身はアニメのツイートばかりしていて
Twitterを楽しませてもらっております。
趣味アカウントとしてTwitterはかなり楽しいので、時間の消費を感じてしまいます。。。
皆様におかれましては、SNS中毒にお気をつけください。
それでは!!