Pandasのplot.barで棒グラフを作成する方法について

Pandas,イメージ

AI実装検定のご案内

Pandasで棒グラフを作る方法について、できるだけ丁寧に解説します。

plot.bar()はPandasのDataFrameやSeriesオブジェクトに備わっている可視化メソッドで、内部的にはMatplotlibを使っています。

基本から応用まで段階的に整理します。

目次

基本の使い方

まずはシンプルにSeriesやDataFrameから棒グラフを作る例です。

import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータ
data = {'商品': ['A', 'B', 'C', 'D'],
        '売上': [100, 150, 80, 200]}

df = pd.DataFrame(data)

# インデックスに商品名を設定
df = df.set_index('商品')

# 縦棒グラフを描画
df['売上'].plot.bar()

plt.show()

ポイント

  • df['売上'].plot.bar() で縦棒グラフが作成されます。
  • インデックスが自動的にX軸ラベルになります。
  • Matplotlibを使うため、plt.show()で表示する必要があります。

横棒グラフ

縦ではなく横にしたい場合は .barh() を使います。

import pandas as pd
import matplotlib.pyplot as plt

data = {'商品': ['A', 'B', 'C', 'D'],
        '売上': [100, 150, 80, 200]}

df = pd.DataFrame(data).set_index('商品')

# 横棒グラフ
df['売上'].plot.barh(color='skyblue')

plt.show()

ポイント

  • bar() → 縦棒グラフ
  • barh() → 横棒グラフ
  • color で色を変更可能

複数列の棒グラフ

DataFrameの複数列をまとめて可視化することもできます。

import pandas as pd
import matplotlib.pyplot as plt

data = {
    '2024年': [100, 150, 80, 200],
    '2025年': [120, 160, 90, 220]
}
df = pd.DataFrame(data, index=['A', 'B', 'C', 'D'])

# 複数列をまとめて表示
df.plot.bar()

plt.show()

ポイント

  • 棒が「グループ化」されて表示されます。
  • 比較をしたいときに便利です。

スタック棒グラフ(積み上げ)

複数列の値を積み上げて表示する場合は stacked=True を指定します。

import pandas as pd
import matplotlib.pyplot as plt

data = {
    '2024年': [100, 150, 80, 200],
    '2025年': [120, 160, 90, 220]
}
df = pd.DataFrame(data, index=['A', 'B', 'C', 'D'])

# 積み上げ棒グラフ
df.plot.bar(stacked=True)

plt.show()

ポイント

  • 各商品の合計値を視覚的に把握しやすい。
  • 比率を見るなら積み上げの方が直感的。

オプションの活用

棒グラフの見やすさを調整するには、Matplotlibの引数を活用します。

import pandas as pd
import matplotlib.pyplot as plt

data = {
    '2024年': [100, 150, 80, 200],
    '2025年': [120, 160, 90, 220]
}
df = pd.DataFrame(data, index=['A', 'B', 'C', 'D'])

# カスタマイズ
ax = df.plot.bar(
    figsize=(8, 6),                # グラフサイズ
    color=['skyblue', 'orange'],   # 列ごとの色
    alpha=0.8,                     # 透明度
    width=0.7                      # 棒の太さ
)

# タイトルとラベル
ax.set_title("商品別売上比較", fontsize=16)
ax.set_xlabel("商品", fontsize=12)
ax.set_ylabel("売上(万円)", fontsize=12)

# X軸ラベルを横向きに
plt.xticks(rotation=0)

plt.show()

Seriesとの組み合わせ

棒グラフと折れ線グラフを重ねるのも可能です。

import pandas as pd
import matplotlib.pyplot as plt

data = {
    '2024年': [100, 150, 80, 200],
    '2025年': [120, 160, 90, 220]
}
df = pd.DataFrame(data, index=['A', 'B', 'C', 'D'])

# 2024年は棒グラフ
ax = df['2024年'].plot.bar(color='skyblue', label='2024年')

# 2025年は折れ線グラフ
df['2025年'].plot(ax=ax, color='red', marker='o', label='2025年')

plt.legend()
plt.show()

ポイント

  • ax=ax を指定すると、同じグラフ上に描画できます。
  • 棒+折れ線は売上や数値の推移を比較するときによく使われます。

実務でよくある応用例

  • カテゴリ比較:商品、地域、担当者別などを棒グラフで比較。
  • 年度比較:前年・今年の売上やデータを複数列で表現。
  • 割合表示:積み上げ+正規化してシェアを可視化。
  • ダッシュボード化:Jupyter Notebook上でインタラクティブに表示。

まとめ

  • plot.bar() → 縦棒グラフ
  • plot.barh() → 横棒グラフ
  • stacked=True → 積み上げ棒グラフ
  • Matplotlibの設定を組み合わせることで、タイトル・ラベル・色・サイズを自由に調整可能

以上、Pandasのplot.barで棒グラフを作成する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次