Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。単純な可視化から複雑な可視化まで、ほとんどの場合、このライブラリは頼りになります。
このチュートリアルでは、Matplotlib でヒストグラムプロットを作成する方法を見ていきます。ヒストグラムプロットは、データの分布を可視化する素晴らしい方法です。ヒストグラムでは、各棒が数値を範囲にグループ化します。ヒストグラムでは、各棒は数値を範囲にグループ分けします。背の高い棒は、より多くのデータがその範囲に入ることを示します。
ヒストグラムは、連続したサンプルデータの形や広がりを表示します。
ヒストグラムは、連続したサンプルデータの形状や広がりを表示します。
>
>
インポートデータ
Netflix Showsのデータセットを使い、そこから分布を可視化することにします。
Pandasをインポートして、データセットをロードしましょう。
import pandas as pd
df = pd.read_csv('netflix_titles.csv')
Matplotlib でヒストグラムのプロットを行う ### ヒストグラムのプロットを行う
さて、データセットが読み込まれたところで、Matplotlib の PyPlot モジュールをインポートして、Netflix でライブ配信されている番組の release_year
の分布を可視化してみましょう。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('netflix_titles.csv')
plt.hist(df['release_year'])
plt.show()
ここでは、最小限のシナリオを設定しました。データをDataFrame (df
) にロードし、PyPlotインスタンスを使って hist()
関数を呼び出し、 release_year
フィーチャーのヒストグラムをプロットしています。デフォルトでは、これらの年の出現回数をカウントし、棒グラフを範囲指定して、ヒストグラムを描画します。
このコードを実行すると、次のような結果が得られます。
ここでは、映画のビン(範囲)は10年に設定されています。各バーは、10年のバッチのすべてのショー/映画を含んでいます。例えば、2000年から2010年の間に、約750のショーがリリースされたことがわかります。同時に、2010年から2020年にかけては、約5000本が公開されています。
これらは、映画業界ではかなり大きな範囲であり、それは10年よりも小さい範囲でこれを可視化する方が理にかなっています。
Matplotlib のヒストグラムビンサイズの変更
例えば、ヒストグラム(分布)のプロットを1年単位で可視化することにしましょう。
ビンの大きさを計算するのに役立つので、 numpy
をインポートします。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
plt.hist(data, bins = np.arange(min(data), max(data) + 1, 1))
plt.show()
今回は、DataFrameのカラムを取り出し、変数 data
に格納することで、作業しやすくしています。
この data
を hist()
関数に渡して、 bins
という引数を設定します。この引数にはリストを指定することができ、特に均一でないビン分布が必要な場合は手動で設定することができます。
同じ期間(1年)のエントリーをプールしたいので、最小値(min(data)
)から始まり、最大値(max(data)
)まで、1
刻みのNumpy配列を作成します。
今回、このコードを実行した結果
リストの代わりに、1つの bins
値を与えることができます。これはプロットにおける bins
の総数になります。1` を使用すると、プロット全体が 1 本の棒になります。
例えば、20個のビンを持つようにしたい場合、次のようにします。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
plt.hist(data, bins = 20)
plt.show()
この結果、20個の同じビンができ、それらのビン内のデータはプールされ、それぞれのバーで可視化されます。
100年分のデータがあることを考えると、5年間隔になります。20のビンに分割すると、それぞれ5年分のデータが含まれることになります。
ヒストグラムを密度でプロットする
特徴量のカウントではなく、各棒/ビンの密度がどの程度かを確認したい場合があります。つまり、与えられたデータセット内の範囲を見るのがどれくらい一般的かです。私たちは1年間隔で作業しているので、これはその年に映画やショーがリリースされた確率になります。
これを行うには、単に density
引数を True
に設定すればよいのです。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)
plt.hist(data, bins = bins, density = True)
plt.ylabel('Density')
plt.xlabel('Year')
plt.show()
これで、前に見たカウントの代わりに、エントリーの密度が表示されるようになります。
エントリの ~18% が 2018 年にリリースされ、次いで ~14% が 2019 年にリリースされたことがわかります。
Matplotlib のヒストグラムプロットのカスタマイズ
これらの設定以外にも、プロットの見え方をカスタマイズしたり変更したりするために設定できるさまざまな引数がたくさんあります。プロットを好みに合わせて変更するために、人々がいじくり回すのが好きな一般的なオプションのいくつかを変更してみましょう。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)
plt.hist(data, bins = bins, density = True, histtype = 'step', alpha = 0.5, align = 'right', orientation = 'horizontal', log = True)
plt.show()
ここでは、さまざまな引数を設定しました。
-
bins
– プロットにおけるビンの数 -
density
– PyPlot がプロットする際に、count と density のどちらを使うか。 -
histtype
– ヒストグラムプロットの種類(デフォルトはbar
ですが、step
やstepfilled
などの他の値も利用可能です)。 -
alpha
– 線のアルファ値 / 透明度。 -
align
– ビンのどちら側にバーを配置するか、デフォルトはmid
です。 -
orientation
– 水平方向 / 垂直方向、デフォルトはvertical
です。 -
log
– プロットを対数スケールで表示するかどうか。
これで結果は
alignを
right` に設定したので、バーが 2020 ビンの垂直右側に少しオフセットしていることがわかります。
結論
このチュートリアルでは、Matplotlib と Python を使ってヒストグラムをプロットするいくつかの方法について説明しました。
もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonでのデータ可視化に関する書籍の束をチェックしてみてください。
Pythonによるデータ可視化
データビジュアライゼーションで危険な存在になる
30日間無条件返金保証
初級から上級まで
定期的に無料で更新(最新更新は2021年4月)
ボーナスリソースやガイドを更新
Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。
本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要があることすべてを教えてくれる、詳細なガイドです。
Pythonでデータ可視化」は、Pythonの初級~中級開発者向けの本で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornといったコアなプロットライブラリを取り上げ、Altairのような宣言的・実験的なライブラリの活用方法までを案内しています。具体的には、11章にわたって、9つのPythonライブラリを取り上げています。Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。
データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。