1. seabornでヒストグラムを作成
ヒストグラムを作成したい時は多い。
seabornでヒストグラムを作成するときに実装方法に少しだけ迷ったので記録しておきます。
2. ヒストグラムを作成する3種類の関数
seabornにはヒストグラムを作成する3つの関数が存在します。
distplot
histplot
displot
選択肢が多いとどれを使えば良いのか迷ってしまうのが人間というものです。
それぞれの関数について少し調べたので個人的な感想をまとめてみます。
2.1. deprecated: 将来なくなるdistplot
distplotは将来なくなるので使用しないように公式ドキュメント上に記載されています。
This function is deprecated and will be removed in a future version. Please adapt your code to use one of two new functions:
displot(), a figure-level function with a similar flexibility over the kind of plot to draw
histplot(), an axes-level function for plotting histograms, including with kernel density smoothing
そこではhistplotかdistplotの使用が推奨されています。
distplotは選択肢から外れます。
2.2. histplot
histplotとdisplotは同様のヒストグラムを作成できます。
違いはaxes-levelかfigure-levelかです。
-
histplot : axes-level
-
displot : figure-level
これらの違いは公式ドキュメントで触れられています。
axes-levelと比較してのfigure-levelの強みと弱みが記述されています。
The most useful feature offered by the figure-level functions is that they can easily create figures with multiple subplots.
In contrast, figure-level functions cannot (easily) be composed with other plots.
強みと弱みを考慮して目的に応じてhistplotとdisplotの使い分けになりそうです。
個人的にはfigure-levelの強みである複数のサブプロットを簡単に作成できることを便利に感じています。
個人的にはdisplotでヒストグラムを作成するのがおすすめです。
2.3. displot
すでに述べたようにdisplotでヒストグラムを作成するのがおすすめです。
seabornでグラフを作成しようとすると選択肢が多くてどれを使うべきか迷います。
個人的にはfigure-levelの関数をおすすめします。
過去の記事で同様にfigure-levelのrelplotとcatplotをおすすめしています。
2.4. histplotとdisplotを使用できるのはv0.11.0から
seabornのバージョンが古いとhistplotとdisplotを使用できません。
このような場合でバージョンアップも許されていない場合にはdistplotを使わざる得ません。
3. 実装例
実際にヒストグラムを作成してみます。
3.1. データ
下記のデータを使用します。
CMを見ることによってゲームをする時間がどのように変化するかを確認するためのデータです。
CM視聴別にゲーム時間のヒストグラムを作成します。
cm_dummy : CM視聴
gamesecond : ゲーム時間
3.2. コード
ヒストグラムを作成するコードです。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
sns.set_context("poster")
q_data_x = pd.read_csv(
'https://raw.githubusercontent.com/iwanami-datascience/vol3/master/kato%26hoshino/q_data_x.csv'
)
(
sns.displot(
data=q_data_x,
x='gamesecond',
col='cm_dummy',
col_wrap=1,
height=10,
)
.savefig('gamesecond.jpg')
)
3.3. 作成したヒストグラム
大多数の人はほとんどゲームをやらず、一部の人だけが長時間ゲームをしているようです。
このような形のヒストグラムになることは多いです。結構分析に困る形です。
4. まとめ
seabornでヒストグラムを作成する方法を調べて、displotによる実装をご紹介しました。