pandas.Series.plot.area を使って Series データを可視化する


pandas.Series.plot.area を使って Series データを可視化する

pandas.Series.plot.area は、pandas の Series オブジェクトを 面積グラフ として可視化する関数です。時間経過におけるデータの変化や、複数のカテゴリ間の比較などに役立ちます。

基本的な使い方

import pandas as pd

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
series = df['売上']

# 面積グラフの作成
series.plot.area()

オプション

pandas.Series.plot.area には、グラフのカスタマイズに使用できるオプションがいくつか用意されています。

  • x: X軸に使用する列を指定します。デフォルトではインデックスが使用されます。
  • y: Y軸に使用する列を指定します。デフォルトでは Series オブジェクトの値が使用されます。
  • stacked: True に設定すると、複数の列を積み重ねて表示します。
  • alpha: グラフの透明度を設定します。
  • color: グラフの色を設定します。
  • title: グラフのタイトルを設定します。
  • legend: 凡例を表示するかどうかを設定します。

# 複数の列を積み重ねて表示
series.plot.area(stacked=True)

# X軸に日付列を使用
series.plot.area(x='日付')

# 特定の色でグラフを表示
series.plot.area(color='blue')

# タイトルと凡例を設定
series.plot.area(title='売上推移', legend=True)
  • pandas.Series.plot.area は、Matplotlib の area 関数を内部で使用しています。


import pandas as pd
import matplotlib.pyplot as plt

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
df[['売上', '利益']].plot.area()
plt.show()

説明

  • このコードは、売上利益 の 2 つの列を含む DataFrame を作成します。
  • plot.area() メソッドを使用して、2 つの列を積み重ねた面積グラフを作成します。
  • plt.show() を使用して、グラフを画面に表示します。

結果

X軸に日付列を使用する

import pandas as pd
import matplotlib.pyplot as plt

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
df.set_index('日付').plot.area()
plt.show()
  • このコードは、日付 列を DataFrame のインデックスに設定します。
  • plot.area() メソッドを使用して、日付 列を X 軸に、売上利益 の列を Y 軸に持つ面積グラフを作成します。

特定の色でグラフを表示

import pandas as pd
import matplotlib.pyplot as plt

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
df[['売上', '利益']].plot.area(color=['red', 'blue'])
plt.show()
  • このコードは、売上 列を赤色、利益 列を青色で表示するように color オプションを設定します。
  • 他の色を使用したい場合は、color オプションに好きな色を指定できます。

タイトルと凡例を設定

import pandas as pd
import matplotlib.pyplot as plt

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
df[['売上', '利益']].plot.area(title='業績推移', legend=True)
plt.show()
  • このコードは、title オプションを使用してグラフのタイトルを "業績推移" に設定します。
  • legend オプションを使用して凡例を表示します。


pandas.Series.plot.area の代替方法

Matplotlib の fill_between 関数

  • 利点:
    • より柔軟なカスタマイズが可能
    • 複数のデータセットを重ねてプロットしやすい
  • 欠点:
    • pandas.Series.plot.area よりもコードが煩雑になる場合がある
    • pandas との統合が pandas.Series.plot.area ほどスムーズではない
import matplotlib.pyplot as plt
import pandas as pd

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
plt.figure(figsize=(10, 6))
plt.fill_between(df['日付'], df['売上'], df['利益'], color='skyblue', alpha=0.7)
plt.xlabel('日付')
plt.ylabel('売上・利益')
plt.title('業績推移')
plt.grid(True)
plt.show()

Seaborn の area 関数

  • 利点:
    • 見栄えの良いグラフを簡単に作成できる
    • pandas との統合が良好
  • 欠点:
import seaborn as sns
import pandas as pd

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
sns.area_plot(x='日付', y='売上', data=df, color='skyblue', alpha=0.7)
plt.title('業績推移')
plt.grid(True)
plt.show()

Bokeh の vbar_stack 関数

  • 利点:
  • 欠点:
from bokeh.plotting import figure, show

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
p = figure(x_range=df['日付'], height=400, title="業績推移")
p.vbar_stack(df.columns, x='日付', source=df, color=['skyblue', 'orange'], alpha=0.7)
p.xaxis.axis_label = '日付'
p.yaxis.axis_label = '売上・利益'
p.grid.grid_line_color = None
show(p)

Plotly の area チャート

  • 利点:
  • 欠点:
import plotly.express as px

# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
        '売上': [100, 150, 200],
        '利益': [50, 75, 100]}
df = pd.DataFrame(data)

# 面積グラフの作成
fig = px.area(df, x='日付', y=['売上', '利益'], color=['skyblue', 'orange'], title='業績推移')
fig