コーギー関連のツイートの曜日・時間帯をplotlyで可視化

プログラミング

こむぎパパは、いちおうデータ分析の仕事をしているのですが、

新しい技術を使って、なんかしてみたいな~

コーギー関連のTwitterのつぶやきは、何時くらいに多いんだろう?

と疑問に思ったので、さっそく可視化してみました。

 

なお、こむぎパパは西東京に住んでいて、コーギーのこむぎを飼っています。

コーギー関連の記事は、こちらのブログを確認ください。

スポンサーリンク

結果

2021年12月下旬の1週間で確認したところ、木曜日と金曜日の夜にコーギー関連のツイートが多いことが判明しました。

作成方法

ここからは、コードの解説です。

Twitterからデータの抽出

Twitterからのデータの抽出方法は、こちらの記事を確認ください。

plotlyを用いて可視化

今回は曜日・時間帯ごとのツイート数を可視化したいので、曜日・時間・ツイート数カウント用のフラグを作成します。

#今回のデータは、12月21日から30日までのツイートがdfに書き込まれた
#曜日と時間で区切るため、1週間のみのデータを抽出した
df_f = df[(df['TW_TIME'].dt.day>=23)&(df['TW_TIME'].dt.day<=29)]
df_f.reset_index(inplace=True, drop=True)

#曜日・時間・カウント用のFLG列を作成
df_f['weekday'] = df_f['TW_TIME'].dt.day_name()
df_f['hour'] = df_f['TW_TIME'].dt.hour
df_f['FLG'] = 1

次に、plotlyにてヒートマップを作成し、ヒートマップをhtml出力します。

def make_heatmap(df, title):
    '''
    曜日を列、時間を行に設定し、plotlyを使用しheatmapを作成するための関数
    '''
    df_p = df.pivot_table(index=['weekday'],columns='hour',values='FLG', aggfunc=np.sum)
    df_p = df_p.loc[['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'],:]
    
    fig = px.imshow(df_p,title=title,
                     labels={'x':'hour','y':'weekday','color':'tweet_count'}
                    )
    return fig

fig = make_heatmap(df_f,'Number of tweet from 23th Dec to 29th Dec')
fig.to_html(include_plotlyjs='cdn')

最後に、出力されたhtmlをワードプレスに貼り付けます。

本当はタイトルや列名を日本語にしたかったのですが、日本語がワードプレス上で上手くエンコーディングされなかったため断念しました。

\n

そのまま貼り付けると、上図のように無駄な文字が混ざるため、適当に整形します。

参考文献

今回の記事を作成するにあたり、こちらの記事を参考にさせてもらいました。

TwitterAPIの上限までTweetを取得する|つぶやきをWordcloudで可視化①

PythonのPlotly Expressのグラフをhtml出力してWordPressで表示させる方法

pandasのピボットテーブルでカテゴリ毎の統計量などを算出

複数のプロットを単一のhtmlにプロットして保存する(Python)

plotly.express.imshow — 5.5.0 documentation

コメント

タイトルとURLをコピーしました