Pandasで四半期分析を簡単に行う:Timestamp.quarter属性の使い方と応用例
pandas.Timestamp.quarter
は、Pandas データフレーム内の Timestamp
型データから四半期番号を取得するための属性です。
使い方
pandas.Timestamp.quarter
属性は、Timestamp
型データに直接アクセスすることで使用できます。
import pandas as pd
# サンプルデータの作成
dates = pd.to_datetime(['2023-01-01', '2023-04-01', '2023-07-01', '2023-10-01'])
df = pd.DataFrame({'date': dates})
# 四半期番号の取得
df['quarter'] = df['date'].dt.quarter
print(df)
上記のコードを実行すると、以下の出力が得られます。
date quarter
0 2023-01-01 1
1 2023-04-01 2
2 2023-07-01 3
3 2023-10-01 4
- 四半期ごとの在庫管理
- 四半期ごとの顧客数推移
- 四半期ごとの売上分析
- 四半期情報の可視化には、折れ線グラフや棒グラフなどが有効です。
pandas.Timestamp.quarter
属性は、Timestamp
型データが格納された列に対してのみ使用できます。pandas.Timestamp.quarter
属性は、1 から 4 までの値を返します。1 が第一四半期、2 が第二四半期、3 が第三四半期、4 が第四四半期となります。
四半期ごとの売上分析
この例では、Sales
列に売上データ、Date
列に日付データを含むデータフレームを作成し、四半期ごとの売上合計を算出します。
import pandas as pd
# サンプルデータの作成
data = {'Sales': [100, 150, 200, 250, 300],
'Date': pd.to_datetime(['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2023-05-01'])}
df = pd.DataFrame(data)
# 四半期ごとの売上合計の算出
df['quarter'] = df['Date'].dt.quarter
df_grouped = df.groupby('quarter')['Sales'].sum()
print(df_grouped)
quarter
1 350
2 350
Name: Sales, dtype: int64
四半期ごとの顧客数推移
この例では、Customer ID
列に顧客IDデータ、Join Date
列に加入日データを含むデータフレームを作成し、四半期ごとの新規顧客数を算出します。
import pandas as pd
# サンプルデータの作成
data = {'Customer ID': [1, 2, 3, 4, 5],
'Join Date': pd.to_datetime(['2023-02-15', '2023-05-12', '2023-08-01', '2023-11-07', '2024-02-03'])}
df = pd.DataFrame(data)
# 四半期ごとの新規顧客数の算出
df['quarter'] = df['Join Date'].dt.quarter
df_grouped = df.groupby('quarter')['Customer ID'].count()
print(df_grouped)
quarter
1 1
2 2
3 1
4 1
Name: Customer ID, dtype: int64
四半期ごとの在庫管理
この例では、Product ID
列に商品IDデータ、Stock Quantity
列に在庫数データ、Date
列に日付データを含むデータフレームを作成し、四半期ごとの在庫残高の推移を分析します。
import pandas as pd
# サンプルデータの作成
data = {'Product ID': ['A1', 'A2', 'A3', 'B1', 'B2'],
'Stock Quantity': [100, 50, 20, 75, 30],
'Date': pd.to_datetime(['2023-01-31', '2023-03-31', '2023-06-30', '2023-09-30', '2023-12-31'])}
df = pd.DataFrame(data)
# 四半期ごとの在庫残高の算出
df['quarter'] = df['Date'].dt.quarter
df_grouped = df.groupby(['Product ID', 'quarter'])['Stock Quantity'].sum()
print(df_grouped)
Product ID quarter
A1 1 100
2 50
3 20
4 10
A2 1 50
2 50
3 30
4 30
A3 1 20
2 20
3 10
4 10
B1 1 75
2 75
3 50
4 25
B2 1 30
2 30
3 30
4 30
Name: Stock Quantity, dtype: int64
- 四半期
- 四半期ごとの広告キャンペーンの効果測定
pandas.Timestamp.quarter
属性は、Timestamp
型データから四半期番号を取得する便利な機能です。しかし、状況によってはより柔軟性のある方法が必要となる場合があります。ここでは、pandas.Timestamp.quarter
の代替方法として以下の3つの方法を紹介します。
dt.is_quarter_start 属性と dt.strftime メソッドの組み合わせ
この方法は、dt.is_quarter_start
属性で四半期の開始日かどうかを判定し、dt.strftime
メソッドで四半期番号を文字列として取得します。
import pandas as pd
# サンプルデータの作成
dates = pd.to_datetime(['2023-01-01', '2023-04-01', '2023-07-01', '2023-10-01'])
df = pd.DataFrame({'date': dates})
# 四半期番号の取得
df['quarter'] = df['date'].dt.is_quarter_start.astype(int) * (df['date'].dt.strftime('%q'))
print(df)
date quarter
0 2023-01-01 1
1 2023-04-01 2
2 2023-07-01 3
3 2023-10-01 4
lambda 関数
この方法は、lambda 関数を使用して四半期番号を算出します。
import pandas as pd
# サンプルデータの作成
dates = pd.to_datetime(['2023-01-01', '2023-04-01', '2023-07-01', '2023-10-01'])
df = pd.DataFrame({'date': dates})
# 四半期番号の取得
df['quarter'] = df['date'].apply(lambda x: (x.month - 1) // 3 + 1)
print(df)
date quarter
0 2023-01-01 1
1 2023-04-01 2
2 2023-07-01 3
3 2023-10-01 4
NumPy 配列
この方法は、NumPy 配列を使用して四半期番号をマッピングします。
import pandas as pd
import numpy as np
# サンプルデータの作成
dates = pd.to_datetime(['2023-01-01', '2023-04-01', '2023-07-01', '2023-10-01'])
df = pd.DataFrame({'date': dates})
# 四半期番号のマップ
quarter_map = {1: 1, 2: 1, 3: 2, 4: 2, 5: 3, 6: 3, 7: 3, 8: 4, 9: 4, 10: 4, 11: 4, 12: 4}
# 四半期番号の取得
df['quarter'] = np.vectorize(quarter_map.get)(df['date'].dt.month)
print(df)
date quarter
0 2023-01-01 1
1 2023-04-01 2
2 2023-07-01 3
3 2023-10-01 4
方法 | 利点 | 欠点 |
---|---|---|
dt.is_quarter_start 属性と dt.strftime メソッド | わかりやすい | 複雑なフォーマット指定が必要 |
lambda 関数 | 柔軟性が高い | 可読性がやや低い |
NumPy 配列 | 高速処理が可能 | 事前準備が必要 |