Pandas でグループごとにヒストグラムをプロットする方法
次のメソッドを使用して、pandas DataFrame のグループごとにヒストグラムをプロットできます。
方法 1: 複数のプロットを使用してグループごとにヒストグラムをプロットする
df[' values_var ']. hist (by=df[' group_var '])
方法 2: 単一のプロットを使用してグループごとにヒストグラムをプロットする
plt. hist (group1, alpha= 0.5 , label=' group1 ') plt. hist (group2, alpha= 0.5 , label=' group2 ') plt. hist (group3, alpha= 0.5 , label=' group3 ')
次の例は、3 つの異なるチームのバスケットボール選手が獲得したポイントを示す次のパンダ データフレームで各メソッドを実際に使用する方法を示しています。
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (1) #createDataFrame df = pd. DataFrame ({' team ': np.repeat ([' A ',' B ',' C '], 100 ), ' points ': np. random . normal (loc= 20 , scale= 2 , size= 300 )}) #view head of DataFrame print ( df.head ()) team points 0 A 23.248691 1 A 18.776487 2 A 18.943656 3 A 17.854063 4 A 21.730815
例 1: 複数のプロットを使用してグループごとにヒストグラムをプロットする
次のコードは、3 つのチームのそれぞれのプレーヤーが獲得したポイントの分布を表示する 3 つのヒストグラムを作成する方法を示しています。
#create histograms of points by team df[' points ']. hist (by=df[' team '])
また、edgecolor引数を使用して各ヒストグラムにエッジ ラインを追加したり、 figsize引数を使用して各ヒストグラムのサイズを拡大して視覚化しやすくしたりすることもできます。
#create histograms of points by team df[' points ']. hist (by=df[' team '], edgecolor=' black ', figsize = ( 8 , 6 ))
例 2: 単一のプロットを使用してグループごとにヒストグラムをプロットする
次のコードは、3 つのヒストグラムを作成し、それらすべてを同じプロット上に配置する方法を示しています。
import matplotlib.pyplot as plt
#define points values by group
A = df. loc [df[' team '] == ' A ', ' points ']
B = df. loc [df[' team '] == ' B ', ' points ']
C = df. loc [df[' team '] == ' C ', ' points ']
#add three histograms to one plot
plt. hist (A, alpha= 0.5 , label=' A ')
plt. hist (B, alpha= 0.5 , label=' B ')
plt. hist (C, alpha= 0.5 , label=' C ')
#add plot title and axis labels
plt. title (' Points Distribution by Team ')
plt. xlabel (' Points ')
plt. ylabel (' Frequency ')
#add legend
plt. legend (title=' Team ')
#displayplot
plt. show ()
最終結果は、3 つのヒストグラムを重ねて表示するプロットになります。
注: alpha引数は、各ヒストグラムの透明度を指定します。この値の範囲は 0 ~ 1 です。この値を 0.5 に設定すると、オーバーレイされた各ヒストグラムをより適切に視覚化できます。
追加リソース
次のチュートリアルでは、Python で他の一般的なプロットを作成する方法を説明します。
Matplotlib で複数の線をプロットする方法
Pandas DataFrame から箱ひげ図を作成する方法
複数の Pandas 列を棒グラフにプロットする方法