Seaborn を使用して高度な統計グラフを実装する方法

この記事は、Huawei Cloud Community「Seaborn を使用して箱ひげ図から多変数関係探索まで高度な統計チャートを実装する」(著者: Lemony Hug) から共有されたものです。

データ サイエンスとデータ視覚化の分野では、Seaborn は人気のある Python 視覚化ライブラリです。 Matplotlib に基づいて構築されており、よりシンプルで美しいグラフィカル インターフェイスを提供し、いくつかの高度な統計グラフ機能も備えています。この記事では、Seaborn を使用して高度な統計グラフを実装する方法と、対応するコード例を紹介します。

Seaborn をインストールする

まず、Seaborn がインストールされていることを確認してください。 pip を使用してインストールできます。

pip インストール Seaborn

必要なライブラリをインポートする

開始する前に、Seaborn とその他の一般的に使用されるデータ処理および視覚化ライブラリをインポートする必要があります。

Seaborn を SNS としてインポートする
matplotlib.pyplotをpltとしてインポート
numpyをnpとしてインポート
パンダをPDとしてインポートする

箱ひげ図

箱ひげ図は、データの分布を表示するために使用される一般的に使用される統計グラフです。 Seaborn は、箱ひげ図を描くためのシンプルで使いやすいインターフェイスを提供します。

# ランダムデータを生成する
np.random.seed(0)
データ = np.random.normal(loc=0、scale=1、size=100)

# 箱ひげ図を描く
sns.boxplot(データ=データ)
plt.title('ランダム データの箱ひげ図')
plt.show()

この例では、ランダムなデータセットを生成し、関数を使用して箱ひげ図をプロットしました。このグラフを通じて、中央値、四分位数、外れ値などのデータの分布を直感的に理解できます。 sns.boxplot() 

ヴァイオリンプロット

バイオリン プロットは、箱ひげ図とカーネル密度推定を組み合わせて、データの分布をより直観的に表示するグラフです。

# ランダムデータを生成する
np.random.seed(0)
data1 = np.random.normal(loc=0、scale=1、size=100)
data2 = np.random.normal(loc=2、scale=1.5、size=100)
データ = np.concatenate([データ 1, データ 2])
ラベル = ['グループ 1'] * 100 + ['グループ 2'] * 100

# ヴァイオリンのプロットを描く
sns.violinplot(x=ラベル、y=データ)
plt.title('2 つのグループのヴァイオリン プロット')
plt.show()

この例では、2 つの異なるランダム データ セットを生成し、関数を使用してバイオリン プロットをプロットしました。このグラフを通じて、2 つのデータ セットの分布を比較し、違いを観察できます。 sns.violinplot() 

ヒートマップ

ヒート マップは、色を使用してデータ マトリックスを表すチャートであり、相関関係やデータ密度を示すためによく使用されます。

# ランダムデータを生成する
np.random.seed(0)
データ = np.random.rand(10, 10)

# ヒートマップを描画する
sns.heatmap(data, annot=True, cmap='green')
plt.title('ランダム データのヒートマップ')
plt.show()

この例では、ランダムな 10x10 行列を生成し、関数を使用してヒート マップを描画しました。このグラフにより、データ間の相関関係やデータの分布を直感的に理解することができます。 sns.heatmap() 

カーネル密度推定プロット

カーネル密度推定プロットは、観測データを平滑化して連続確率密度曲線を生成することにより、データ密度関数を推定するノンパラメトリックな方法です。

# ランダムデータを生成する
np.random.seed(0)
データ = np.random.normal(loc=0、scale=1、size=100)

# カーネル密度推定マップを描画
sns.kdeplot(データ、シェード=True)
plt.title('ランダム データのカーネル密度推定プロット')
plt.show()

この例では、一連のランダム データを生成し、関数を使用してカーネル密度推定値をプロットしました。このグラフはデータの確率密度分布を示しており、データの分布特性をより深く理解するのに役立ちます。 sns.kdeplot() 

ペアプロット

ペア関係図は、データセット内の変数間の関係を視覚化するために使用される図の一種で、探索的なデータ分析に役立ちます。

# ランダムなデータセットを生成する
np.random.seed(0)
データ = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])

# ペアごとの関係図を描く
sns.ペアプロット(データ)
plt.suptitle('ランダム データのペア プロット', y=1.02)
plt.show()

この例では、ランダム データ セットを生成し、関数を使用してペアごとの関係をプロットしました。このグラフは、散布図や単変量分布プロットなど、データセット内のすべての 2 つの変数間の関係を示し、変数間のパターンや相関関係を発見するのに役立ちます。 sns.pairplot() 

クラスターマップ

クラスター ダイアグラムは、データ セット内の変数間の類似性を表示するために使用される図で、類似した変数がクラスター化アルゴリズムによってグループ化されて表示されます。

# ランダムなデータセットを生成する
np.random.seed(0)
データ = pd.DataFrame(np.random.rand(10, 10), columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H '、'私'、'J'])

# クラスタリング図を描く
sns.clustermap(data, cmap='viridis')
plt.title('ランダム データのクラスター マップ')
plt.show()

この例では、ランダム データ セットを生成し、関数を使用してクラスターをプロットしました。このグラフは、データ セット内の変数間の類似性を示し、クラスタリング アルゴリズムを通じて類似した変数をグループに表示して、変数間のパターンや構造を発見するのに役立ちます。 sns.clustermap() 

クラスターマップ

クラスタリング ヒート マップは、階層クラスタリング アルゴリズムに基づいたヒート マップであり、データをクラスタリングし、クラスタリングの結果に従ってデータを再配置して、データの構造と相関関係をより適切に表示します。

# ランダムデータを生成する
np.random.seed(0)
データ = np.random.rand(10, 10)

# クラスタリングヒートマップを描画する
sns.clustermap(data, cmap='coolwarm')
plt.title('ランダム データのクラスターマップ')
plt.show()

この例では、ランダムな 10x10 行列を生成し、関数を使用してクラスター ヒートマップをプロットしました。このグラフを通じて、データ間のクラスタリング関係と、異なるデータ ポイント間の類似性を明確に見ることができます。 sns.clustermap() 

分類散布図 (ペアプロット)

カテゴリ散布図は、複数の変数間の関係を同時に表示するグラフで、データセット内の異なる変数間の相関関係を調査するためによく使用されます。

#サンプルデータセットをロードする
iris = sns.load_dataset('iris')

# 分類散布図を描く
sns.pairplot(iris, hue='species', markers=['o', 's', 'D'])
plt.title('アイリス データセットのペアプロット')
plt.show()

この例では、Seaborn に付属のアイリス データ セットを使用し、関数を使用して分類散布図を描画します。このチャートを使用すると、アヤメの種類ごとの特性の違いと、異なる特性間の相関関係が一目でわかります。 sns.pairplot() 

時系列プロット

時系列グラフは、時系列データを表示するために使用されるグラフであり、時間の経過に伴うデータの傾向や周期性を分析するためによく使用されます。

# 時系列データを生成する
日付 = pd.date_range(start='2022-01-01', end='2022-12-31')
データ = np.random.randn(len(日付))

# データフレームを作成する
df = pd.DataFrame({'Date': 日付、'Value': データ})

# 時系列グラフを描画する
sns.lineplot(x='日付', y='値', データ=df)
plt.title('ランダム データの時系列プロット')
plt.xlabel('日付')
plt.ylabel('値')
plt.show()

この例では、ランダムな時系列データを生成し、関数を使用して時系列をプロットしました。このグラフを通じて、時間の経過に伴うデータの傾向と周期性を明確に確認できます。 sns.lineplot() 

高度なカラーパレット

Seaborn は、ユーザーがチャート内で適切な配色を選択して重要なポイントを強調したり、視覚効果を強化したりするのに役立つ豊富なパレット機能を提供します。

# 高度なパレットを使用する
current_palette = sns.color_palette('husl', 5)

# ヒストグラムを描く
sns.barplot(x=np.arange(5)、y=np.random.rand(5)、palette=current_palette)
plt.title('高度なカラー パレットを使用した棒グラフ')
plt.show()

この例では、関数を使用して Husl パレットを選択し、5 色のパレットを生成しました。次に、このパレットを使用してヒストグラムを描画し、効果を実証しました。 sns.color_palette() 

カスタマイズされた印刷スタイル

Seaborn を使用すると、ユーザーは個々のニーズに合わせてさまざまなスタイルを設定して、グラフの外観をカスタマイズできます。

# カスタムスタイルを設定する
sns.set_style('ホワイトグリッド')

# 散布図を描く
sns.scatterplot(x=np.random.randn(100), y=np.random.randn(100))
plt.title('カスタマイズされたスタイルの散布図')
plt.show()

この例では、関数を使用してグラフ スタイルを白いグリッドに設定し、散布図を描画してその効果を示します。 sns.set_style() 

マルチパネル描画(ファセットグリッド)

Seaborn は、複数のサブプロットを同時に表示して、異なるサブセット間の関係をより適切に比較できるマルチパネル プロット機能を提供します。

#サンプルデータセットをロードする
ヒント = sns.load_dataset('ヒント')

#FacetGrid オブジェクトを作成する
g = sns.FacetGrid(ヒント、col='時間'、行='喫煙者')

# ヴァイオリンのプロットを描く
g.map(sns.violinplot, 'total_bill')
plt.show()

この例では、関数を使用して FacetGrid オブジェクトを作成し、異なるサブグラフにバイオリン プロットを描画して、異なるサブセット間のデータの分布を示します。 sns.FacetGrid() 

データ分布比較(Distribution Comparison)

Seaborn は、カーネル密度推定やヒストグラムの使用など、さまざまなデータ分布間の差異を比較するいくつかの方法を提供します。

#サンプルデータセットをロードする
iris = sns.load_dataset('iris')

# カーネル密度推定マップを描画
sns.kdeplot(data=iris, x='sepal_length', hue='species', fill=True)
plt.title('がく片の長さの分布比較')
plt.show()

この例では、関数を使用してアヤメ データセット内の種間のがく片の長さのカーネル密度推定値をプロットし、それらの分布を比較します。 sns.kdeplot() 

グループ化された視覚化

Seaborn は、カテゴリ変数を使用してデータをグループ化し視覚化するなど、データのグループ化を簡単に表示できます。

#サンプルデータセットをロードする
タイタニック = sns.load_dataset('タイタニック')

# 分類箱ひげ図を描画する
sns.boxplot(data=タイタニック, x='クラス', y='年齢', hue='性別')
plt.title('階級および性別別の年齢のグループ箱ひげ図')
plt.show()

この例では、関数を使用してタイタニック号データセット内のさまざまな客室クラスと性別に対する年齢の影響をプロットし、その分布を比較します。 sns.boxplot() 

多変量関係の探索

Seaborn は、散布図行列やペアごとの関係プロットの使用など、複数の変数間の関係を調査するいくつかの方法を提供します。

#サンプルデータセットをロードする
iris = sns.load_dataset('iris')

# 散布図行列を描画します
sns.pairplot(data=iris, hue='species')
plt.title('多変量関係を探索するためのペアプロット')
plt.show()

この例では、関数を使用して虹彩データセット内のさまざまな特徴間のペアごとの関係をプロットし、それらの間の多変量関係を調査します。 sns.pairplot() 

要約する

この記事では、Seaborn を使用して高度な統計グラフを実装する方法を紹介し、豊富なコード例を提供します。まず、データの分布や相関関係を視覚的に表示できる箱ひげ図、バイオリン プロット、ヒート マップなどの一般的な統計グラフの描画方法を学びました。次に、ユーザーがグラフの外観をカスタマイズし、視覚化効果を高めるのに役立つ、カラー パレット、カスタム グラフ スタイル、マルチパネル描画などの高度な機能を検討しました。次に、データ分布比較、データ グループ表示、多変数関係探索などの高度なアプリケーションをいくつか紹介しました。これらの方法は、ユーザーがデータ間の関係やパターンをより深く理解するのに役立ちます。この記事を学習することで、読者はデータ視覚化に Seaborn を使用する基本的なスキルを習得し、その豊富な機能と柔軟なインターフェイスをデータ分析と探索に使用できるようになります。 Seaborn の強力な機能とシンプルなインターフェイスにより、Seaborn はデータ サイエンティストやアナリストにとって不可欠なツールの 1 つとなっています。

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

「Celebrated More Than Years 2」の海賊版リソースが npm にアップロードされたため、npmmirror は unpkg サービスを停止せざるを得なくなり、 最初の創設者の 数百人が参加して、一斉に米国に向かいました。 フロントエンド視覚化ライブラリと Baidu の有名なオープンソース プロジェクト ECharts - Fish 詐欺師をサポートするために「海へ行く」が、TeamViewer を使用して 398 万を送金しました。リモート デスクトップ ベンダーは何をすべきでしょうか? 周宏宜: Google に残された時間はあまり多くありません。すべての製品をオープンソースにすることが推奨されています。 ある有名なオープンソース企業の元従業員が、部下から異議を申し立てられた後、激怒しました。妊娠中の女性従業員を解雇しました。Google は Android 仮想マシンで ChromeOS を実行する方法を示しました。 ここで time.sleep(6) はどのような役割を果たしますか? マイクロソフト、中国のAIチームが「米国のために荷造りしている」という噂に反応 人民日報オンラインはオフィスソフトのマトリョーシカのような課金についてコメント:「セット」を積極的に解決することによってのみ、私たちは未来を手に入れることができる
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/11179361