python

Youtubeでとかでよく見る動くランキングをColabで作ってみる

youtubeでこのような動画を見たことのある方は多いと思います。そこでどのように作るのかを一つの例として作ってみます。

動画編集ソフトを駆使して作っても良いですが、今回はPython(colab)を使って作成してみたいと思います。

早速colabを起動して、必要なデータをアップロードします。

データはこちらを使用します。

データがリサイクル時に削除されるのが嫌な方はドライブをマウントしてそこにアップロードしてください。

ドライブのマウントはdriveモジュールを使わずにGUIで簡単に操作できるようになりました。

colabに初期からインストールされていないライブラリが必要になるのでまずはそちらをインストールしておきます。

!pip install bar-chart-race
!pip install japanize-matplotlib

bar-chart-raceは必須ですが、日本語化モジュールであるjapanize-matplotlibは任意でインストールで大丈夫です。

bar-chart-raceは各データの時系列変化を順位とともに表現するプロットするライブラリです。

詳しく知りたい方は、公式ドキュメントを参照ください。

https://www.dexplo.org/bar_chart_race/

扱うデータはCSV形式のものが基本なので、そちらを扱うためにpandasを使っていきます。

import pandas as pd
import bar_chart_race as bcr
import matplotlib.pyplot as plt
plt.style.use("seaborn-whitegrid")
%matplotlib inline

データを読み込んで、どのようなデータか見てみます。

# パスは自身の環境に合わせてください
df = pd.read_csv('/content/bcr_rawdate.csv')
df

121個のデータと14種のプログラミング言語と日付があるのが確認できます。

それでは、このデータをランキング遷移の表にするために前処理をしていきます。

bar-chart-raceで表示するデータについてはいくつか注意点があります。

  • 空白データ(nan)があってはいけない
  • indexに日付を用いらなければならない

上記のことを踏まえて、まずはindexをdateカラムに置き換えてしまいます。

df = df.set_index('Date')
df

表示してみるとindexがDateに置き換わっているのが確認できます。

続いて、欠損値については0の数字で埋めてしまいます。

df=df.fillna(0)
df

これで、データの準備が整いました。

早速実行してグラフを表示してみましょう。

bcr.bar_chart_race(df)

実行には少々時間がかかるので、気長に待ちます。

無事表示することができました。

まとめ

以上で、動くランキング表作成の手順が完了しました。

実際にyoutubeとかで見るものは、Flourishというアプリケーションで作成されているのがほとんどです。わざわざPythonで作って公開する人の方が稀です。

https://flourish.studio/features/

今回は元々キレイなデータを使用したため簡単にいきましたが、オープンソースデータなどを表示するのは結構苦労します。

視覚化するのは面白く興味深いですが、実際はデータの前処理がメインになります。

前処理を学んでみたい方は、bar-chart-raceでグラフ化するのを目標にCOVID-19などのオープンソースを触ってみるのもオススメです。

漠然と前処理するだとモチベが続かなかったりしますが、目標があると何をすればいいかの流れが見えるので実際のデータ分析にもつながります。