Skip to content

Pythonを使ったデータビジュアライゼーション初心者ガイド

Pythonを使用してデータビジュアライゼーションを作成することで、大規模で整形されていないデータセットを表形式で分析・理解しようとするのに数秒から数分かかるのに対し、ユーザーはミリ秒単位でデータインサイトを得られるようになります

9分で読める

Executive Summary:

Pythonを使用してデータビジュアライゼーションを作成することで、大規模で整形されていないデータセットを表形式で分析・理解しようとするのに数秒から数分かかるのに対し、ユーザーはミリ秒単位でデータインサイトを得られるようになります

データビジュアライゼーションはデータの分析と理解を明確にして簡単にするうえで重要な役割を果たします。Pythonなどのデータビジュアライゼーションツールを使った情報の視覚的表現により、そうでなければ決して発見できなかったトレンド、パターン、相関関係を特定できます。また、コンピュータ科学者のBen Schneidermanが述べているように「ビジュアライゼーションは、あなたが知らなかった質問への答えをもたらします」。

このブログでは、Pythonでのデータビジュアライゼーションとは何か、Pythonのビジュアライゼーションライブラリを使ってPythonでデータを可視化する方法、およびPythonビジュアライゼーションの例をいくつか紹介して、データビジュアライゼーションの力とPythonがそれをどのように活用できるかについて、より深く理解していただきます。

Pythonでのビジュアライゼーションとは

Pythonは高度なデータ構造、動的型付け、動的バインディング、その他多くの機能を含む汎用プログラミング言語で、複雑なアプリケーション開発に有用です。

ここ20年間でデータビジュアライゼーションの重要性が高まるにつれて、Pythonは単なるプログラミング言語以上の言語になりました。データサイエンス分野で最も使用されているプログラミング言語へと成長し、開発者に数多くのデータビジュアライゼーション選択肢と、生データだけでは得られないインサイトを提供しています。

シンプルに言うと、Pythonを使ってデータビジュアライゼーションを作成することで、大規模で整形されていないデータセットを表形式で分析・理解しようとするのに数秒から数分かかるのに対し、ユーザーはミリ秒単位でデータインサイトを得られるようになります。さらに良いことに、Pythonでデータビジュアライゼーションツールを使用すると、色、トレンドライン、マーカー、注釈、その他多くの視覚的キューを追加できるため、ビジュアライゼーションの閲覧者がデータの物語を即座に理解できるようになります。

Slingshotを試す

Pythonビジュアライゼーションライブラリ

Pythonには、ビジネスチャート、科学チャート、金融チャート、地理空間マッピング、その他多くの機能を提供するオープンソースおよび商用のビジュアライゼーションライブラリが数多くあります。開発者は、これらのライブラリをPythonプロジェクトに簡単にインポートでき、所有しているデータのタイプに基づいて、わずか数行のコードでビジュアライゼーションをレンダリングできます。

次のリストは、最も人気のある5つのPythonデータビジュアライゼーションライブラリです。

  • MatplotlibMatplotlibはPythonの最初のデータビジュアライゼーションライブラリで、その他すべてのPythonデータビジュアライゼーションライブラリがその上に構築されている基礎ライブラリです。最も使用されている2Dプロッティングライブラリであり、Matplotlibはプロット、棒グラフ、円グラフ、ヒストグラム、パワースペクトラム、散布図、エラーチャート、その他の種類のデータビジュアライゼーションを生成できます。このライブラリはビジュアライゼーションを完全に制御できますが、同時に非常に複雑です。何でも作成できますが、見栄えの良いグラフを取得するには多くの作業と労力が必要です。
  • Seaborn – Matplotlibに基づいたSeabornは、最も視覚的に魅力的なPythonデータビジュアライゼーションを作成することで知られています。このライブラリは、Matplotlibと比べてコード要件が少なくて、魅力的で有用な統計グラフィックスを描画するための高度なインターフェースを提供します。
  • ggplot – このライブラリはRプログラミング言語のggplot2データビジュアライゼーションのPython実装です。ggplotはPandasライブラリと密接に統合されており、変数を美学にマップする方法と使用するプリミティブを指示されたら、機械学習の最適な形式の1つを示します。シンプルなグラフィック表現の生成に使用でき、カスタマイズ度の高いグラフィックスの作成には使用できません。
  • Plotly – Plotlyを使用すれば、ほぼコード行を必要とせずにデータビジュアライゼーションと分析の両方を作成できます。また、他のすべてのライブラリには珍しい等高線プロットがあります。散布図、折れ線グラフ、棒グラフ、エラーバー、サブプロット、ヒストグラム、ボックスプロットなど、多くのビジュアライゼーションを生成できます。さらに、Plotlyはホバーツール機能を備えており、大量のデータポイントの外れ値や異常を検出することができます。
  • Pandas – ビジュアライゼーションライブラリではありませんが、Pandasはオープンソースの高性能ライブラリで、Pythonビジュアライゼーションライブラリで使用するための高速で柔軟なデータ操作およびデータ変換関数を提供します。データ処理用のPandasの高度なAPIを使用することで、データ操作のためのPythonコード量を減らしながら、同じ結果を達成できます。

Pythonインタラクティブビジュアライゼーション

Pythonインタラクティブビジュアライゼーションツールをお探しの場合は、Bokehについて検討することをお勧めします。

Bokehはインタラクティブビジュアライゼーションライブラリで、HTMLおよびJavaScriptを使用してグラフィックスをレンダリングします。しかし、BokehはPythonAPIを提供して、JavaScriptコードを記述する必要がないか、またはなくてもD3.jsでインタラクティブビジュアライゼーションを作成できます。大規模またはストリーミングデータアセットに適しており、インタラクティブなWebベースのプロット、アプリケーション、ダッシュボードを開発するために使用できます。BokehはPythonデータビジュアライゼーション分野において、インタラクティブビジュアライゼーションの構築のための第1選択肢です。

このライブラリはPyDataツールと密接に機能し、プロッティング用の標準PandasおよびNumPyオブジェクトの使用を可能にします。

Pythonの時系列ビジュアライゼーション

時系列データは時間順に表示されたデータポイントのシリーズです。これは時間的に連続する等間隔の点のシーケンスで、有意なインサイトとデータの有用な特性を抽出するために分析する方法で構成されています。時系列タイプのデータは、製薬、小売、輸送、金融、さらにはソーシャルメディアおよびメールマーケティング企業など、多くの業界で重要です。

以下は、すべて時系列データの例です。

  • 医学:心拍数モニタリング、体重追跡、血圧追跡など。
  • 小売:24時間または48時間以内の1時間ごとに販売される商品数
  • 輸送:1週間または1ヶ月間に移動した旅行者の数
  • 経済:国内総生産、消費者物価指数など。

折れ線グラフは、時系列データを可視化する最も一般的な方法です。通常、チャート表示は、より詳細な時間ベースのデータを見るためにズームインしたり、より高度な概要を見るためにズームアウトしたりなどの相互作用を可能にします。

Pythonビジュアライゼーション例

データビジュアライゼーションとダッシュボードツールには、様々な種類のチャートが含まれています。Pythonおよび前述のPythonグラフィックスライブラリなどのツールは、提供されているチャートタイプを超える必要がある場合に、有用で有意義なビジュアライゼーションの構築に役立ちます。例えば、ほとんどの製品にはSankey Diagrams、ヒートマップ、Steamgraphsなどの高度なビジュアライゼーションが含まれていません。Slingshotを使用すれば、これらの高度なビジュアライゼーションをPythonで簡単に追加できます。

デフォルトでは、Slingshotでのプython ビジュアライゼーションにはスクリプトエディターにこれらのライブラリが含まれます。

#import matplotlib
#import matplotlib.pyplot as plt
#import numpy as np
#import pandas as pd

そして、デフォルトでは、スクリプトエディターで利用可能なフィールドは、ビジュアライゼーションエディターのフィールドチューザーから選択したものです。

#data['Territory']
#data['CampaignID']
#data['Sum of Spend']

ビジュアライゼーションを作成しています。これは他の組み込みチャートと同じです。唯一の違いは、このチャートはPythonコードで作成されることです。

campaignid = np.unique(np.array(data['CampaignID']))
territory = np.unique(np.array(data['Territory']))
spend = np.array(data['Sum of Spend']).reshape((7, 5))
fig, ax = plt.subplots(figsize=(5.5, 6.5))
im = ax.imshow(spend)
# Show all ticks...
ax.set_xticks(np.arange(len(territory)))
ax.set_yticks(np.arange(len(campaignid)))
# ... and label them with the respective list entries
ax.set_xticklabels(territory)
ax.set_yticklabels(campaignid)
# Loop over data dimensions and create text annotations.
for i in range(len(campaignid)):
for j in range(len(territory)):
text = ax.text(j, i, spend[i, j],
ha="center", va="center", color="w")
ax.set_title("Campaign Spend (dollars)")
fig.tight_layout()

その結果、チーム全体と簡単に共有できる見事なヒートマップビジュアライゼーションが生成されます。

Pythonを使ったデータビジュアライゼーション初心者ガイド

最後に

企業がより良く事実に基づいた意思決定をするためにデータに依存し続けるにあたり、データビジュアライゼーションの重要性はさらに高まるでしょう。グラフやチャートなどのビジュアライゼーション技法は従来のスプレッドシートや時代遅れのデータレポートと比較してデータの理解においてより効率的なため、Pythonなどのツールを使用してデータビジュアライゼーションを作成することはあらゆるクロスファンクショナルチームにとって必要不可欠です。

しかし、データとインサイトの重要性に関係なく、単にそれらを所有しているだけでは足りません。データの潜在力を引き出すために、そのデータを日々の業務ワークフローに適合するアクションに変える必要があります。Slingshotでインサイトからアクションへシームレスに移行できます

Slingshotを使用すれば、データの分析、見事なデータビジュアライゼーションの作成、組織内のすべての人との協業、プロジェクト全体の簡単な管理を、すべて同じプラットフォームから行うことができます。

詳しく知りたいですか。Slingshotを無料で試して、実用的なインサイトを活用してデータを使いやすくする方法を確認し、チームがデータドリブンカルチャーを育成して生産性を向上させるのをお手伝いします。