シーボーン ヒストグラム プロット

Salman Mehmood 2024年2月15日
  1. Seaborn histplot() 関数を使用して Python でヒストグラムをプロットする
  2. Seaborn の FacetGrid() 関数を使用して複数のヒストグラムをグループ化する
シーボーン ヒストグラム プロット

この記事では、Seaborn の histplot() 関数を使用してヒストグラムを作成する方法について説明します。 また、distplot() 関数がエラーをスローする理由も調べます。

次に、Seaborn で複数のプロットをグループ化する方法を学習します。

Seaborn histplot() 関数を使用して Python でヒストグラムをプロットする

Seaborn に精通している場合、またはドキュメントに従っている場合は、ヒストグラムを作成する以前の方法が distplot を使用していたことを知っているかもしれません。 そのすべてが最新バージョンの Seaborn で変更されました。

distplot() が廃止されたことを示すこの警告が表示されます。代わりに、histplot() を使用してヒストグラムを作成する必要があります。

Seaborn バージョン 0.11.2 には 3つの新しい分布プロットが付属しているので、新しい seaborn histplot の基本から始めて、コードを書きましょう。

先に進み、Seaborn とエイリアスを sb としてインポートします。 従うには、最新の Seaborn バージョンで作業する必要があることをもう一度思い出してください。

そのため、次のコマンドでバージョンを確認してください。

import seaborn as sb

sb.__version__

出力:

'0.11.2'

次に、Seaborn ライブラリからいくつかのデータをロードします。 これらのデータはペンギンに関するものです。

PG_Data = sb.load_dataset("penguins")
PG_Data.head()

ペンギンの種類ごとにさまざまな測定値があります。

シーボーン ヒストグラム プロット - 出力 1

PG_Data.shape

344 個の観測値がありますが、NULL 値を削除して、333 個の観測値を残します。

PG_Data.dropna(inplace=True)
PG_Data.shape

出力:

(333, 7)

これはプロットの目的で行っているだけなので、先に進んで Seaborn ヒストグラム プロットを作成しましょう。

まず、Seaborn スタイルを使用し、Seaborn ライブラリを参照して、sb.histplot() を呼び出します。

次に、penguins から bill_length_mm シリーズを渡します。 ヒストグラムをプロットするために、データフレームから 1つの列のみを選択しています。

sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)

シーボーン ヒストグラム プロット - 出力 2

ここで構文を実行する別の方法もあります。 完全なデータフレームをこの data 引数に渡してから、ヒストグラムでプロットしたい任意の列を渡すことができます。

sb.histplot(x="bill_length_mm", data=PG_Data)

シーボーン ヒストグラム プロット - 出力 3

縦棒の代わりに横棒を作成できます。 代わりに、これを y に切り替えて、水平ヒストグラムを作成できます。

sb.histplot(y="bill_length_mm", data=PG_Data)

Seaborn ヒストグラム プロット - 出力 4

古い seaborn distplot に精通している場合は、distplot を使用すると、kde プロットがヒストグラムの上にプロットされ、それを新しい seaborn histplot に戻すことができることを知っているでしょう。

この kde 引数を参照して、それを True に等しく設定しましょう。

sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)

これは、Seaborn が古い distplot バージョン用に作成したものと非常によく似ています。 kde プロットに慣れていない場合は、ここを読んでください。

Seaborn ヒストグラム プロット - 出力 5

binsbinwidth、および binrange 引数で histplot() を使用する

デフォルトでは、Seaborn はデータに適したビンの数を決定しようとしますが、いくつかの異なるものを受け入れる bins という引数を使用して切り替えることができます。

bins が 30 に等しいとしましょう。これにより、範囲全体で等間隔に 30 個の個別のビンが作成され、おおよその分布が示されます。

sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)

シーボーン ヒストグラム プロット - 出力 6

何らかの理由で、これらのビンを表示したい特定の場所があります。 これらの各数値がヒストグラム ビンの開始位置と停止位置であるリストを渡すこともできます。

sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])

Seaborn ヒストグラム プロット - 出力 7

何らかの理由で、ビンを不規則な間隔にすることを選択できます。 非常に役立つことがわかっている 2つの引数は、binwidthbinrange です。

binwidth では、設定できる任意の値に設定できます。 ただし、10 を入れたので、10 単位かかります。

binrange 引数を使用してビンの範囲を定義できます。タプルを渡して開始値と終了値を指定する必要があります。

sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))

Seaborn ヒストグラム プロット - 出力 8

Seaborn の FacetGrid() 関数を使用して複数のヒストグラムをグループ化する

ここで、Seaborn 関数 FacetGrid() について説明します。 catplotrelplot、および displot のバックボーンです。

FacetGrid() 関数を使用してプロットをグループ化できます。FacetGrid の背後にある主なアイデアは、小さな倍数を作成することです。

これは、データ内のカテゴリ特徴を選択し、カテゴリごとに 1つのプロットを作成することを意味します。これらすべてをわずか数行のコードで実行できます。 たとえば、企業 A、B、および C の市場シェアにより、さまざまなカテゴリの傾向を比較できます。

シーボーン ヒストグラム プロット - 例

コードに飛び込みましょう。 上で見たように、ペンギンに関するいくつかのデータを見ていきます。

次に、FacetGrid を作成します。 これを行うには、Seaborn ライブラリを参照し、関数 FacetGrid() を入力します。また、ペンギンのデータフレームも提供する必要があります。

空白の x 軸と y 軸を作成して、データを配置する準備を整えます。 行または列のディメンション、またはその両方を指定できます。

この列の次元を提供し、ペンギンが住んでいる によって小さな倍数を分割したいとしましょう。

sb.set_style("darkgrid")
sb.FacetGrid(PG_Data, col="island")

3つの島が見つかったため、島ごとに 3つのサブプロットが作成されました。

Seaborn ヒストグラム プロット - 出力 9

FacetGrid をセットアップしたので、ステップ 2 に進むことができます。これは、いくつかのプロットをこれらの軸にマッピングすることです。 map() 関数を呼び出し、この関数内で、作成したい図を提供する必要があります。

これらの図のそれぞれについてヒストグラム プロットを作成し、関心のあるペンギン データフレームの列を定義する必要もあります。関心があるのは flipper_length_mm です。

FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")

各島ごとにすべてのデータをグループ化し、それらのグループごとにヒストグラム プロットを作成します。 ほんの数行のコードで、これらの小さな倍数をすべて構築できます。

シーボーン ヒストグラム プロット - 出力 10

FG と呼ばれる FacetGrid オブジェクトには、map_dataframe と呼ばれる別のメソッドもあります。これは少し異なりますが、マップと同様のことを実現します。

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")

Seaborn ヒストグラム プロット - 出力 11

map() 関数と同じことを行いますが、少し異なります。 ここでの大きな違いの 1つは、map_dataframe() が可変引数を使用できることです。 したがって、xflipper_length_mm と定義するか、y を定義することができます。

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")

水平方向の histplot をプロットします。

シーボーン ヒストグラム プロット - 出力 12

ここからhistplotに関連する他のものを読んでください。

完全なコード:

# In[1]:

import seaborn as sb

# In[2]:

sb.__version__

# In[3]:

PG_Data = sb.load_dataset("penguins")

# In[4]:

PG_Data.head()

# In[5]:

PG_Data.shape

# In[6]:

PG_Data.dropna(inplace=True)

# In[7]:

PG_Data.shape

# In[8]:

sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)

# In[9]:

sb.histplot(x="bill_length_mm", data=PG_Data)

# In[10]:

sb.histplot(y="bill_length_mm", data=PG_Data)


# In[11]:

sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)

# In[12]:

sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)

# In[13]:

sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])

# In[14]:

sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))

# ##### FacetGrid

# In[15]:

sb.set_style("darkgrid")
FG = sb.FacetGrid(PG_Data, col="island")

# In[16]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")

# In[17]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")

# In[18]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")
著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Seaborn Plot