Photo by oxana v on Unsplash

このガイドは、より深い例をいくつか追加しました。 最新版はこちらのブログでご覧いただけます。

Python の視覚化を始める場合、ライブラリやサンプルの数に圧倒されるかもしれません。

  • Matplotlib
  • Seaborn
  • Plotly
  • Bokeh
  • Altair
  • Folium

データフレームが視覚化待ちならどれを選べばいいのか? いくつかのライブラリは、他のライブラリよりも特定のケースで優れているかもしれません。 この記事では、それぞれの長所と短所を紹介します。 この記事の終わりには、各ライブラリのさまざまな機能を区別できるようになり、最適なものを簡単に選択できるようになります。

サンプル データセットを使用し、いくつかの特定の属性に焦点を当てながら、各ライブラリを使用してそれを調査します。

Matplotlib などの一部のライブラリは、視覚化を画像としてレンダリングするため、(論文、スライドデッキ、プレゼンテーションで)概念を説明するのに適しています。

一方、Altair、Bokeh、Plotly などのライブラリでは、ユーザーが自分で飛び込んで探索できるインタラクティブなグラフを作成することができます

構文および柔軟性

それぞれのライブラリでの構文の相違はどの程度ですか? Matplotlib のような低レベルのライブラリでは、考えられる限り何でもできますが、その代償としてより複雑な API が必要です。 Altair などの一部のライブラリは非常に宣言的で、データへのマッピングが容易です。

データの種類と視覚化

地理プロット、大規模データ、または特定のライブラリによってのみサポートされているプロットタイプの使用など、特殊な使用ケースで作業していますか。

Data

比較を容易にするために、この記事では Github からスクレイピングした実際のデータを使用することにします。

Pythonのレポートを公開・共有するPythonフレームワーク・APIのDatapaneを使って、それぞれのライブラリの可視化したものを埋め込んでいこうと思う。 もっと実例を見たい方は、Datapane gallery のユーザー投稿レポートをご覧ください。

記事を追うには、ここから csv ファイルをダウンロードするか、Datapane Blob から直接データを取得します。

import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()

Blob を使用するには、事前にトークンを使用して Datapane にログインすることを忘れないようにしましょう。 これは 1 分未満で完了します。

Matplotlib

Matplotlib はおそらく、データを視覚化するための最も一般的な Python ライブラリでしょう。 データサイエンスに興味のある人なら、おそらく誰もが一度は Matplotlib を使ったことがあるでしょう。

Pros

  1. データの特性を簡単に見ることができる

データ分析をするとき、分布を素早く見ることが理想的かもしれません。

Matplotlib の x 軸はよく見えないけれども、グラフを見てデータの分布がよく分かった。

2. 何でも描ける

Matplotlib は非常に多機能で、つまり想像しうるどんな種類のグラフでも描けるのです。 Matplotlib の Web サイトには、非常に包括的なドキュメントと、ギャラリーにあるさまざまなグラフがあり、あなたが思いつくどんなおかしなプロットでも、簡単にチュートリアルを見つけることができます。

こんなテキストもあります:

Cons

Matplotlib は何でも描画できますが、基本でないプロットの描画や見栄え良くプロットを調整するには複雑かも知れません。

分布を視覚化するには十分なプロットであっても、データを他の人に表現したい場合は、X軸、Y軸を修正する必要があり、手間がかかります。 これは、Matplotlib が極めて低レベルなインターフェースを持っているからです。

Takeaway: Matplotlib は何でも描画できますが、複雑なプロットは他のライブラリよりはるかに多くのコードを必要とするかもしれません

Seaborn は Matplotlib をベースにした Python データ可視化ライブラリです。 4255>

Pros

  1. Less code

It provides a higher-level interface for similar plots.It provides a higher-level wrapper on the library which makes it easier to use.

Seaborn is a Python data visualization library based on Matplotlib. 別の言葉で言うと、seaborn は一般的に matplotlib と同様のプロットを提供しますが、より少ないコードとより良いデザインです。

以前と同じデータを使用して、同様のグラフのヒートマップを描きます。

x と y のラベルを設定せずに良いヒートマップを取得しました!このように、より良いデータを使用すると、より多くのヒートマップと、それを使用するためのより多くのコードと、良いデザインになります。

Make common-used plots prettier

棒グラフ、箱グラフ、カウント プロット、ヒストグラムなどの一般的なプロットに関して、多くの人が seaborn を選択しますが、それは単に少ないコードで作成できるだけではなく、はるかに美しく見えるという理由からです。 上の例でわかるように、色も Matplotlib のデフォルトのものよりもきれいに見えます。

Cons

Seaborn はより制限されていて matplotlib ほど広いコレクションを持っていない

Takeaway: Seaborn は Matplotlib の上位バージョンです。 Matplotlib ほど幅広いコレクションを持っていないにもかかわらず、seaborn は、棒グラフ、箱型グラフ、ヒートマップ、などのような一般的なプロットを、より少ないコードで美しく見せる。

Plotly

Plotly の Python グラフィックスライブラリは、インタラクティブで出版品質のグラフを簡単に作成することができるようにします。 また、折れ線グラフ、散布図、面積グラフ、棒グラフなど、Matplotlib や seaborn と同様のグラフを作成できます。

Pros

  1. Like R

R でプロットのファンで Python に切り替えるとその機能を逃している場合、Plotly では同じ品質のプロットを Python で使用できます!(Plotly.com)

私のお気に入りは Plotly Express で、Python の 1 行から素晴らしいプロットを本当に簡単に、さらに高速に作成できるからです。 インタラクティブなプロットは美しいだけでなく、見る人が各データポイントをより詳しく見ることを容易にします。

matplotlib を使って以前に行った棒グラフを覚えていますか。 Plotly でどのようになるか見てみましょう。

ほぼ同じ行で、各棒にマウスを置くとどのユーザーとフォロワーの数がその棒を示しているかわかる、インタラクティブ プロットが生成されます。 これは、可視化の消費者が自分自身で探索できることを意味します。 複雑なプロットを簡単にする

Plotly では、通常作成が困難ないくつかのプロットを簡単に作成することができます。

たとえば、Github ユーザーの位置を視覚化するマップを作成したい場合、このように緯度と経度を求めることができます。 で、そのデータを使って、次のように地図上にユーザーの位置をスポットします。

数行のコードで、すべてのユーザーの位置が地図上に美しく表現されるのです。 泡の色はフォークの数を、大きさは星の総数を表しています

Takeaway: Plotly は、インタラクティブで出版品質のグラフを数行のコードで作成するのに適しています。

Altair

Altair は vega-lite に基づく Python の宣言型統計ビジュアライゼーションライブラリで、多くの統計変換が必要なプロットに理想的です。 シンプルな可視化文法

可視化を作成するために使用される文法は、理解しやすいものです。 それは、データ列と符号化チャネルとの間のリンクに言及する必要があるだけで、残りのプロットは自動的に処理されます。 これは抽象的に聞こえますが、データを扱うときには大きな意味を持ち、情報を本当に速く、直感的に視覚化することができます。

たとえば、上記のタイタニックのデータで、各クラスの人数をカウントしたい場合、必要なのは y 軸に count() を使用することだけです

2. データの変換が容易

Altair では、チャートを作成しながらデータを変換することも非常に容易です

たとえば、タイタニック号の各性の平均年齢を求めたい場合、Plotly のようにあらかじめ変換を行うのではなく、チャートを作成するコードの中で変換を行うことが可能です。

クラスがノミナルデータ(順序のないカテゴリデータ)であることも確認できます。 :N を使って、または mean_age が量的データ (数値などの値の尺度) であることを確認するために :Q

を使ってください。 プロットの簡単なリンク

Altair では、添付のヒストグラムのコンテンツをフィルターするために区間選択を使用するなど、プロット間の印象的なリンクを行うこともできます。

たとえば、年齢と運賃の間の点グラフを選択した区間内の各クラスの人数を視覚化したい場合、次のようにできます。

散布図の区間を選択してマウスでドラッグすると、下のバー チャートの変化を確認できるかもしれません。 先ほどの変換と計算を組み合わせると、これは、オンザフライで計算を行う非常にインタラクティブなプロットを作成できることを意味します – Python サーバーを実行する必要さえありません!

Cons

カスタム スタイルを指定しない限り、棒グラフなどの単純なグラフは seaborn や Plotly ほどスタイルが良くは見えません。 また、Altair は 5000 サンプル以上のデータセットを推奨しておらず、代わりに可視化の前にデータを集約することを推奨しています。

Takeaway: Altair は、統計を表示するための洗練されたチャートに最適です。 Altair は 5000 サンプル以上のデータを扱うことができず、いくつかのシンプルなチャートは Plotly や Seaborn と比較してスタイルが良く見えません。

Bokeh

Bokeh は Web ブラウザをターゲットにして表現する柔軟な対話型可視化ライブラリです。

Pros

  1. Interactive version of Matplotlib

上記のインタラクティブな視覚化ライブラリの中で順位をつけるとすれば、Bokeh は Matplotlib との類似性に関して、おそらく1位になることでしょう。 Bokehは、高レベルまたは低レベルのインターフェースとして使用することができます。したがって、Matplotlibが作成する多くの洗練されたプロットを作成することができますが、より少ないコード行数とより高い解像度で作成することができます。

例えば Matplotlibの円プロット

も作成することができます。

2. プロット間のリンク

Bokeh では、プロット間のリンクも非常に簡単に行えるようになっています。 あるプロットで適用された変更は、同様の変数を持つ別のプロットに適用されます。

たとえば、3 つのグラフを横に並べて作成し、それらの関係を観察したいとします。

ColumnDataSource により、プロット間でデータを共有することができます。 したがって、あるプロットに変更を適用すると、他のプロットもそれに応じて変更されます。

Cons

Bokehはやや中間レベルのインターフェースを持つライブラリなので、しばしばMatplotlibよりも少ないコードで、SeabornやAltair、Plotlyと同じプロットを生成するにはより多くのコードを必要とします。

例えば、titanicのデータを使って同じcountのプロットを作るには、あらかじめデータを変換する必要がある他、以下のようになります。 もし、棒グラフの幅を追加しなかった場合、グラフは次のようになります

したがって、グラフを美しく見せるために、私たちは、棒と色を設定しなければなりません。 4255>

もし、少ないコードで美しい棒グラフを作成したい場合、これは他のライブラリと比較したBokehの欠点かもしれません

Takeaway: Bokeh は、低レベルから高レベルまでのインターフェイスを持つ唯一のライブラリで、多用途かつエレガントなグラフィックを簡単に作成することができます。 しかし、これは一般的に他のライブラリと同様の品質でプロットを作成するために、Bokeh により多くのコードを必要とするという代償を伴います。

Folium

Folium は、インタラクティブなリーフレットマップ上でデータを簡単に視覚化することが可能です。 このライブラリには、OpenStreetMap、Mapbox、および Stamen からの多数のタイルセットが組み込まれています

Pros

  1. マーカーのあるマップを簡単に作成できる

Plotly や Altair.も、Polium はこのライブラリに含まれています。 や Bokeh でもマップを作成できますが、Folium ではオープンストリートマップを使用して、最小限のコードで Google マップに近い感覚を提供します

Plotly を使用して Github ユーザーの位置を視覚化するマップを作成したことを覚えていますか? Folium

ニューヨーク州ブルックリンでの最初の位置です。 ズームアウトすると、地図上の他の場所を見ることができます。 いくつかのコードの行で、ユーザーの場所を示す実際のマップが作成されました。

2. 潜在的な場所を追加する

他のユーザーの潜在的な場所を追加したい場合、Folium はユーザーがマーカーを追加できるようにすることで簡単にできます

地図上でクリックすると、その場所で新しい位置が生成されることを見ることができます。

3. プラグイン

Folium には、地図で使用できる多くのプラグインがあります – Altair へのプラグインも含まれています。 世界中のGithubユーザーの星の総数のヒートマップを見て、どこに星の総数が多いトップGithubユーザーがいるのかを特定したいとしたらどうでしょうか。 Foliumプラグインのヒートマップは、まさにそれを可能にします。

Zoom out to see the complete picture of the heatmap.

テイクアウトします。 Folium では、わずかなコードの行数でインタラクティブなマップを作成することができます。 Google マップに近い体験ができます。

結論

おめでとうございます。 あなたはちょうどあなたの可視化のための6つの異なる可視化ツールについて学びました。 この記事で、各ライブラリが何をするのか、いつ何を使うのかがおわかりいただけたかと思います。 各ライブラリの主要な機能を把握することにより、必要に応じて適切なライブラリをより迅速に引き出すことができます。

自分のデータにどのライブラリを使用するかまだ迷っている場合は、十分に良いと思うものを選んでください。 そして、コードが長すぎたり、グラフが想像通りにならなかったりしたら、別のライブラリで試してみてください!

Github リポジトリにあるこの記事のコードを自由にフォークして遊んでみてください。 LinkedIn や Twitter で私とつながることができます。

私が書いたすべての記事のコードをチェックアウトしたい場合は、このレポにスターを付けてください。 このような私の最新のデータサイエンス記事の情報を得るには、Medium で私をフォローしてください:

admin

コメントを残す

メールアドレスが公開されることはありません。

lg