平昌オリンピックの視聴PTとツイート数を調査しました。
社内向けにjupyter notebookでまとめたのですが、
公開可能な形にまとめ直したものを以下に貼り付けました。
以下で出てくる視聴PTについては pixela.tv で確認できますので
是非ご利用ください。
概要
- オリンピックのツイート数とオリンピックの視聴PTの盛り上がりを比較してみました
方法
- Twitter APIでオリンピックのハッシュタグのツイートを蓄積
- ツイート数、視聴PTを分単位の時系列データとしてグラフで比較
制限事項
- 視聴PTは東京の値を使用しています
- Twitter APIの無料プランで「#オリンピック」のハッシュタグがあるツイートのみを対象
- 収集開始時期の都合で2/11より以前のツイートは対象外(収集開始が遅れたためです。すみません。)
- 全ツイートが検索対象になっていることは保証できません(Twitter APIで取得できるツイートのみ対象)
定義
- 視聴PT : pixela.tv で公開中のTV視聴中を表すポイントです
以下でツイート数との結果と比較していきます
- 蓄積したツイートのcsv(ツイート時間, ユーザ名, ツイート内容)と番組別視聴PTのcsv(時間、視聴PT)を使っています
- csvのデータは非公開です
必要なモジュールの読み込み
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd import datetime import os import numpy as np from scipy import signal from matplotlib import pyplot as plt from matplotlib import dates as dts %matplotlib inline plt.rcParams['font.family'] = 'IPAPGothic' |
共通利用するグラフ表示関数
- 視聴PTとツイート数を重ねてグラフ化します
- スケールはしていません
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def show_graph(tv_csv, src_df): tmp_df = pd.read_csv(tv_csv, encoding='utf-8') tmp_df['date'] = pd.to_datetime(tmp_df['date']) min_date = min(tmp_df['date']) max_date = max(tmp_df['date']) timeseries_count = src_df.groupby(pd.Grouper(key='date', freq='1min'))['text'].count() sample_df = timeseries_count.loc[(timeseries_count.index >= min_date) & (timeseries_count.index <= max_date)].reset_index(drop=True) tmp_df['tw_count'] = sample_df.values fig = plt.figure(figsize=(10,5)) ax = fig.add_subplot(1,1,1) plt.plot(tmp_df.date, tmp_df.pt) plt.plot(tmp_df.date, tmp_df.tw_count) ax.set_xticklabels(tmp_df.date,rotation=90) ax.xaxis.set_major_formatter(dts.DateFormatter('%H:%M:%S')) plt.show() |
オリンピックのハッシュタグのあるツイートを蓄積したcsvの読み出し
- pandasを使って読み出しています
1 2 3 |
tw_df = pd.read_csv('.\\csv_file\\twitter_olympics.csv', names=['date','name','text'], encoding='utf-8') tw_df['date'] = pd.to_datetime(tw_df['date']) |
蓄積したツイートの総数
- Twitter APIの無料範囲でもかなり蓄積できました
1 2 |
print(len(tw_df.index)) |
83950
一時間単位のツイート数グラフ
- この値を基準としてツイート数のランキングを決めています
1 2 3 4 5 |
timeseries_count = tw_df.groupby(pd.Grouper(key='date', freq='1h'))['text'].count() plt.figure(figsize=(12,5)) plt.plot(timeseries_count.index, timeseries_count.data) plt.show() |
ツイート数Top5の時間に放送されていた番組
時間単位の最大ツイート数順位 | 放送局 | 番組名 | 放送開始日時 |
---|---|---|---|
1 | NHK総合東京 | ピョンチャンオリンピック ◇フィギュアスケート 男子シングル・フリー | 2018-02-17T12:15:00 – 2018-02-17T15:00:00 |
2 | NHK総合東京 | ピョンチャンオリンピック ◇カーリング 女子・3位決定戦「日本×イギリス」 | 2018-02-24T19:30:00 – 2018-02-24T23:07:00 |
3 | 日本テレビ | ピョンチャンオリンピックスピードスケート男女団体パシュート決勝「決勝」 | 2018-02-21T19:55:00 – 2018-02-21T22:54:00 |
4 | TBS | 平昌オリンピック2018 スピードスケート女子500m決勝ほか・小平奈緒 | 2018-02-18T19:00:00 – 2018-02-18T22:48:00 |
5 | NHK総合東京 | ピョンチャンオリンピック ◇ジャンプ 女子ノーマルヒル(中継) | 2018-02-12T21:30:00 – 2018-02-13T00:17:00 |
視聴PTランキングTop5
- 視聴PTの最大値のランキングです(平均ではありません)
- ツイート数で6位だったフィギュアスケート男子ショートプログラムが2位になっている点以外は上位陣は似ています
順位 | 放送日 | 放送局 | 番組名 | 瞬間最大時間 | 最大PT |
---|---|---|---|---|---|
1 | 2018-02-17 | NHK総合東京 | ピョンチャンオリンピック ◇フィギュアスケート 男子シングル・フリー(中継) | 2018-02-17T14:06:00 | 395 |
2 | 2018-02-16 | TBS | 平昌オリンピック2018 フィギュアスケート男子ショートプログラム | 2018-02-16T13:55:00 | 320 |
3 | 2018-02-21 | 日本テレビ | ピョンチャンオリンピックスピードスケート男女団体パシュート決勝「決勝」 | 2018-02-21T22:02:00 | 247 |
4 | 2018-02-24 | NHK総合東京 | ピョンチャンオリンピック ◇カーリング 女子・3位決定戦「日本×イギリス」 | 2018-02-24T22:34:00 | 221 |
5 | 2018-02-18 | TBS | 平昌オリンピック2018 スピードスケート女子500m決勝ほか・小平奈緒 | 2018-02-18T21:32:00 | 208 |
以下で時系列グラフの比較を行います
- ツイート数は視聴PTの単位に合わせて分単位の数にしています
- 青が視聴PT, 黄色がツイート数です
- 横軸は時刻、縦軸は視聴PT, ツイート数となります
ピョンチャンオリンピック ◇フィギュアスケート 男子シングル・フリー
- 羽生選手の演技開始からメダル順の確定まで視聴PTは盛り上がりが継続しています
- ツイートはメダル順確定後に最も盛り上がっています
登場時間(おおよその時間)
- 羽生結弦(日本) 13:43
- ハビエル・フェルナンデス(スペイン) 13:51
- 宇野昌磨(日本) 14:00
1 2 |
show_graph('.\\csv_file\\tv_1.csv', tw_df) |
ピョンチャンオリンピック ◇カーリング 女子・3位決定戦「日本×イギリス」
- 視聴PTはメダル確定まで徐々に盛り上がっていました
- ツイート数はメダル確定で一気に増えています
- 21:40付近のツイート数盛り上がりは裏で放送されていたマススタートの金メダル確定によるものと推測します
1 2 |
show_graph('.\\csv_file\\tv_2.csv', tw_df) |
ピョンチャンオリンピックスピードスケート男女団体パシュート決勝「決勝」
- 決勝進出 : 20:10
- 金メダル確定 : 22:02
1 2 |
show_graph('.\\csv_file\\tv_3.csv', tw_df) |
平昌オリンピック2018 スピードスケート女子500m決勝ほか・小平奈緒
- 小平選手がオリンピックレコード : 21:27
- 最終組が終わって金メダル確定 : 21:32
1 2 |
show_graph('.\\csv_file\\tv_4.csv', tw_df) |
ピョンチャンオリンピック ◇ジャンプ 女子ノーマルヒル(中継)
放送中に3つのメダルが確定
- 原大智選手 銅メダル : 22:23
- 高木美帆選手 銀メダル : 22:48
- 高梨沙羅選手銅メダル : 23:48
1 2 |
show_graph('.\\csv_file\\tv_5.csv', tw_df) |
まとめ
- メダル確定後におめでとうツイートが多くなり、競技の注目度によりその数も変わるようです
- 視聴とツイート数の盛り上がりが直接的に関係している様子が確認できました
- オリンピックはTVでライブ視聴しながらツイートする典型例と言えそうです
- 同時に複数の競技が放送されている場合にどの競技に関するツイートを行っているか区別が付けられていないという課題が残っています