Python in Excelのmatplotlib/seabornで、意思決定に役立つデータの可視化に挑戦
Python in Excel実務入門:Excelデータ分析の新パラダイム 第3回
ダウンロード サンプルファイル (185.1 KB)
matplotlibとseabornの使い分け
matplotlibは軸・凡例・レイアウトなどを細かく制御でき、seabornはmatplotlibをベースに、統計データの可視化を少ないコードで行えるライブラリです。たとえばbarplotでは、列名を指定するだけで平均値などを集計して棒グラフにできます。
以下では、商品カテゴリ別の平均売上を棒グラフにするといった同じタスクを、2本のコードで比較します。まずmatplotlibで書いてみます。
import matplotlib.pyplot as plt
df = xl("A1:E19", headers=True)
summary = df.groupby(
"商品カテゴリ", sort=False)["売上"].mean() # (1)
fig, ax = plt.subplots()
ax.bar(summary.index, summary.values,
color="steelblue", label="平均売上")
ax.set_xlabel("商品カテゴリ")
ax.set_ylabel("平均売上(千円)")
ax.set_title("商品カテゴリ別 平均売上")
ax.legend()
fig
プレビューには、複合機1366.7・プリンター1300.0・シュレッダー663.3(千円)の棒が左からこの順に並び、軸ラベル・タイトル・凡例も表示されます。(1)groupbyは既定ではグループのキーをソートするため、sort=Falseを指定して元の表での出現順(複合機・プリンター・シュレッダー)を保っています。
seabornで描くと、次のように短くなります。
import seaborn as sns
df = xl("A1:E19", headers=True)
sns.barplot(data=df, x="商品カテゴリ", y="売上") # 平均売上の棒グラフを描画
sns.barplotは、指定した列をもとに平均値を集計して棒グラフを描きます。そのため、groupbyによる集計を自分で書かなくても、列名を指定するだけで平均値を可視化できます。
各棒に重なる縦線は、seabornが既定で表示するエラーバーで、平均値について推定した95%信頼区間を表します。これは6か月分のデータの「ばらつきそのもの」ではなく、標本から推定した平均値の不確かさを表すものなので、箱ひげ図とは意味が異なります。複合機の平均売上が最も高く、シュレッダーが最も低くなります。
2本のコードの違いを観点ごとに比較すると、次のとおりです。
| 観点 | matplotlib | seaborn |
| 集計処理 | groupby(...)["売上"].mean()を自分で書く |
sns.barplotが列名指定だけで平均値を自動計算 |
| ばらつきの表示 | 平均値の棒のみ。必要なら自分で描き足す | 95%信頼区間のエラーバーを既定で自動表示 |
| 向いている場面 | 軸・配色・注釈など細部を1つずつ制御したいとき | 統計的な集計とプロットを素早く済ませたいとき |
このように、matplotlibは細部を自分で制御でき、seabornは列名指定だけで素早く形にできます。次節からは、主にseabornを用います。
この記事は参考になりましたか?
- Python in Excel実務入門:Excelデータ分析の新パラダイム連載記事一覧
-
- Python in Excelのmatplotlib/seabornで、意思決定に役立つデ...
- pandasでふぞろいなデータを分析資産に変える
- Excel分析の常識が変わる「Pythonネイティブ統合」――VBAとの使い分け
- この記事の著者
-
WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)
< WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
