【Pythonでデータ分析】共起ネットワークをpandas.DataFrameから作ってみた

  • このエントリーをはてなブックマークに追加
スポンサーリンク

この記事を読むのに必要な時間は約 3 分です。

共起ネットワークとは?

ノード間の共通性をネットワークを用いて図示する方法のことを共起ネットワークと言います。

簡単に言うと、単語や商品ごとの繋がりをかっこよく視覚的に捉える手法です。

今回は、手元にある店舗に置けるレシートデータが集められたと仮定し、

ある商品との併売状況を共起ネットワークで可視化したいと思います。

環境

Google Colab

分析に使用するデータはcsvでもなんでも構いません、今回はBigQueryにレシートデータが揃っている前提でお話を進めます。

※以降のコードは全てGoogle Colab上で実行しています。

手順

Colabで日本語表示を設定

データベースに入っているテキストが英語の場合は、この操作は特に必要ありません。

 

日本語に対応している¥「IPA」フォントをインストール
!apt-get -y install fonts-ipafont-gothic
matplotlibを日本語表示に対応させる
!pip install japanize_matplotlib
matplotlibのキャッシュをクリア
!rm /root/.cache/matplotlib/fontlist-v300.json
ColabにIPAフォントをインポートする。

分析用データの準備

ColabとBigQueryを接続します。

上記のようなおまじないを実行すればGoogle ColabとBigQueryは接続完了です。簡単ですね。

project_idには、ご自身のGCPのプロジェクトIDを入れてください。

BigQueryからデータを集計してColab上に出力します。

前処理の内容は元データによって様々ですので割愛しています。

下の図表のような感じでDataFrameが出力できればOKです。

 

共起ネットワークの場合、「出現割合」のカラムではJaccard係数、Dice係数などが主に使われています。

 

共起ネットワークの構築と出力

matplotlibとグラフ・ネットワークを扱うPythonライブラリーのNetworkXをインポートします。

グラフオブジェクトを作成します。

ここでのポイントは、networkxライブラリのfrom_pandas_edgelistというメソッドを使っていることです。

PandasのDataFrameからかんたんに共起ネットワークが構築できます。

引数にあるdfは前もって準備した分析データ(DataFrame)のことです。

 

最後に各ノードとエッジの大きさやカラーリングなどを調整して出力すれば完了です。

 

出力結果はこちらです。

上記のコードのように、draw_networkx_edgesのwidth引数を工夫することで、ノード間の関連度の高さに応じてエッジの太さを変更することも可能です。 

共起ネットワーク

共起ネットワーク

スポンサーリンク

  • このエントリーをはてなブックマークに追加
スポンサーリンク