Skip to content

[Streamlitチュートリアル] インタラクティブなデータビジュアライズを迅速に作成する

Streamlitは、開発者が簡単にインタラクティブなWebアプリケーションを作成できるオープンソースのツールです。データサイエンティストやエンジニアがデータの可視化や機械学習のタスクを効率化するために設計されています。Streamlitを使用すると、わずか数行のコードでシンプルなPythonスクリプトを美しいデータ駆動のWebアプリケーションに変換することができます。

データの可視化は、データ分析の重要な要素です。グラフィカルな形式でデータセットを表現することで、複雑なデータセットを理解することができます。Streamlitは、棒グラフ、折れ線グラフ、プロット、円グラフ、ヒストグラムなど、さまざまなタイプの可視化をサポートしています。この記事では、Streamlitを使用してこれらの可視化を作成するプロセスを案内します。

PyGWalkerを使用してStreamlitで簡単にインタラクティブなデータビジュアライズを作成する

PyGWalker (opens in a new tab)は、Streamlit AgGridの代替として素晴らしい結果をもたらす別の素晴らしいツールです。

PyGWalker + Streamlitオンラインデモ (opens in a new tab)

PyGWalker (opens in a new tab)は、TableauのようなUIを簡単に自身のStreamlitアプリに組み込むのを助けるPythonライブラリです。

この強力なデータビジュアライゼーションPythonライブラリを使用して、Streamlitアプリを強化するための詳細な手順をコーディングが楽しいというSvenさんによって作成された素晴らしいビデオ (opens in a new tab)で確認してみてください!


PyGWalkerコミュニティへのSvenと彼の素晴らしい貢献 (opens in a new tab)に特別なお礼を申し上げます!

さらに、以下のリソースも参照してください:

PyGWalkerを使用してStreamlitでデータを可視化する (opens in a new tab)

Streamlit棒グラフ

棒グラフは、カテゴリデータを長方形の棒で表現し、それらが表現する値に比例した大きさで表示するグラフです。Streamlitでは、st.bar_chart()関数を使用して棒グラフを作成します。これは、異なるカテゴリのデータを比較するためのシンプルで効果的な方法です。

import streamlit as st
import pandas as pd
 
# サンプルのデータフレームを作成する
data = pd.DataFrame({
  'Fruits': ['りんご', 'オレンジ', 'バナナ', 'ぶどう'],
  'Quantity': [15, 25, 35, 45]
})
 
# 棒グラフを作成する
st.bar_chart(data)

上記のコードスニペットでは、必要なライブラリをインポートし、サンプルのデータフレームを作成します。次に、st.bar_chart()関数を使用して棒グラフを作成します。このチャートでは、データフレームのインデックスがx軸に、値がy軸に自動的に使用されます。

st.bar_chart()関数は使いやすいですが、カスタマイズオプションが限られています。より複雑なシナリオでは、MatplotlibやPlotlyなどの他のライブラリを使用する必要があるかもしれません。

Streamlit折れ線グラフ

折れ線グラフは、データポイントを直線セグメントで結んだ一連のデータポイントとして情報を表示するグラフの一種です。多くの分野で一般的な基本的なグラフの一種です。Streamlitでは、st.line_chart()関数を使用して折れ線グラフを作成します。

import streamlit as st
import pandas as pd
 
# サンプルのデータフレームを作成する
data = pd.DataFrame({
  'Year': [2018, 2019, 2020, 2021],
  'Sales': [350, 480, 550, 680]
})
 
# 折れ線グラフを作成する
st.line_chart(data)

上記のコードスニペットでは、サンプルのデータフレームを作成し、st.line_chart()関数を使用して折れ線グラフを作成します。このチャートでは、データフレームのインデックスがx軸に、値がy軸に自動的に使用されます。

Streamlitの折れ線グラフは使いやすいですが、カスタマイズのオプションは少ないです。より複雑なシナリオでは、MatplotlibやPlotlyなどの他のライブラリを使用する必要があるかもしれません。

Streamlitでのプロット

Streamlitは、Matplotlib、Plotly、Vega-Liteなど、さまざまなライブラリをサポートしており、シンプルな折れ線グラフから複雑なインタラクティブなプロットまでさまざまな可視化を作成できます。

たとえば、Matplotlibを使用してヒストグラムを作成し、st.pyplot()関数を使用してStreamlitで表示することができます。

import streamlit as st
import matplotlib.pyplot as plt
 
import numpy as np
 
# いくつかのランダムなデータを生成する
data = np.random.normal(0, 1, size=100)
 
# ヒストグラムを作成する
plt.hist(data, bins=20)
 
# プロットをStreamlitで表示する
st.pyplot()

上記のコードスニペットでは、まずいくつかのランダムなデータを生成します。その後、Matplotlibのplt.hist()関数を使用してヒストグラムを作成します。最後に、st.pyplot()関数を使用してプロットをStreamlitで表示します。

Streamlitは、Plotlyなどのインタラクティブなプロットライブラリもサポートしています。これにより、ユーザーがズームやパン、ホバー操作を使用して詳細な情報を取得できるインタラクティブなプロットを作成できます。

Streamlit円グラフ

パイチャートは、数値の割合を示すためにスライスに分割された円形の統計グラフです。Streamlitにはパイチャートを作成するための組み込み機能はありませんが、Matplotlibなどの他のライブラリを使用して作成し、st.pyplot()関数を使用してStreamlitで表示することができます。

import streamlit as st
import matplotlib.pyplot as plt
 
# プロットするデータ
labels = 'Python', 'Java', 'C++', 'JavaScript'
sizes = [215, 130, 245, 210]
 
# パイチャートを作成する
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
 
# Streamlitでプロットを表示する
st.pyplot()

上記のコードスニペットでは、まずプロットするデータを定義します。次に、Matplotlibのplt.pie()関数を使用してパイチャートを作成します。最後に、st.pyplot()関数を使用してStreamlitでプロットを表示します。

Streamlitでのパイチャートの作成は、バーチャートや折れ線グラフと比較して少し手間がかかるかもしれませんが、より柔軟性とカスタマイズオプションを提供します。

Streamlitヒストグラム

ヒストグラムは、数値データの分布の正確な表現です。これは連続変数の確率分布の推定です。Streamlitでは、Matplotlibと組み合わせてst.pyplot()関数を使用してヒストグラムを作成することができます。

import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
 
# ランダムなデータを生成する
data = np.random.normal(0, 1, size=100)
 
# ヒストグラムを作成する
plt.hist(data, bins=20)
 
# Streamlitでプロットを表示する
st.pyplot()

上記のコードスニペットでは、まずランダムなデータを生成します。次に、Matplotlibのplt.hist()関数を使用してヒストグラムを作成します。最後に、st.pyplot()関数を使用してStreamlitでプロットを表示します。

ヒストグラムは、データの分布を視覚化するための強力なツールです。データの全体的な散らばり、歪度、尖度についての洞察を提供することができます。

Streamlitでの高度なプロット技術

Streamlitのさまざまなプロットライブラリとの互換性により、高度な可視化を作成するための無限の可能性が広がります。たとえば、Plotlyライブラリを使用してインタラクティブな3Dプロット、地理プロットなどを作成することができます。

import streamlit as st
import plotly.express as px
 
# 3D散布図を作成する
fig = px.scatter_3d(x=[1, 2, 3, 4], y=[4, 3, 2, 1], z=[1, 4, 2, 3])
st.plotly_chart(fig)

上記のコードスニペットでは、まず必要なライブラリをインポートします。次に、Plotlyのpx.scatter_3d()関数を使用して3D散布図を作成します。最後に、st.plotly_chart()関数を使用してStreamlitでプロットを表示します。

Streamlitのカスタマイズ可能な可視化

Streamlitは、可視化をカスタマイズするためのいくつかのオプションを提供しています。たとえば、カラーパレットの変更、タイトルやラベルの追加、軸のスケールの調整などが可能です。

import streamlit as st
import matplotlib.pyplot as plt
 
# ランダムなデータを生成する
data = np.random.normal(0, 1, size=100)
 
# カスタムカラーやタイトル付きのヒストグラムを作成する
plt.hist(data, bins=20, color='skyblue', edgecolor='black')
plt.title('My Custom Histogram')
 
# Streamlitでプロットを表示する
st.pyplot()

上記のコードスニペットでは、まずランダムなデータを生成します。次に、カスタムカラーやタイトルのあるヒストグラムを作成します。最後に、st.pyplot()関数を使用してStreamlitでプロットを表示します。

結論

Streamlitは、インタラクティブなデータの可視化を作成するための強力なツールです。シンプルな構文とさまざまなプロットライブラリとの互換性により、シンプルな棒グラフや折れ線グラフから複雑なインタラクティブなプロットまで、さまざまな可視化を作成することができます。データサイエンティストが調査結果を共有するためのツールであるか、データ駆動型のWebアプリケーションを構築する開発者であるかに関係なく、Streamlitが対応しています。

StreamlitアプリをTableauのような素晴らしいデータ分析&データ可視化ツールに変えるという素晴らしいツール、PyGWalkerを知っていますか?

PyGWalker (opens in a new tab)は、簡単にTableauのようなUIを自分のStreamlitアプリに組み込むのを助けるPythonライブラリです。

PyGWalker for Data visualization in Streamlit (opens in a new tab)

よくある質問

1. Streamlitでパイチャートを作成することはできますか?

Streamlitにはパイチャートを作成するための組み込み機能はありませんが、Matplotlibなどの他のライブラリを使用して作成し、st.pyplot()関数を使用してStreamlitで表示することができます。

2. Streamlitの可視化をカスタマイズする方法はありますか?

Streamlitでは、カラーパレットの変更やタイトルやラベルの追加、軸のスケールの調整など、可視化をカスタマイズするためのいくつかのオプションが用意されています。具体的なカスタマイズオプションは、使用しているプロットライブラリに依存します。

3. Streamlitでインタラクティブなプロットを作成することはできますか?

はい、StreamlitはPlotlyやVega-Liteなど、いくつかのインタラクティブなプロットライブラリに対応しています。これにより、ユーザーがズーム、パン、ホバーなどの操作を行い、詳細な情報を取得できるインタラクティブなプロットを作成することができます。