ビジネスパーソンこそGoogle ColabでPython!インサイドセールスでのセールスファネルや財務諸表分析(PL/BS:ウォーターフォールチャート)、構成比率チャートのデータ分析可視化【コピペで動く!】

スポンサーリンク
投資

セールスパーソンであればPythonが使えた方が良いというのは漠然と思っていても、実際何の役に立つの?という疑問もあるかと思います。今回は自動執行や繰り返し以外で、Pythonの強力な可視化ツールに焦点を当てたお話をしたいと思います。

本記事での可視化

データ分析の可視化というと折れ線グラフや棒グラフ、クロスプロット・散布図などをまず最初に想像してしまうかもしれませんが、今回の記事ではそれ以外だったり、そういった物の応用を紹介します。

ファネルチャート

一つ目はインサイドセールスなどでの進捗管理、KPI設定などに使われるファネルチャートを紹介します。

営業のDX化という事もあり、受注するためには何件の案件化が必要で、案件化には何件のアポイント必要で、そのアポイントを取るためには電話やメールを何件行う必要がある、、という顧客アプローチの可視化や、数値化ということが最近では注目されています。こういったグラフをたったの数行で書けます。

構成比率チャート

売上構成比率を分析するのに金額だけよりは比率的なものがあった方がより直感的に理解できます。
そういったチャートを数行で書くことができます。

決算資料 損益計算書 PL(Profit and loss statement)

決算資料の損益計算書を滝グラフ(ウォーターフォールチャート)で表示することができます。

経営企画やマネージメントになると、どの項目がどのくらい最終利益にインパクトがあるのか、どこを改善すべきなどかなど、分析する必要がありますが、可視化することがその数字のインパクトがより直感的に確認することができます。

決算資料 貸借対照表 BS (Balance Sheets)

貸借対照表の有形固定資産や、短期・長期借入、純資産などの内訳を全体での比率として一目で企業の状況を確認することができます。

使用する環境

今回もGoogle Colaboratoryのpythonを使うことにします。こちらの記事も参考になると思います。

また、Google Colabの共有ファイルは以下のようになります。Googleのアカウントがあればログインして、そのままShift+Enterで再現できると思います。

実際のコード

コードは以下の通りです。

ファネルチャート

from plotly import graph_objects as go


fig = go.Figure(go.Funnel(
    y = ["リード", "有効リード", "アポイント","案件", "受注"],    
    x = [500, 400, 200,  100,50]),
    layout=go.Layout(
        plot_bgcolor='rgba(0,0,0,0)'
        )
    )

fig.update_layout(
#    title="Plot Title",
#    xaxis_title="x Axis Title",
#    yaxis_title="y Axis Title",
    font=dict(
#        family="Courier New, monospace",
        size=24,
#        color="#7f7f7f"
    )
)

fig.show()

こういった数行のコーディングでこの程度のグラフは描けます。以下のすべてに言えますが、グラフを作ることに時間を使うのではなく、グラフでの分析に時間を使えるのが理想ですね。

構成比率チャート

import plotly.express as px
fig = px.funnel_area(names=["EC販売", "デジタルマーケティング", "ソフトウェア","アウトソース", "エンターテインメント"],
                    values=[800, 600, 400, 120, 80],
                    color=[4, 3, 2, 1, 0])
fig.show()

現状の認識、当事者間での共有が出発点になりますね。

決算資料 損益計算書 PL(Profit and loss statement)

import plotly.graph_objects as go

fig = go.Figure(go.Waterfall(
    name = "決算資料", orientation = "v",
    measure = ["relative", "relative", "total",
                "relative", "total",
                "relative", "total",
                "relative", "total",],
    x = ['売上高 Sales','売上原価 Cost of sales','売上総利益 Gross profit',
         '販売管理費 Operating cost','営業利益 Operating profit',
         '営業外収益 Non-operating income','経常利益 Ordinary profit',
         '法人税等 Other expenses','税引前当期純利益 Net profit'
         ],
    y = [46004, -32091, 13912,
         -9918,3994,
         741,4736,
         -1919,2817],
    text= [46004, -32091, 13912,
         -9918,3994,
         741,4736,
         -1919,2817],
    textposition = "outside",     
    connector = {"line":{"color":"rgb(63, 63, 63)"}},
))

fig.update_layout(
        title = "決算資料 損益計算書(Profit and loss statement)",
        xaxis_title="直近期",
        yaxis_title="JPY(単位:百万円)",
        showlegend = False,
        autosize=False,
        width=700,
        height=700,      
)
fig.update_xaxes(tickangle=-90)
fig.show()

今回は 3697SHIFT の決算を参考にさせていただきました。

SHIFT【3697】2021年10月12日 開示情報 - 2021年8月期 決算短信〔日本基準〕(連結)
SHIFT が2021年10月12日に提出した適時開示書類「2021年8月期 決算短信〔日本基準〕(連結)」のPDFファイルです。

(9ページ)もしくは以下のサイト等で確認できます。

SHIFT【3697】の業績・財務推移[通期・半期・四半期]|株探(かぶたん)
SHIFT【3697】の業績分析ができる多様な決算情報を掲載。決算発表と業績修正はリアルタイムで更新。通期は5期、半期は4半期、四半期累計は3期、四半期(3ヵ月)は8四半期の業績推移表を掲載しています。財務とキャッシュフローの推移表もそれぞれ通期3期を掲載。業績推移表は、売上高、営業利益、経常利益、最終利益(純利益)、...

決算資料 貸借対照表 BS (Balance Sheets)

from plotly import graph_objects as go

data = {
    "流動資産":[21304],
    
    "有形固定資産":[804],
    "無形固定資産":[7447],    
    "投資その他の資産":[4714],       
    "固定資産":[12967],
    
    "負債":[11588],
    "短期借入":[1544],
    "長期借入":[2672],
    "その他":[11588-1544-2672],    
    
    "純資産":[22683],
    "資本金":[11],
    "資本剰余金":[16365],
    
    "labels":[
        "直近期",
    ]
}

# グラフ描画
fig1 = go.Figure(
   # データの指定
   data=[
        go.Bar(
            name="有形固定資産",
            x=data["labels"],
            y=data["有形固定資産"],
            offsetgroup=0,
            base=sum(data["無形固定資産"])+sum(data["投資その他の資産"]),
        ),
       go.Bar(
            name="無形固定資産",
            x=data["labels"],
            y=data["無形固定資産"],
            offsetgroup=0,
            base=data["投資その他の資産"],
        ),
#        go.Bar(
#            name="投資その他の資産",
#            x=data["labels"],
#            y=data["投資その他の資産"],
#            offsetgroup=0,
#        ),    
       go.Bar(
            name="流動資産",
            x=data["labels"],
            y=data["流動資産"],
            offsetgroup=1,
            base=data["固定資産"],
        ),
        go.Bar(
            name="固定資産",
            x=data["labels"],
            y=data["固定資産"],
            offsetgroup=1,
        ),       
        go.Bar(
            name="負債",
            x=data["labels"],
            y=data["負債"],
            offsetgroup=2,
            base=data["純資産"],
        ),
        go.Bar(
            name="純資産",
            x=data["labels"],
            y=data["純資産"],
            offsetgroup=2,
        ),
        go.Bar(
            name="短期借入",
            x=data["labels"],
            y=data["短期借入"],
            offsetgroup=3,
            base=sum(data["純資産"])+sum(data["その他"])+sum(data["長期借入"]),
        ),
       go.Bar(
            name="長期借入",
            x=data["labels"],
            y=data["長期借入"],
            offsetgroup=3,
            base=sum(data["純資産"])+sum(data["その他"]),
        ),
#        go.Bar(
#            name="その他",
#            x=data["labels"],
#            y=data["その他"],
#            offsetgroup=3,
#            base=data["純資産"],            
#        ),      
        go.Bar(
            name="資本金",
            x=data["labels"],
            y=data["資本金"],
            offsetgroup=3,
            base=data["資本剰余金"],            
        ),     
        go.Bar(
            name="資本剰余金",
            x=data["labels"],
            y=data["資本剰余金"],
            offsetgroup=3,         
        ),  
   ],
   # レイアウトの指定
    layout=go.Layout(
        title="決算資料 貸借対照表(Balance Sheets)",
        #xaxis_title="直近期",
        yaxis_title="JPY(単位:百万円)",
        autosize=False,
        width=500,
        height=700,  
    )
)

fig1.show()

同じく3697SHIFT の決算を参考にさせていただきました。

SHIFT【3697】2021年10月12日 開示情報 - 2021年8月期 決算短信〔日本基準〕(連結)
SHIFT が2021年10月12日に提出した適時開示書類「2021年8月期 決算短信〔日本基準〕(連結)」のPDFファイルです。

(7ページ)もしくは以下のサイト等で確認できます。

SHIFT[3697] - 貸借対照表 | Ullet(ユーレット)
SHIFTの貸借対照表をチェック!Ullet(ユーレット)は、バリュー投資家や就職・転職活動中の方、企業の広報・IR・経営企画の担当者様など、上場企業に関する情報を調べたい方に最適な企業価値検索サービスです

”BSが重い”と評されるような有形固定資産の割合や、銀行からの借入の過多など、全体から見ての割合などが可視化できるので、PL同様に分析の参考になると思います。

発展的には、同業他社や過去との比較など、様々な分析・可視化ができると思いますので、余裕のある方、興味のある方は試してみたはいかがでしょうか。

皆さんのお役に立てれば幸いです。

Pythonに関する記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
米国債のゼロクーポン債STRIPSについてのメモ
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック

コメント