売上高と純利益の比較:Pythonの視覚化で簡単にわかる
こんにちは!今回の記事では 売上高純利益の比較 データを Pythonの可視化で簡単に理解する方法を説明します。 企業の売上と純利益は、経営成果を代表する重要な指標ですが、この2つを一目で比較すると、会社の収益構造をよりよく把握することができます。
ここでは、Pythonの代表的な視覚化ツールの2つである Matplotlibそして プロットを活用し、売上と純利益のデータをグラフ化してみましょう。 初心者の方でもわかりやすいように コード例と詳細解説を一緒に提供していますので、データビジュアライゼーションを始めたい方の参考になれば幸いです。
売上高純利益比較の意味
売上高は、製品やサービスを販売して得た 総収入を言っています、 純利益は、すべての費用を除いて最終的に残る 純粋な利益を意味します。売上と純利益を一緒に比較すると 収益性を評価することができるのですが、例えば、売上は伸びているのに、純利益が横ばいなら コスト増加により利益率が低下したことを示している可能性があります。
逆に、売上高に対する純利益が大きい場合 効率的な経営をしているということでしょう。 このように二つの指標を並べてみると、企業の財務状態を 直感的で理解することができます。それでは、実際の例題データを使って二つの指標を視覚化してみましょう。
Matplotlibで売上と純利益の可視化

まずは Matplotlib ライブラリを使って売上と純利益のデータを上記のように可視化してみます。 MatplotlibはPythonで一番広く使われている データビジュアライゼーションライブラリで、様々な種類のグラフを簡単に描くことができます。下記のコードと一緒に各ステップの説明を付けましたので、一つずつ見てみてください。
matplotlib.pyplot as plt をインポートします。
import numpy as np
# データの設定 (単位:千ドル)
companies = ['Nvidia', 'Apple', 'Meta', 'Alphabet', 'Broadcom', 'Microsoft', 'Tesla', 'Amazon']].
revenue_per_employee = [3600、2400、2200、1900、1400、1100、1100、777、410]。
profit_per_employee = [2000, 572, 842, 546, 159, 387, 57, 38].
# グラフの生成と設定
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 8), sharey=True)
fig.suptitle('Tech Companies:Revenue and Net Income Per Employee (2024)', fontsize=24, fontweight='bold', y=0.95)
# 最初のグラフ: 従業員一人当たりの売上高
bars1 = ax1.barh(companies, revenue_per_employee, color='green', alpha=0.7)
ax1.set_title('Revenue Per Employee ($K)', fontsize=18, fontweight='bold')
ax1.set_xlabel('Revenue ($K)')
ax1.set_xlim(0, 4000) # x軸の範囲設定
ax1.grid(axis='x', linestyle='--', alpha=0.7)
ax1.invert_yaxis() # リスト順を逆にする(高い値が上)
# 2番目のグラフ: 従業員一人当たりの純利益
bars2 = ax2.barh(companies, profit_per_employee, color='lightgreen', alpha=0.7)
ax2.set_title('Net Income Per Employee ($K)', fontsize=18, fontweight='bold')
ax2.set_xlabel('Net Income ($K)')
ax2.set_xlim(0, 4000) # x軸の範囲設定
ax2.grid(axis='x', linestyle='--', alpha=0.7)
# バーの端に値を表示
for ax, bars in zip([ax1, ax2], [bars1, bars2]):
for bar in bars:
width = bar.get_width()
ax.text(width + 50, bar.get_y() + bar.get_height()/2, f'{int(width)}'、
va='center', fontsize=12)
# 各棒グラフに格子線を追加する
ax1.set_xticks([0, 1000, 2000, 3000])
ax2.set_xticks([0, 1000, 2000, 3000])
#ボックスを削除(フレームを削除する)
ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)
ax1.spines['left'].set_visible(False)
ax2.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
# y軸のティックラベルを保持したままティックラインを削除します。
ax1.tick_params(axis='y', which='both', length=0)
ax2.tick_params(axis='y', which='both', length=0)
#の下部に説明を追加
fig.text(0.5, 0.05, 'Values shown in thousands of dollars ($K) per employee'、
ha='center', fontsize=12, style='italic')
fig.text(0.5, 0.03, '2024年度のデータ'、
ha='center', fontsize=12, style='italic')
# レイアウト調整
plt.tight_layout()
plt.subplots_adjust(top=0.88, bottom=0.1)
# グラフの表示
plt.show()コード解説:
matplotlib.pyplot as plt をインポートします。:データ可視化のためのMatplotlibライブラリのpyplotモジュールがpltという名前でインポートします。numpyをnpとしてインポートする: 数値演算のためのNumPyライブラリをnpという名前でインポートします。企業 = ['Nvidia'、'Apple'、...]。: グラフに表示する 技術会社の名前をリストとして定義します。revenue_per_employee = [3600, 2400, ...].各企業別 : 各企業別 従業員一人当たりの売上高を千ドル単位で保存したリストです。profit_per_employee = [2000, 572, ...].各企業別 : 各企業別 従業員一人当たりの純利益を千ドル単位で保存したリストです。fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 8), sharey=True)1行2列構造の サブプロットを生成します。横14インチ、縦8インチのサイズに設定して、sharey=trueで2つのグラフがY軸を共有するようにします。fig.suptitle(...): 全体のグラフの トップタイトルを設定します。フォントサイズは24、太字で表示します。bars1 = ax1.barh(companies, revenue_per_employee, color='green', alpha=0.7): 最初のサブプロットに会社別 従業員一人当たりの売上高 データを緑色 水平棒グラフで描画します。透明度は0.7に設定します。ax1.set_title(...),ax1.set_xlabel(...): 最初のグラフの タイトルそして X軸ラベルを設定します。ax1.set_xlim(0, 4000)X軸の 表示範囲を0から4000に制限します。ax1.grid(axis='x', linestyle='--', alpha=0.7)X 軸に沿って 点線格子を追加し、透明度を0.7に設定します。ax1.invert_yaxis()Y軸の順序を リバースさせ、データ値が高い会社が上に来るようにします。bars2 = ax2.barh(...): 2番目のサブプロットに会社別 従業員一人当たりの純利益 データをライトグリーン 水平棒グラフで描きます。for ax, bars in zip([ax1, ax2], [bars1, bars2]):...: 2つのグラフの各棒の端に 数値値を表示する繰り返し文です。bar.get_width()でバーの長さを取得し、その位置に整数の形で値を表示します。ax1.set_xticks([0, 1000, 2000, 3000])X軸に 目盛りを1000単位で表示します。ax1.spines['top'].set_visible(False)グラフ上部の ボーダーライン(spine)を削除とします。同様に、右と左の境界線も削除して、X軸線だけが残るようにします。ax1.tick_params(axis='y', which='both', length=0)Y軸の 目盛り表示線を削除し、ラベルは残します。fig.text(...)グラフの下部に 補足説明をイタリック体で追加します。plt.tight_layout(): グラフ要素間の 間隔を最適化します。plt.subplots_adjust(top=0.88, bottom=0.1)グラフの 上下の余白を微調整します。plt.show(): 完成したグラフを 画面に表示します。
Plotlyでインタラクティブに可視化する

今回は プロットを使用して同じデータを視覚化してみます。 Plotlyは インタラクティブ(interactive) グラフを簡単に作成できるPythonライブラリです。Matplotlibが静的なイメージグラフを描くのに対して、Plotlyはマウスを使って 値を確認するしたり グラフ領域を拡大などのインタラクションが可能なグラフを作成します。
plotly.graph_objects import as go
plotly.subplots import make_subplots from plotly.subplots import
# データ設定 (単位:千ドル)
companies = ['Nvidia', 'Apple', 'Meta', 'Alphabet', 'Broadcom', 'Microsoft', 'Tesla', 'Amazon']].
revenue_per_employee = [3600、2400、2200、1900、1400、1100、1100、777、410]。
profit_per_employee = [2000, 572, 842, 546, 159, 387, 57, 38].
# サブプロット作成
fig = make_subplots(
rows=1, cols=2、
subplot_titles=('Revenue Per Employee ($K)', 'Net Income Per Employee ($K)')、
shared_yaxes=True、
horizontal_spacing=0.05
)
# 最初のグラフ: 従業員一人当たりの売上高
fig.add_trace(
go.Bar(
y=companies、
x=revenue_per_employee、
orientation='h'、
text=revenue_per_employee、
textposition='outside'、
marker=dict(color='green', opacity=0.7)、
hovertemplate='<b>%{y}</b><br>売上高:1人当たり$%{x}K<extra></extra>'
)です、
row=1, col=1
)
# 2番目のグラフ: 従業員1人当たりの純利益
fig.add_trace(
go.Bar(
y=companies、
x=profit_per_employee、
orientation='h'、
text=profit_per_employee、
textposition='outside'、
marker=dict(color='lightgreen', opacity=0.7)、
hovertemplate='<b>%{y}</b><br>当期純利益: $%{x}K 従業員1人当たり $%{x}K<extra></extra>'
)です、
row=1, col=2
)
# 全体のレイアウト設定
fig.update_layout(
title=dict(
text='Tech Companies:Revenue and Net Income Per Employee (2024)'、
font=dict(size=24, family='Arial', color='black')、
x=0.5
)です、
height=600、
width=1000、
showlegend=False、
annotations=[.
dict(
text="従業員1人あたりの千円($K)で表示される値<br>2024年度のデータ」、
showarrow=False、
xref="paper"、
yref="paper"、
x=0.5、
y=-0.15、
font=dict(size=12, style='italic')
)
]
)
# X軸の設定
fig.update_xaxes(
range=[0, 4000]、
gridcolor='lightgray'、
gridwidth=1、
griddash='dash'、
showline=True、
linecolor='black'、
row=1, col=1
)
fig.update_xaxes(
range=[0, 4000]、
gridcolor='lightgray'、
gridwidth=1、
griddash='dash'、
showline=True、
linecolor='black'、
row=1, col=2
)
# Y軸の設定 (フレーム削除)
fig.update_yaxes(
showline=False、
showgrid=False、
zeroline=False、
autorange='reversed' # 高値が上に来るように逆順に並べ替える
)
# グラフ表示
fig.show()コード解説:
plotly.graph_objects as goをインポートするインタラクティブな視覚化のための Plotly ライブラリのgraph_objectsモジュールを行くという名前でインポートします。from plotly.subplots import make_subplots: Plotlyで 複数のサブプロットを作るための関数を取得します。企業 = ['Nvidia'、'Apple'、...]。: グラフに表示する 技術会社の名前をリストとして定義します。revenue_per_employee = [3600, 2400, ...].各企業別 : 各企業別 従業員一人当たりの売上高を千ドル単位で保存したリストです。profit_per_employee = [2000, 572, ...].各企業別 : 各企業別 従業員一人当たりの純利益を千ドル単位で保存したリストです。fig = make_subplots(...)1行2列構造の サブプロットを生成します。subplot_titlesで各グラフのタイトルを設定します、shared_yaxes=TrueでY軸を共有するようにします。fig.add_trace(go.Bar(...), row=1, col=1): 最初のサブプロットに 水平棒グラフを追加します。orientation='h'で水平方向を指定します、テキストとテキスト位置で値をバーの外側に表示します。marker=dict(color='green', opacity=0.7)棒グラフの カラーそして 透明度を設定します。hovertemplate='<b>%{y}</b><br>売上高:1人当たり$%{x}K<extra></extra>'を表示します:マウスを置いたときに表示される ホバー情報の形式を指定します。fig.add_trace(..., row=1, col=2): 2番目のサブプロットに 純利益データを同じ方法で追加します。fig.update_layout(...)グラフの 全体レイアウトを設定します。タイトル、サイズ、凡例表示の有無などを指定します。annotations=[dict(...)].グラフの下部に 補足説明を追加します。xref="paper"とyref="paper"でグラフ領域全体を基準に位置を指定します。fig.update_xaxes(...)X軸の 範囲, 格子縞スタイル, ラインカラー などを設定します。griddash='dash'で点線格子を実装します。fig.update_yaxes(showline=False, ...)Y軸の ボーダーラインを削除し、グリッド線とゼロ点線も隠します。autorange='reversed'でデータ値が高い会社が上に来るように逆順に並べ替えます。fig.show()完成した インタラクティブグラフを表示します。このグラフは、マウスホバー機能、拡大/縮小、画像保存など、Plotlyのインタラクティブ機能をすべてサポートしています。
結論:データ可視化の重要性
売上や純利益などの重要なビジネス指標を 可視化とすると、数字の表だけ見る時よりずっと簡単に内容を理解することができます。上で見たようにPythonのMatplotlibとPlotlyを利用すれば、初心者でも比較的簡単なコードで素敵なグラフを描くことができます。
Matplotlibは 静止画としてレポートや文書に入れやすく、Plotlyは インタラクティブチャートどちらも長所と短所があるので、状況に合わせて活用するといいですね🙂 データの可視化は、大量の情報を効果的に伝達し、インサイトを得るための強力なツールです。
今後、様々なデータに適用して、より複雑なグラフ描画や他のライブラリ(例えば、Seaborn、 ggplot など)にも挑戦してみてください。 継続的な練習と学習このデータを理解する目をさらに養うことができます!
用語解説
- 売上 (Revenue): 企業が製品またはサービスを販売して得た 総収入です。例えば、100万ウォン分の商品を売った場合、売上は100万ウォンです。
- 純利益 (Net Profit)売上から費用をすべて差し引いた 最終的に残る利益です。純利益は、売上高から原価、運営費、税金などのすべての支出を差し引いた金額です。
- データの可視化:データを表や文章ではなく チャートやグラフの形で表現することを指します。視覚化により、複雑なデータも簡単に理解し、洞察を得ることができます。
- Matplotlib: Pythonで使用する 代表的なデータ可視化ライブラリです。折れ線グラフ、棒グラフなど様々なチャートを描くことができ、チューニングやカスタマイズが自由自在です。
- プロット: インタラクティブなデータビジュアライゼーションライブラリの一つで、Webベースのインタラクティブチャートを簡単に作成することができます。ズームイン/ズームアウトやマウスオーバー情報表示などのインタラクティブ機能を提供し、データ分析結果を動的に閲覧することができます。






