Skip to content

Pandasプロットヒストグラム:Pythonでヒストグラムを作成およびカスタマイズする

Updated on

データ可視化はデータ分析の重要な側面であり、PythonのPandasライブラリは洞察に満ちた可視化を作成することができる強力なツールです。ヒストグラムはそのような可視化の一つであり、データセットの分布の視覚的表現です。この記事では、Pandasを使用してヒストグラムをプロットし、ビンをカスタマイズし、複数の列をプロットする方法などを探っていきます。また、よくある質問に答え、プロセスをより理解するための例を提供します。

ヒストグラムは、大規模なデータセットを扱う際に特に役立ちます。データのビジュアルな要約を提供することができます。連続または離散のデータセットの基礎となる頻度分布を理解するのに役立ちます。これは、年齢層のようなデータを扱う場合に特に有用です。分布を理解することで価値ある示唆を与えることができます。

Python Pandas Dataframeからノーコードでデータ可視化をすばやく作成したいですか?

PyGWalker は、可視化に関するTableauスタイルのユーザーインターフェースにPandasデータフレーム(およびpolarsデータフレーム)を変換することにより、Jupyter Notebookのデータ分析とデータ可視化のワークフローを簡素化するためのPythonライブラリです。 PyGWalker (opens in a new tab)

データ可視化のPyGWalker (opens in a new tab)

Pandasでヒストグラムを作成する

Pandasでヒストグラムを作成するのは簡単です。hist() 関数のおかげで、PandasのDataFrameまたはSeriesのデータの分布を簡単に視覚化することができます。以下は、ヒストグラムを作成する基本的な例です。

import pandas as pd
import matplotlib.pyplot as plt
 
# シンプルなデータフレームを作成します
data = {'values': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]}
df = pd.DataFrame(data)
 
# ヒストグラムをプロットします
df['values'].hist()
plt.show()

この例では、まず必要なライブラリ、pandasとmatplotlibをインポートします。次に、シンプルなpandasのDataFrameを作成し、'values'列のヒストグラムをプロットするために hist() 関数を使用します。 plt.show() 関数はプロットを表示するために使用されます。

Pandasヒストグラムでビンをカスタマイズする

Pandasの hist() 関数は、デフォルトで10個のビンを使用します。ただし、必要に応じてビンの数をカスタマイズすることができます。 hist() 関数の bins パラメータは、ヒストグラムのビンの数を指定するために使用されます。

たとえば、ビンの数を20に増やしたい場合は、次のようにすることができます。

df['values'].hist(bins=20)
plt.show()

Pandasのヒストグラムでビンをカスタマイズすることで、データの分布の詳細な表示を得ることができます。ただし、適切なビンの数を選ぶことが重要です。ビンの数が多すぎると、ヒストグラムがデータに密接すぎて「全体像」を見失う可能性があります。一方、ビンの数が少なすぎると、データが過度に単純化され、有用なパターンを識別するのが困難になる可能性があります。

Pandasで複数の列を持つヒストグラムをプロットする

Pandasでは、複数の列を持つヒストグラムをプロットすることもできます。これは、異なる変数の分布を比較したい場合に特に有用です。複数の列を持つヒストグラムをプロットするには、単純に hist() 関数に列を渡すだけです。

複数の列を持つヒストグラムをプロットする例を以下に示します。

# 2つの列を持つデータフレームを作成します
data = {'values1': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4],
        'values2': [1, 1, 2, 2, 3, 3, 3, 4, 4, 4]}
df = pd.DataFrame(data)
 
# 複数の列を持つヒストグラムをプロットします
df.hist(bins=20, alpha=0.5)
plt.show()

この例では、'values1'と'values2'の2つの列を持つDataFrameを作成します。次に、DataFrameに対して hist() 関数を呼び出し、各列のヒストグラムをプロットします。 alpha パラメータはヒストグラムの透明度を設定するために使用され、それを比較しやすくします。

Pandasでグループごとにヒストグラムをプロットする

Pandasのもう一つの強力な機能は、グループごとにヒストグラムをプロットすることができる点です。これは、異なるグループ間での変数の分布を比較したい場合に特に役立ちます。

たとえば、異なる職業の人々の年齢が含まれているDataFrameがあるとしましょう。職業ごとの年齢のヒストグラムを次のようにプロットすることができます。

# 年齢と職業を持つデータフレームを作成します
data = {'age': [23, 25, 22, 30, 32, 40, 35, 24, 28, 35],
        'profession': ['engineer', 'doctor', 'engineer', 'doctor', 'engineer', 'doctor', 'engineer', 'doctor', 'engineer', 'doctor']}
df = pd.DataFrame(data)
 
# グループごとにヒストグラムをプロットします
df.groupby('profession')['age'].hist(alpha=0.6)
plt.legend(['エンジニア', 'ドクター'])
plt.show()

この例では、まず'age'と'profession'の2つの列を持つDataFrameを作成します。次に、DataFrameを'profession'でグループ化し、'age'列に対して hist() 関数を呼び出します。これにより、各職業ごとの年齢のヒストグラムがプロットされます。 alpha パラメータはヒストグラムの透明度を設定するために使用され、legend() ファンクションはプロットに凡例を追加するために使用されます。

Pandasで正規化されたヒストグラムをプロットする

時には、データの分布を個数ではなく割合として表すために正規化されたヒストグラムをプロットすることが便利です。これは、 hist() 関数の density パラメータを True に設定することで実現できます。

正規化されたヒストグラムをプロットする例を以下に示します。

# 正規化されたヒストグラムをプロットします
df['values1'].hist(density=True)
plt.show()
 
この例では、 `density=True` 引数により、ヒストグラムの下の面積が1に合計され、実質的に確率密度関数が得られます。
 
## Pandasヒストグラムでのサブプロットの作成
 
Pandasでは、ヒストグラムのプロット時にサブプロットを作成することもできます。これは、複数の変数の分布を並べて比較したい場合に特に便利です。サブプロットを作成するには、 `hist()` 関数の `subplots=True` 引数を使用します。
 
以下は例です:
 
```python
# サブプロットを作成します
df.hist(bins=20, alpha=0.5, subplots=True, layout=(1,2))
plt.show()

この例では、 'values1' と 'values2' の2つのサブプロットを単一の行に作成します。 layout パラメータは、サブプロットの配置を指定するために使用されます。

Pandasヒストグラムにエラーバーを追加する

ヒストグラムにエラーバーを追加することで、データの変動性や不確実性を視覚的に表示することができます。Pandasは直接ヒストグラムにエラーバーを追加することはサポートしていませんが、これは matplotlib ライブラリを使用して実現することができます。

以下は例です:

import numpy as np
 
# 平均と標準偏差を計算します
mean = df['values1'].mean()
std = df['values1'].std()
 
# エラーバーを追加してヒストグラムをプロットします
plt.hist(df['values1'], bins=20, alpha=0.5)
plt.errorbar(mean, 5, xerr=std, fmt='o')
plt.show()

この例では、まず 'values1' 列の平均と標準偏差を計算します。次に、ヒストグラムをプロットし、平均位置にエラーバーを追加します。 matplotliberrorbar() 関数を使用してエラーバーを追加します。

結論

ヒストグラムはデータの視覚化において強力なツールであり、Pythonのpandasライブラリはヒストグラムを作成しカスタマイズするための多機能な関数を提供しています。単純なヒストグラムのプロット、ビンのカスタマイズ、複数の列のプロット、サブプロットの作成など、pandasはあなたをサポートします。覚えておくべきことは、効果的なデータの視覚化は洞察に満ちたプロットを作成するだけでなく、それを特定のニーズに合わせてカスタマイズすることです。

よくある質問

  1. pandasのヒストグラムでx軸の目盛りをカスタマイズするにはどうすればよいですか? matplotlib ライブラリの xticks() 関数を使用して、x軸の目盛りをカスタマイズすることができます。例えば、 plt.xticks(range(0, 10)) とすると、x軸の目盛りが0から10までの範囲に設定されます。

  2. pandasで密度を持つヒストグラムをプロットするにはどうすればよいですか? hist() 関数の density パラメータを True に設定することで、密度を持つヒストグラムをプロットすることができます。これにより、ヒストグラムの下の面積が1に合計される正規化されたヒストグラムがプロットされます。

  3. pandasのヒストグラムに凡例を追加するにはどうすればよいですか? matplotlib ライブラリの legend() 関数を使用して、pandasのヒストグラムに凡例を追加することができます。例えば、 plt.legend(['Column1', 'Column2']) とすると、'Column1' と 'Column2' の凡例が追加されます。