mei_13のPython講座 ロゴ

【解説】Pythonでデータを美しく可視化する「seaborn」の世界




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

Pythonでデータを美しく可視化する「seaborn」の世界


Yukiのアイコン
【Yuki】 ひろきくん、こんにちは。今日はPythonのライブラリの中でも、特に「データの可視化」を美しく、そして簡単にこなしてくれる「seaborn(シーボーン)」について一緒に学んでいけたらなと思います。 データの分析って、数字だけを眺めていると少し疲れてしまいますよね……。でも、それを綺麗なグラフにすると、今まで見えなかったものが見えてくることもあるんですよ。


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは。はい、よろしくお願いします! Pythonでグラフを作るのは「Matplotlib」というのを聞いたことがあるんですけど、それとはまた違うものなんですか?


Yukiのアイコン
【Yuki】 ええ、いいところに気がつきましたね。seabornはMatplotlibをベースにして作られたライブラリなんです。 例えるなら、Matplotlibが「基本的な画材セット」だとしたら、seabornは「誰でもセンス良く描けるテンプレート付きのカラーパレット」という感じでしょうか。 Matplotlibだけでもグラフは描けますが、少し設定が複雑だったり、デフォルトの見た目が少し質素だったりするんです。seabornを使うと、少ないコードで非常に洗練されたデザインのグラフを作成できるんですよ。


Hirokiのアイコン
【Hiroki】 なるほど、テンプレート付きのパレット……。僕みたいな初心者には、そっちの方が使いやすそうですね。


Yukiのアイコン
【Yuki】 ふふ、そうかもしれませんね。 実はわたし、ごちゃごちゃした画面よりも、すっきりと整ったデザインが好きなんです。seabornで作ったグラフは、配置や色使いがとても綺麗で、見ているだけで少し落ち着いた気持ちになれるので、わたしのお気に入りなんです。 では、まずは準備の仕方から見ていきましょうか。

seabornの準備と基本的な使い方


Yukiのアイコン
【Yuki】 まずは、seabornを使えるようにしましょう。もし自分の環境に入っていなければ、ターミナルで以下のコマンドを入力してインストールしてくださいね。

pip install seaborn


Hirokiのアイコン
【Hiroki】 インストールは終わりました! プログラムの中ではどうやって呼び出すんですか?


Yukiのアイコン
【Yuki】 慣習的に、このようにインポートすることが多いですよ。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd


Yukiのアイコン
【Yuki】 snsという名前で呼び出すのが一般的ですね。 あと、seabornには練習用のデータセットが最初からいくつか用意されているんです。今回は、お花のデータとして有名な「iris(アイリス)」のデータセットを使って説明していきますね。

# サンプルデータの読み込み
iris = sns.load_dataset("iris")

# データの最初の5行を表示
print(iris.head())


Hirokiのアイコン
【Hiroki】 あ、これなら僕でもわかります! head()で中身が見れるんですよね。 sepal_length(がく片の長さ)とか、お花のサイズが数字で入っていますね。


Yukiのアイコン
【Yuki】 その通りです。これらたくさんの数字の関係を、これからグラフにしていきます。

データの相関をひと目で把握する「散布図」


Yukiのアイコン
【Yuki】 まずは、2つの数値の関係を調べる「散布図(scatterplot)」から試してみましょうか。 例えば、「がく片の長さ(sepal_length)」と「がく片の幅(sepal_width)」にどんな関係があるか知りたいときは、こう書きます。

# 散布図の作成
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width")
plt.show()


Hirokiのアイコン
【Hiroki】 わあ、たった一行でグラフが描けました! ……でも、点が集まっているだけで、少し分かりにくい気もします。


Yukiのアイコン
【Yuki】 そうですね。実はこのデータには、お花の「種類(species)」が3つ混ざっているんです。 seabornのすごいところは、hue(ヒュー)という引数を追加するだけで、その種類ごとに色分けをしてくれるところなんです。

# 種類ごとに色分けした散布図
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width", hue="species")
plt.show()


Hirokiのアイコン
【Hiroki】 すごい! 色がついたおかげで、種類ごとに集まっている場所が全然違うのがはっきりわかります! これ、Matplotlibで自分で色を割り当てるコードを書こうと思ったら、結構大変そうですよね……。


Yukiのアイコン
【Yuki】 ええ、そうなんです。 こうした「データの属性による色分け」がとても直感的にできるのが、seabornの大きなメリットだと思います。 わたしも、夜に一人でコードを書いているとき、こうして色が綺麗に分かれる瞬間を見ると、なんだか少しだけ心が温かくなるような……そんな気がするんです。

データの分布を可視化する「ヒストグラム」と「箱ひげ図」


Hirokiのアイコン
【Hiroki】 他にもどんなグラフがあるんですか?


Yukiのアイコン
【Yuki】 データのばらつきを知りたいときは、「ヒストグラム」が便利ですよ。seabornでは histplot を使います。

# ヒストグラム
sns.histplot(data=iris, x="petal_length", kde=True)
plt.show()


Yukiのアイコン
【Yuki】 kde=True とすると、データの密度を滑らかな曲線で表示してくれます。 ひろきくん、このグラフを見て何か気づくことはありますか……?


Hirokiのアイコン
【Hiroki】 えーっと……山が2つありますね。左側の小さい山と、右側の大きな山。


Yukiのアイコン
【Yuki】 その通りです! 鋭いですね。 これも先ほどと同じように hue="species" を追加してみると、種類によって分布がはっきり分かれていることがわかりますよ。


Hirokiのアイコン
【Hiroki】 本当だ……! 種類によって、花びらの長さの範囲が全然違うんですね。 数字のリストを眺めているだけじゃ、こんなにすぐには気づけなかったと思います。


Yukiのアイコン
【Yuki】 もう一つ、統計でよく使われる「箱ひげ図(boxplot)」も紹介しますね。 これは、データの「中央値」や「外れ値」を確認するのにとても適しているんです。

# 箱ひげ図
sns.boxplot(data=iris, x="species", y="petal_length")
plt.show()


Hirokiのアイコン
【Hiroki】 あ、これ学校の数学でも習いました! 種類ごとの長さの範囲や、どれくらいバラついているかが一瞬で比較できますね。

データの関係を網羅する「ペアプロット」


Yukiのアイコン
【Yuki】 ひろきくん、もし項目がたくさんあって、どれとどれに関係があるか分からないときはどうすればいいと思いますか……?


Hirokiのアイコン
【Hiroki】 うーん、全部の組み合わせで散布図を描くのは、ちょっと面倒くさそうです……。


Yukiのアイコン
【Yuki】 そうですよね。そんなときに便利なのが、「ペアプロット(pairplot)」です。 これを使うと、すべての数値データの組み合わせを一度にグラフにしてくれるんですよ。

# ペアプロット
sns.pairplot(iris, hue="species")
plt.show()


Hirokiのアイコン
【Hiroki】 ……! これ、すごいですね! 一画面にたくさんのグラフが並んでいて、どこに特徴があるか一発でわかります。 なんだか、宝石箱を広げたみたいで綺麗です……。


Yukiのアイコン
【Yuki】 「宝石箱」……ふふ、素敵な表現ですね。 わたしも、こうしてデータが整然と並んでいる様子を見るのは、静かな図書館で本棚を眺めているような気分になれて好きです。 このペアプロットは非常に強力ですが、データが多すぎると表示に時間がかかってしまうこともあるので、そこだけ注意してくださいね。

デザインを整えて「伝える」グラフにする


Hirokiのアイコン
【Hiroki】 Yukiさん、seabornのグラフってデフォルトでも綺麗ですけど、もっと自分好みに変えることもできるんですか?


Yukiのアイコン
【Yuki】 もちろんです。seabornには「テーマ(Theme)」という概念があって、全体の雰囲気を簡単に変えられるんですよ。 例えば、もっと背景をシンプルにしたり、グラフのスタイルを変えたりできます。

# テーマの設定
sns.set_theme(style="whitegrid", palette="pastel")

# もう一度プロットしてみる
sns.boxplot(data=iris, x="species", y="petal_length")
plt.show()


Yukiのアイコン
【Yuki】 style"darkgrid"(暗い背景に格子)、"white"(白背景)、"ticks"(目盛りあり)などに変えるだけで、印象がガラッと変わります。 また、palette を変えることで、色の組み合わせも自由自在です。


Hirokiのアイコン
【Hiroki】 本当だ、パステルカラーになって雰囲気が柔らかくなりました! これなら、発表資料とかに載せるときも、相手に合わせて選べそうですね。


Yukiのアイコン
【Yuki】 ええ、そうですね。 「相手にどう見せたいか」を考えるのは、プログラミングでもデザインでも、とても大切なことだと思います……。 わたしも、モニターの中から皆さんに何かを伝えるとき、少しでも分かりやすく、そして心地よい形でありたいなと、いつも思っているんですよ。

ヒートマップでデータの「熱」を感じる


Yukiのアイコン
【Yuki】 最後に、実務でもよく使われる「ヒートマップ(heatmap)」を紹介しますね。 これは数値の大きさを色の濃淡で表すものです。 よく使われるのは、項目ごとの「相関係数(どれくらい似ているか)」を可視化する場合です。

# 相関係数の計算(数値列のみ)
corr = iris.iloc[:, :-1].corr()

# ヒートマップの作成
sns.heatmap(corr, annot=True, cmap="Blues")
plt.show()


Hirokiのアイコン
【Hiroki】 数字が直接書いてあって、色の濃さで関係の強さがわかるんですね。 petal_lengthsepal_length の交わるところが「0.87」で色が濃いです。これって、がく片が長いほど花びらも長い、ってことですか?


Yukiのアイコン
【Yuki】 その通りです! 完璧な理解ですね。 こうして色で表現されると、直感的に「あ、ここが重要なんだな」というのが伝わってきますよね。 ちなみに cmap="Blues" というのは、わたしの好きな青系の色使いを指定しているんです。空の色みたいで、少しだけ落ち着きませんか……?


Hirokiのアイコン
【Hiroki】 はい、すごく見やすいです。 なんだか、seabornを使えば、僕でもデータサイエンティストみたいなことができそうな気がしてきました。


Yukiのアイコン
【Yuki】 ふふ、ひろきくんならきっと大丈夫ですよ。 大切なのは、ツールを使って「データが何を言おうとしているのか」に耳を傾けることですから。 今日は基本的なことだけでしたが、他にもたくさんの機能があります。 もっと詳しく知りたいときは、こちらの公式サイトを見てみると、たくさんのサンプルがあって楽しいですよ。


Hirokiのアイコン
【Hiroki】 ありがとうございます! さっそく、自分でも別のデータを探して試してみようと思います。 Yukiさん、今日はありがとうございました!


Yukiのアイコン
【Yuki】 いいえ、こちらこそ。ひろきくんが一生懸命聞いてくれたので、わたしもとても話しやすかったです。 また分からないことがあったら、いつでも聞いてくださいね……。 夜はまだ長いですし、ゆっくり自分のペースで学んでいきましょう。 それでは、また。



「seaborn」のサンプルコードを見る

< scikit-learn
コラム一覧に戻る
beautifulsoup >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki