Pythonでデータ分析を行う際、データの視覚的な表現は非常に重要です。Seabornは、matplotlibをベースとしたPythonのデータ可視化ライブラリで、より洗練されたグラフを簡単に作成できます。この記事では、Seabornを使ったデータの可視化方法を、基本的な例とともに紹介します。
Seabornのインストール
Seabornはpipまたはcondaを使ってインストールできます。
pip を使う場合
pip install seaborn
conda を使う場合
conda install seaborn
Seaborn の基本的な使い方
まず、Seabornと、グラフ描画に必要なmatplotlibをインポートします。Jupyter NotebookやJupyter Labでグラフを表示する場合は、%matplotlib inlineマジックコマンドも記述します。(最近の環境では不要な場合もあります)
import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline
サンプルデータの読み込み
Seabornには、練習用のサンプルデータセットがいくつか用意されています。ここでは、tipsデータセット(レストランでのチップに関するデータ)を使います。
tips = sns.load_dataset("tips")
tipsデータセットの内容を確認してみましょう。head()メソッドで最初の5行を表示できます。
print(tips.head())
出力
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4
データ可視化の基本
ヒストグラム
データの分布を把握するにはヒストグラムが有効です。histplot()関数を使います。total_bill列(支払い総額)のヒストグラムを表示してみます。
sns.histplot(data=tips, x="total_bill")
plt.show()
sns.histplot(data=tips, x="total_bill")でヒストグラムを描画する設定をしています。data引数にデータセット(ここではtips)、x引数にヒストグラムを表示したい列名(ここでは"total_bill")を指定します。
plt.show()でグラフを表示します。
散布図
2つの変数間の関係性を見るには散布図が役立ちます。scatterplot()関数を使います。total_bill(支払い総額)とtip(チップの額)の関係を見てみましょう。
sns.scatterplot(data=tips, x="total_bill", y="tip") plt.show()
sns.scatterplot(data=tips, x="total_bill", y="tip")で散布図を描画する設定をしています。data引数にデータセット、x引数とy引数にそれぞれx軸、y軸に使う列名を指定します。
箱ひげ図
データのばらつきや外れ値を確認するには箱ひげ図が便利です。boxplot()関数を使います。曜日ごとのtotal_billの分布を見てみましょう。
sns.boxplot(data=tips, x="day", y="total_bill") plt.show()
sns.boxplot(data=tips, x="day", y="total_bill")で箱ひげ図の設定をしています。x引数にカテゴリ変数となる列、y引数に数値変数となる列を指定します。
ヒートマップ
複数の変数間の相関関係をまとめて可視化するにはヒートマップが便利です。heatmap()関数を使います。
まず、tipsデータセットの数値列間の相関行列を計算します。
correlation_matrix = tips.corr(numeric_only=True) #数値データのみ
この相関行列をヒートマップで表示します。
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm") plt.show()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')でヒートマップを表示する設定をしています。annot=Trueで各セルに数値を表示、cmap="coolwarm"で色使いを指定します。
別のデータセットを使ったヒートマップの例
Seabornに組み込まれているflightsデータセット(飛行機の月別搭乗者数)を使ってヒートマップを作成することもできます。
flights = sns.load_dataset("flights") flights_pivot = flights.pivot_table(index="month", columns="year", values="passengers") sns.heatmap(flights_pivot, cmap="viridis") plt.show()
flights.pivot_table(index="month", columns="year", values="passengers")で、flightsデータセットを行(index)が月、列(columns)が年、値(values)が搭乗者数となるように変形(ピボット)しています。
よくあるエラーと対処法
以下にSeabornを利用する際に、発生する可能性があるエラーと対応方法です。
AttributeError: module 'seaborn' has no attribute '...'
Seabornのバージョンが古い可能性があります。pip install --upgrade seaborn または conda update seaborn でSeabornを最新版にアップデートしてください。
ValueError: Unknown color palette: ...
指定したカラーパレットが存在しない場合のエラーです。Seabornが提供するカラーパレット名を確認するか、matplotlibのカラーマップを使用してください。
ValueError: 'x' and 'y' must have same first dimension
x軸とy軸のデータの長さが異なる場合のエラーです。データを確認し、長さを揃えてください。
まとめ
Seabornを使うと、Pythonでデータ分析を行う際に、matplotlibを直接使うよりも簡単かつ視覚的に魅力的なグラフを作成できます。この記事では基本的なグラフの作成方法を紹介しましたが、Seabornには他にも多くの機能があります。公式ドキュメントを参照して、さらに高度な可視化にも挑戦してみてください。
- Seaborn公式ドキュメント:** https://seaborn.pydata.org/
最後にPythonのデータ解析の学習に活用できるUdemyのサイトを紹介します。
[PR]