
Pythonでデータ分析〜トランプ大統領のツイートを分析してみた
以前、安倍首相のtweetを(探索的に)分析してみました。
どの曜日のtweetが多いか調べたり、tweetのポジネガ解析をしたり、しました。
詳しくは↑のnoteをよかったら。
で、今回はトランプ大統領のデータがあったので、同じ感じで色々(探索的に)分析してみました。
この後では、こんな感じのことをやってみてます。
面白い
— 軽石 (@karupoimou) February 21, 2020
Pythonでデータ分析〜トランプ大統領のツイートを分析してみた|マイキー_Mikey @mikey_qq #note https://t.co/Od9iL3PJrs
どんなデータか
※元データから扱いやすいように加工したり、不要列は削除したりしてます。
id:ただの番号
link:tweetのリンク
content:tweetの内容
date:tweetの日時
retweets:リツイートされた数
favorites:ファボの数
year:「date」の年
quarter:「date」の四半期別
month:「date」の月
day:「date」の日
day_of_week:「date」の曜日
hour:何時のtweetか
minute:何分のtweetか
month_eng:monthの英語表記
Sentiment:tweetを肯定的か否定的かスコア化したもの(詳しくは下記)
Subjectivity:tweetが積極的か消極的かスコア化したもの(詳しくは下記)
楽しんでいただけたら幸いです。
♠火曜と水曜が多かった。午後9〜10時が多かった。
まずは基本的なところから。
いつtweetしてる?
曜日別で集計しました。
一週間のなかで、火曜日と水曜日が多かったです。ちなみに、安倍首相は木曜日が多かったです。
年別で見てみると、
2013年、2015年のツイートが多かったです。2013年は8,207件、2015年は7,719件です。
それぞれ、一日あたり約23回、約21回と、ほぼ1時間に一回はtweetしてるという。トランプさんですらこのくらいやってるのに、見習わないといけません。。 @mikey_qq
「年と曜日」でクロス集計もしてみました。
全体では、火・水が多かったですが、2013年は水・木、2015年は月・火が多いですね。何でかの考察は面倒なのでやりませんm(_ _)m
---✂︎---
ご参考までに、
「年×月」でクロス集計したものを、ヒートマップにもしてみました。
・2015年の1月、4月や2013年の2月、4月相対的にtweet数が多い
・2013年の1-5月が安定的にtweet数が多いなど、がみられます。
何でかの考察は面倒なのでやりませんm(_ _)m
---✂︎---
何時ごろにtweetしてる?
そんなtweetしまくりのトランプ大統領ですが、1日のうちで何時ごろtweetしてるのでしょう。
邪道ですがレーダーチャートを「時計」に見立てて集計してみました。
ブルーがAM("/"の左)、オレンジがPM("/"の右)で、午前と午後で何時にtweetしているかを集計したものです。
午前より午後のツイートが多いことがわかります。
また、午後9〜10時が相対的に多いですね。
フォロワーが家でゆっくりしているであろうタイミングを狙っているのでしょうか。もしくはご自身のお仕事が終わって、くつろいでる時にtweetされることが多いのか。
ってことで、tweetの頻度は
・火曜と水曜が多い
・午後9〜10時が多い、ってことがわかりました。
♥tweetを感情分析をしてみた
安倍首相のtweet分析でもやったように、ツイートを感情解析してみようと思います。
TextBlobというPythonのライブラリを使います。
「翻訳」「名詞抽出」「感情分析」「タグ付け」などの色々なテキスト処理ができるとのことです。この中の「感情解析」を使ってみます。
◆TextBob感情解析◆
テキストから「Sentiment」と「Subjectivity」という二つのスコアを算出
するみたいです。
「Sentiment」は、テキストを肯定的か否定的かで、スコア化したもので、「-1~+1」の間のスコアになるとのこと。
「Subjectivity」tweetが積極的か消極的か(≒主体性があるか)で、スコア化したもので、「0~1」の間のスコアになるとのこと。
※やり方下記にて。
ってことで、各tweetの「Sentiment」と「Subjectivity」を出してみました。
※[0.0000, 0.0000]になっちゃってるのもあり、ケアが必要かもしれませんが今回はそのまま進めます。
例えば、Sentimentが+1(MAXで肯定的)とでたtweetの例は↓とかでした。
Congratulations, Chuck. Must be wonderful to have Donald Trump as your guest --- #BeCool! #Trump2016https://t.co/9BxQGTb5m2
— Donald J. Trump (@realDonaldTrump) December 4, 2015
反対に、Sentiment-1はこんなの。
Our thoughts and prayers are with the victims of the horrible attack in France yesterday, and we grieve the nation’s loss. We also condemn the violent actions of the attacker and anyone who would provide him support. We are with you @EmmanuelMacron!
— Donald J. Trump (@realDonaldTrump) March 24, 2018
結構、的を射てそうです。
散布図でみてました。横軸がSentiment(肯定か否定か)、縦軸がSubjectivity(主体性)です。
粒の一つ一つがtweetです(※全部プロットすると重いので、サンプルで1,000件を描画)。
右上にいくほど「肯定的で主体的」、左下に行くほど「否定的で非主体的」となります。
・否定的なのより肯定的なtweetが多そう、
・主体性が低いツイートは少ない、ってことがわかります。
さすが一国の長、主体性の塊でございます。
先ほどのレーダチャートと組み合わせて「○時頃のtweetはどんな感情か👨」を見える化すると面白そうです。(追記するか別noteでやるかもしれません)
♣️クラスタリングしたり、ワードクラウド作ったり
感情分析の結果を使って、もう少し深堀りしようと思います。
クラスター化
「Sentiment」と「Subjectivity」の二つの要素から、tweetをグループ分けしてみようと思います。
ってことで、k-means法というものでやってみました。
グループは暫定で4つにしてみました。その結果がこちら。
※先ほどのサンプル1,000件とは別で新たにランダムに1,000件で実施
※右側のカラーバーは意味をなさないので無視してください(消し忘れ)
整理すると、
緑色:かなり肯定的で、かなり主体性が高いtweet
黄色:肯定的で主体性が高いtweet
赤色:かなり否定的で、かなり主体性が高いtweet
紺色:肯定も否定もなく、主体性も低いtweet
ってな具合でしょうか。
どんなtweetなのかワードクラウド で見ていきます。
各クラスターのワードクラウド
こんな感じでした。
◆緑色
greatとかhappyとかデカデカと出ているのは直感的に納得できます。amazingとかcongratulationも。
◆黄色
こちらもgreatなどのポジティブなワードがあって、納得。
◆赤色
Obamaさんのお名前がデカデカと。トランプさんは共和党なので、民主党のオバマさんについてよく言及しているのでしょうか。
◆紺色
パッとみポジティブなワードも見受けられるので何とも言えない。もう少し前処理をちゃんとしたら変わるかも。
◆総じて
ご自身の名前をめちゃめちゃtweetしてる👨
ってな具合でした。
♦︎選挙前と後の違いを見てみた
tweet内容を深堀してたら、当選前と当選後でtweetが変わってるか気になったので見てました。
先ほどのワードクラウドで、選挙前と選挙後で分けて、見てみます。
当選前(-2016)
当選後(2017-)
見比べます。
疲れたので考察は特にせず終えますが、「当選前」は自分の名前をツイートしまくってますね👨
ということで、誰得かわかりませんが、以上、トランプ大統領のtweet分析でした。
楽しんでいただけたら幸いです。
👨おまけ
先ほどのワードクラウド で最後に遊んでみました。
こんな感じで、遊んでみたい方はこちら↓。
👨やり方
以下のnoteで、本noteでやったことの解説をしてます。
よかったら続けてお楽しみください。
最後までお読みいただき、ありがとうございます。
いいなと思ったら応援しよう!
