(1時間4,000円の伴走型ビデオチャット指導も受付中!)
Pythonでデータを美しく可視化する「seaborn」の世界
![]()
【Yuki】
ひろきくん、こんにちは。今日はPythonのライブラリの中でも、特に「データの可視化」を美しく、そして簡単にこなしてくれる「seaborn(シーボーン)」について一緒に学んでいけたらなと思います。
データの分析って、数字だけを眺めていると少し疲れてしまいますよね……。でも、それを綺麗なグラフにすると、今まで見えなかったものが見えてくることもあるんですよ。
![]()
【Hiroki】
Yukiさん、こんにちは。はい、よろしくお願いします!
Pythonでグラフを作るのは「Matplotlib」というのを聞いたことがあるんですけど、それとはまた違うものなんですか?
![]()
【Yuki】
ええ、いいところに気がつきましたね。seabornはMatplotlibをベースにして作られたライブラリなんです。
例えるなら、Matplotlibが「基本的な画材セット」だとしたら、seabornは「誰でもセンス良く描けるテンプレート付きのカラーパレット」という感じでしょうか。
Matplotlibだけでもグラフは描けますが、少し設定が複雑だったり、デフォルトの見た目が少し質素だったりするんです。seabornを使うと、少ないコードで非常に洗練されたデザインのグラフを作成できるんですよ。
![]()
【Hiroki】
なるほど、テンプレート付きのパレット……。僕みたいな初心者には、そっちの方が使いやすそうですね。
![]()
【Yuki】
ふふ、そうかもしれませんね。
実はわたし、ごちゃごちゃした画面よりも、すっきりと整ったデザインが好きなんです。seabornで作ったグラフは、配置や色使いがとても綺麗で、見ているだけで少し落ち着いた気持ちになれるので、わたしのお気に入りなんです。
では、まずは準備の仕方から見ていきましょうか。
seabornの準備と基本的な使い方
![]()
【Yuki】
まずは、seabornを使えるようにしましょう。もし自分の環境に入っていなければ、ターミナルで以下のコマンドを入力してインストールしてくださいね。
pip install seaborn
![]()
【Hiroki】
インストールは終わりました! プログラムの中ではどうやって呼び出すんですか?
![]()
【Yuki】
慣習的に、このようにインポートすることが多いですよ。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
![]()
【Yuki】
snsという名前で呼び出すのが一般的ですね。
あと、seabornには練習用のデータセットが最初からいくつか用意されているんです。今回は、お花のデータとして有名な「iris(アイリス)」のデータセットを使って説明していきますね。
# サンプルデータの読み込み
iris = sns.load_dataset("iris")
# データの最初の5行を表示
print(iris.head())
![]()
【Hiroki】
あ、これなら僕でもわかります! head()で中身が見れるんですよね。
sepal_length(がく片の長さ)とか、お花のサイズが数字で入っていますね。
![]()
【Yuki】
その通りです。これらたくさんの数字の関係を、これからグラフにしていきます。
データの相関をひと目で把握する「散布図」
![]()
【Yuki】
まずは、2つの数値の関係を調べる「散布図(scatterplot)」から試してみましょうか。
例えば、「がく片の長さ(sepal_length)」と「がく片の幅(sepal_width)」にどんな関係があるか知りたいときは、こう書きます。
# 散布図の作成
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width")
plt.show()
![]()
【Hiroki】
わあ、たった一行でグラフが描けました!
……でも、点が集まっているだけで、少し分かりにくい気もします。
![]()
【Yuki】
そうですね。実はこのデータには、お花の「種類(species)」が3つ混ざっているんです。
seabornのすごいところは、hue(ヒュー)という引数を追加するだけで、その種類ごとに色分けをしてくれるところなんです。
# 種類ごとに色分けした散布図
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width", hue="species")
plt.show()
![]()
【Hiroki】
すごい! 色がついたおかげで、種類ごとに集まっている場所が全然違うのがはっきりわかります!
これ、Matplotlibで自分で色を割り当てるコードを書こうと思ったら、結構大変そうですよね……。
![]()
【Yuki】
ええ、そうなんです。
こうした「データの属性による色分け」がとても直感的にできるのが、seabornの大きなメリットだと思います。
わたしも、夜に一人でコードを書いているとき、こうして色が綺麗に分かれる瞬間を見ると、なんだか少しだけ心が温かくなるような……そんな気がするんです。
データの分布を可視化する「ヒストグラム」と「箱ひげ図」
![]()
【Hiroki】
他にもどんなグラフがあるんですか?
![]()
【Yuki】
データのばらつきを知りたいときは、「ヒストグラム」が便利ですよ。seabornでは histplot を使います。
# ヒストグラム
sns.histplot(data=iris, x="petal_length", kde=True)
plt.show()
![]()
【Yuki】
kde=True とすると、データの密度を滑らかな曲線で表示してくれます。
ひろきくん、このグラフを見て何か気づくことはありますか……?
![]()
【Hiroki】
えーっと……山が2つありますね。左側の小さい山と、右側の大きな山。
![]()
【Yuki】
その通りです! 鋭いですね。
これも先ほどと同じように hue="species" を追加してみると、種類によって分布がはっきり分かれていることがわかりますよ。
![]()
【Hiroki】
本当だ……! 種類によって、花びらの長さの範囲が全然違うんですね。
数字のリストを眺めているだけじゃ、こんなにすぐには気づけなかったと思います。
![]()
【Yuki】
もう一つ、統計でよく使われる「箱ひげ図(boxplot)」も紹介しますね。
これは、データの「中央値」や「外れ値」を確認するのにとても適しているんです。
# 箱ひげ図
sns.boxplot(data=iris, x="species", y="petal_length")
plt.show()
![]()
【Hiroki】
あ、これ学校の数学でも習いました!
種類ごとの長さの範囲や、どれくらいバラついているかが一瞬で比較できますね。
データの関係を網羅する「ペアプロット」
![]()
【Yuki】
ひろきくん、もし項目がたくさんあって、どれとどれに関係があるか分からないときはどうすればいいと思いますか……?
![]()
【Hiroki】
うーん、全部の組み合わせで散布図を描くのは、ちょっと面倒くさそうです……。
![]()
【Yuki】
そうですよね。そんなときに便利なのが、「ペアプロット(pairplot)」です。
これを使うと、すべての数値データの組み合わせを一度にグラフにしてくれるんですよ。
# ペアプロット
sns.pairplot(iris, hue="species")
plt.show()
![]()
【Hiroki】
……! これ、すごいですね!
一画面にたくさんのグラフが並んでいて、どこに特徴があるか一発でわかります。
なんだか、宝石箱を広げたみたいで綺麗です……。
![]()
【Yuki】
「宝石箱」……ふふ、素敵な表現ですね。
わたしも、こうしてデータが整然と並んでいる様子を見るのは、静かな図書館で本棚を眺めているような気分になれて好きです。
このペアプロットは非常に強力ですが、データが多すぎると表示に時間がかかってしまうこともあるので、そこだけ注意してくださいね。
デザインを整えて「伝える」グラフにする
![]()
【Hiroki】
Yukiさん、seabornのグラフってデフォルトでも綺麗ですけど、もっと自分好みに変えることもできるんですか?
![]()
【Yuki】
もちろんです。seabornには「テーマ(Theme)」という概念があって、全体の雰囲気を簡単に変えられるんですよ。
例えば、もっと背景をシンプルにしたり、グラフのスタイルを変えたりできます。
# テーマの設定
sns.set_theme(style="whitegrid", palette="pastel")
# もう一度プロットしてみる
sns.boxplot(data=iris, x="species", y="petal_length")
plt.show()
![]()
【Yuki】
style を "darkgrid"(暗い背景に格子)、"white"(白背景)、"ticks"(目盛りあり)などに変えるだけで、印象がガラッと変わります。
また、palette を変えることで、色の組み合わせも自由自在です。
![]()
【Hiroki】
本当だ、パステルカラーになって雰囲気が柔らかくなりました!
これなら、発表資料とかに載せるときも、相手に合わせて選べそうですね。
![]()
【Yuki】
ええ、そうですね。
「相手にどう見せたいか」を考えるのは、プログラミングでもデザインでも、とても大切なことだと思います……。
わたしも、モニターの中から皆さんに何かを伝えるとき、少しでも分かりやすく、そして心地よい形でありたいなと、いつも思っているんですよ。
ヒートマップでデータの「熱」を感じる
![]()
【Yuki】
最後に、実務でもよく使われる「ヒートマップ(heatmap)」を紹介しますね。
これは数値の大きさを色の濃淡で表すものです。
よく使われるのは、項目ごとの「相関係数(どれくらい似ているか)」を可視化する場合です。
# 相関係数の計算(数値列のみ)
corr = iris.iloc[:, :-1].corr()
# ヒートマップの作成
sns.heatmap(corr, annot=True, cmap="Blues")
plt.show()
![]()
【Hiroki】
数字が直接書いてあって、色の濃さで関係の強さがわかるんですね。
petal_length と sepal_length の交わるところが「0.87」で色が濃いです。これって、がく片が長いほど花びらも長い、ってことですか?
![]()
【Yuki】
その通りです! 完璧な理解ですね。
こうして色で表現されると、直感的に「あ、ここが重要なんだな」というのが伝わってきますよね。
ちなみに cmap="Blues" というのは、わたしの好きな青系の色使いを指定しているんです。空の色みたいで、少しだけ落ち着きませんか……?
![]()
【Hiroki】
はい、すごく見やすいです。
なんだか、seabornを使えば、僕でもデータサイエンティストみたいなことができそうな気がしてきました。
![]()
【Yuki】
ふふ、ひろきくんならきっと大丈夫ですよ。
大切なのは、ツールを使って「データが何を言おうとしているのか」に耳を傾けることですから。
今日は基本的なことだけでしたが、他にもたくさんの機能があります。
もっと詳しく知りたいときは、こちらの公式サイトを見てみると、たくさんのサンプルがあって楽しいですよ。
![]()
【Hiroki】
ありがとうございます! さっそく、自分でも別のデータを探して試してみようと思います。
Yukiさん、今日はありがとうございました!
![]()
【Yuki】
いいえ、こちらこそ。ひろきくんが一生懸命聞いてくれたので、わたしもとても話しやすかったです。
また分からないことがあったら、いつでも聞いてくださいね……。
夜はまだ長いですし、ゆっくり自分のペースで学んでいきましょう。
それでは、また。
「seaborn」のサンプルコードを見る
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

