Python in Excelのmatplotlib/seabornで、意思決定に役立つデータの可視化に挑戦
Python in Excel実務入門:Excelデータ分析の新パラダイム 第3回
ダウンロード サンプルファイル (185.1 KB)
前回は、xl()で取り込んだDataFrameのクレンジング・groupby集計・merge結合までを確認しました。数値の一覧のままでは分布や相関、ばらつきは伝わりにくいため、本稿ではmatplotlibとseabornを使い分け、意思決定に効くグラフをセルの中に描く方法を解説します。セルの値やフィルターの変更にグラフが連動する点も、ぜひ体験してください。
Excelセル内へのグラフ出力の基本
ここでは、xl(..., headers=True)で読み込んだDataFrameをグラフにする基本パターンと、matplotlibとseabornの役割分担を確認します。
サンプルとして、事務機器メーカー営業部の月次実績データ(複合機・プリンター・シュレッダー、1月~6月)を使います。見出しを含む次の19行をシートの左上(A1:E19)に入力し、本稿全体で使い回してください。
| 月 | 商品カテゴリ | 売上 | 広告費 | 問い合わせ件数 |
| 1月 | 複合機 | 980 | 120 | 42 |
| 2月 | 複合機 | 1050 | 130 | 46 |
| 3月 | 複合機 | 1880 | 320 | 88 |
| 4月 | 複合機 | 1650 | 285 | 76 |
| 5月 | 複合機 | 1520 | 260 | 70 |
| 6月 | 複合機 | 1120 | 145 | 50 |
| 1月 | プリンター | 1180 | 150 | 95 |
| 2月 | プリンター | 1240 | 165 | 102 |
| 3月 | プリンター | 1310 | 180 | 108 |
| 4月 | プリンター | 1290 | 175 | 105 |
| 5月 | プリンター | 1360 | 195 | 112 |
| 6月 | プリンター | 1420 | 205 | 118 |
| 1月 | シュレッダー | 620 | 70 | 55 |
| 2月 | シュレッダー | 650 | 75 | 58 |
| 3月 | シュレッダー | 610 | 68 | 54 |
| 4月 | シュレッダー | 680 | 82 | 62 |
| 5月 | シュレッダー | 700 | 88 | 65 |
| 6月 | シュレッダー | 720 | 92 | 67 |
売上・広告費の単位は千円、問い合わせ件数は件です。
画像としての埋め込みの考え方
Excelの標準グラフはセルとは別のグラフオブジェクトですが、Python in Excelでは、matplotlibで作成したFigureなどをセルの出力として表示できます。入力データが変わって再計算されると、Pythonコードも再実行され、グラフが更新されます。ここでは、xl()で表を読み込み、月ごとの売上合計を折れ線グラフにします。
コードの確認や編集は、数式タブの[Python]グループにある[エディター]から行えます。
まず、基本的なグラフ可視化コードを実行してみます。Pythonセルにコードを入力すると、Pythonエディターでコードを編集できます。エディターでは、コードと出力プレビューを確認できます。なお、グラフのタイトルや軸ラベルが長くて切れる場合は、最後のfigの前にfig.tight_layout()を加えると、レイアウトを自動的に調整できます。
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = [ # (1)
"Yu Gothic", "Meiryo", "MS Gothic",
"Hiragino Sans", "sans-serif"
]
plt.rcParams["axes.unicode_minus"] = False
df = xl("A1:E19", headers=True) # 表を読み込んで月ごとに集計
monthly = df.groupby("月")["売上"].sum()
fig, ax = plt.subplots()
ax.plot(monthly.index, monthly.values) # 折れ線グラフを描画
fig # (2)
コードの最後のfig(2)がそのまま画像としてセルに返ります。先頭のplt.rcParams(1)は、x軸の「1月」などの日本語を表示できるよう、使用するフォントの候補を指定しています。指定したフォントは実行環境によって利用できるものが異なるため、このように複数の候補を並べています。プレビューには3カテゴリ合計の月次売上(千円)の折れ線が表示され、3月を頂点に山型になります。
この記事は参考になりましたか?
- Python in Excel実務入門:Excelデータ分析の新パラダイム連載記事一覧
-
- scikit-learnで始めるExcel版機械学習。予測分析と評価
- Python in Excelのmatplotlib/seabornで、意思決定に役立つデ...
- pandasでふぞろいなデータを分析資産に変える
- この記事の著者
-
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編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
