Pythonでバイオリン図を描く方法を解説!seaborn.violinplotの基本と実例
カテゴリごとのデータを比較したい場合に役立つのが箱ひげ図(ボックスプロット)です。箱ひげ図は、四分位数をもとにデータセット内の分布を把握できる可視化手法です。箱から上下に伸びる縦線は「ひげ(ウィスカー)」と呼ばれ、上側・下側の四分位数の範囲外でデータがどのようにばらついているかを示します。このことから、箱ひげ図は「ウィスカープロット」とも呼ばれます。また、外れ値は個別の点としてプロットされます。
バイオリン図とは?
バイオリン図(バイオリンプロット)は、箱ひげ図にカーネル密度推定(KDE)を組み合わせたグラフです。データがどのような形状で分布しているかを、箱ひげ図よりも直感的に分析・理解できます。
- バイオリンの幅が広い部分 … データの密度が高い(その値付近に多くのデータが集中している)
- バイオリンの幅が狭い部分 … データの密度が低い(その値付近にはデータが少ない)
さらに、箱ひげ図における四分位範囲(IQR)と、データの密度が高い領域は、どのカテゴリでも同じ範囲に一致します。これにより、分布の中心とばらつきを一目で確認できます。
violinplot関数の構文
seaborn.violinplot(x, y, data, …)
それでは、実際にバイオリン図を使ってデータを可視化する方法を見ていきましょう。
サンプルコード
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=my_df)
plt.show()出力結果
曜日ごとの合計支払額(total_bill)の分布が、バイオリン型のグラフとして表示されます。各バイオリンの中には箱ひげ図の要素も含まれており、中央値や四分位範囲も同時に確認できます。
コードの解説
- pandas、seaborn、matplotlibなど、必要なライブラリをインポートします。
- seabornのload_dataset関数を使い、サンプルデータセット「tips」(レストランのチップに関するデータ)を読み込みます。
- 読み込んだデータはデータフレームとして変数 my_df に格納されます。
- violinplot関数を使用してデータを可視化します。
- x軸に「day」(曜日)、y軸に「total_bill」(合計支払額)を指定し、データフレームを引数として渡します。
- plt.show() を呼び出すことで、グラフが画面に表示されます。
このように、seabornのviolinplot関数を使えば、わずか数行のコードでカテゴリ別のデータ分布を美しく可視化できます。箱ひげ図だけでは見えなかった分布の形状まで把握できるため、探索的データ分析(EDA)において非常に有用な手法です。
-
Pythonでバイオリン図を描く方法を解説!seaborn.violinplotの基本と実例
カテゴリごとのデータを比較したい場合に役立つのが箱ひげ図(ボックスプロット)です。箱ひげ図は、四分位数をもとにデータセット内の分布を把握できる可視化手法です。箱から上下に伸びる縦線は「ひげ(ウィスカー)」と呼ばれ、上側・下側の四分位数の範囲外でデータがどのようにばらついているかを示します。このことから、箱ひげ図は「ウィスカープロット」とも呼ばれます。また、外れ値は個別の点としてプロットされます。バイオリン図とは?バイオリン図(バイオリンプロット)は、箱ひげ図にカーネル密度推定(KDE)を組み合わせたグラフです。データがどのような形状で分布しているかを、箱ひげ図よりも直感的に分析・理解できます。
-
Pythonリストの内部動作を徹底解説!オブジェクトとフレームの仕組み
このチュートリアルでは、Python 3.x(およびそれ以前のバージョン)におけるリストの内部動作について詳しく解説します。Pythonのステートメントを1行ずつ実行したときに、メモリ上でどのようにオブジェクトやフレームが形成されるのかを、図解を交えながら見ていきましょう。 リストの初期化 まずはリストの初期化です。これは、いくつかの要素を持つリストを作成することを意味します。 >>> lis=[1,2,3,4] 上図のように、リスト変数 lis はグローバルフレーム内で宣言され、リストオブジェクトへの参照(ポインタ)を保持しています。重要なのは、変数そのものがデータを格納