マルウェア解析できるデータサイエンティストblog

マルウェアのリバースエンジニアリング技術を持つデータサイエンティストとして、データ分析/機械学習に関する情報を発信します。

nteractによってコード1行でデータをインタラクティブに可視化

バイオリンプロット
バイオリンプロット

nteractというデータ可視化ツールを使って、実際にTitanicのデータを描画してみました。

コードを1行だけで、Jupyter notebookの機能にインタラクティブなデータ可視化が追加されるため便利に使えそうな所感です。

インストール方法、利用時に感じた便利さと、注意点も含めて記事を書いていきます😃

環境

  • Windows10
  • Miniconda


インストール

① Anaconda Prompt (Miniconda3)を開きます。

Miniconda prompt
Miniconda prompt


② 以下のコマンドを実行してnteractをインストールします。

conda install -c conda-forge nteract_on_jupyter


③ 以下のコマンドを実行してnteractを起動します。

jupyter nteract

④ ブラウザでnteractが立ち上がるので、Start a new notebookにてNotebookを作成します。

フォルダ選択画面
フォルダ選択画面


実際に使ってみる

定番のTitanicのデータセットをつかって、データをインタラクティブに表示してみましょう。

以下にサンプルPythonコードを置きます。 pd.options.display.html.table_schema = Trueを入れないとインタラクティブな表示にはならないので注意です。

import pandas as pd


pd.options.display.html.table_schema = True
df = pd.read_csv('./train.csv')

上記Pythonスクリプトを実行してみると、以下のGif動画で示した通り、セル幅を変更したりカラムを昇順・降順に並び替えたりできます。

インタラクティブなテーブル表示
インタラクティブなテーブル表示

Show Filtersボタンから各カラムにフィルタをかけることもできます。PandasのDataFrameをExcelのように扱えるので便利ですね。

さらに、テーブル右のツールバーから表示形式を選択することで各種のグラフでデータを表示することもできます。

インタラクティブなテーブル表示
インタラクティブなグラフ表示

上記Gif動画の様に、MetirxにSurvivedを選択してバイオリンプロットみると、男性より女性の方が生存者の割合が多いことが瞬時に判断できますね。


nteract利用の注意点

注意点1: サイズの大きいデータでは可視化に時間がかかる

サイズの大きいデータに時間がかかるのは当たり前のことなんですけどね。

私の環境では、29.4MBのCSVを表示するのに1分16秒、テーブル表示からバイオリンプロット表示に切り替えるのに26秒が必要でした。

各種ボタンのクリック1つで簡単にインタラクティブにテーブルやグラフの表示方法を変更できるため、ギャップで表示までの待ち時間が長く感じるということだと思っています。


注意点2: テーブルやグラフ上で表示されるカラム数・行数は、通常のPandas DataFrameの表示上限に依存する

こちらも当たり前のことではあるんですけど、インタラクティブな可視化にばかり目が行っているとしばらく気づかないこともあります(私のことです😂)

以下のコードでカラム数および行数の表示上限を適切な値に設定してあげる必要があるということですね。

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)


注意点3: Notebookを開いた際に画面上部のツールバーのみが表示されてセルが表示されないことがある

nteractを実行しているコマンドプロンプトをマウス/キーボード操作することで解消されました。

ただし、この記事を書くために再現試験を行ったところ事象が再発しないため、皆さんの環境でも発生し得るのか私の環境依存なのかが分からない状況です...


最後に

操作が簡単な分だけギャップとして表示変更の待ち時間を長く感じてしまいますが、データの性質を理解するのに便利なことは間違いないので継続して使っていこうと思います。

今回の記事はここまで。Kazuki Igetaでした😃