こむぎパパは、いちおうデータ分析の仕事をしているのですが、
■ 新しい技術を使って、なんかしてみたいな~
■ コーギー関連の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のピボットテーブルでカテゴリ毎の統計量などを算出
コメント