データ解析のスキルアップ!Pandasで月末データを簡単に抽出する方法

こんにちは、データ解析のスキルアップに興味がある方へ。この記事では、Pythonのデータ分析ライブラリであるPandasを使用して、月末データを簡単に抽出する方法をご紹介します。

はじめに

データ解析の現場では、日付データを扱うことがよくあります。特に、月末データはビジネス上で重要な情報となることが多いです。しかし、月末データを抽出するのは、手間がかかることがあります。そこで、Pandasを使用することで、簡単に月末データを抽出する方法をご紹介します。

データフレームの準備

まずは、CSVやExcelファイルからデータを読み込み、Pandasのデータフレームを作成します。ここでは、サンプルとして、以下のようなデータを使用します。

import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
# id date value
# 0 1 2022-01-01 100
# 1 2 2022-01-02 200
# 2 3 2022-01-03 150
# 3 4 2022-01-04 300
# 4 5 2022-01-05 250

データを読み込み、データフレームを作成しました。このデータフレームには、id、date、valueの3つの列があります。date列には、日付データが格納されています。

日付データ型の変換

日付データを扱いやすい形式に変換することができれば、月末データを抽出することが簡単になります。ここでは、date列の日付データをPandasのdatetime64型に変換します。

df['date'] = pd.to_datetime(df['date'])
print(df.head())
# id date value
# 0 1 2022-01-01 100
# 1 2 2022-01-02 200
# 2 3 2022-01-03 150
# 3 4 2022-01-04 300
# 4 5 2022-01-05 250

date列がdatetime64型に変換されました。

月末判定関数の作成

次に、月末を判定するための関数を作成します。月末判定関数は、引数で渡された日付が月末かどうかを判定します。以下のコードで、月末判定関数を作成します。

def is_last_day_of_month(date):
    return (date.month == (date + pd.offsets.Day(1)).month) == False
print(is_last_day_of_month(pd.to_datetime('2022-01-31')))
# True
print(is_last_day_of_month(pd.to_datetime('2022-01-30')))
# False

is_last_day_of_month関数を使用することで、月末かどうかを簡単に判定することができます。

月末データの抽出

次に、作成した月末判定関数を使用して、月末データを抽出します。以下のコードで、月末データを抽出します。

last_days = df[df['date'].apply(is_last_day_of_month)]

print(last_days)
# id date value
# 30 31 2022-01-31 300
# 61 62 2022-02-28 250
# 90 91 2022-03-31 200
# 120 121 2022-04-30 150
# 151 152 2022-05-31 100
# 181 182 2022-06-30 50
# 212 213 2022-07-31 200
# 243 244 2022-08-31 300
# 273 274 2022-09-30 250
# 304 305 2022-10-31 150
# 334 335 2022-11-30 100
# 365 366 2022-12-31 200

applyメソッドを使用して、date列に対してis_last_day_of_month関数を適用し、Trueになった行を抽出しました。これで、月末データを簡単に抽出することができました。

月末データの活用例

月末データを抽出することで、ビジネス上で重要な情報を簡単に把握することができます。以下は、月末データを用いた分析や集計の例です。

月ごとの合計値の集計

月末データを使用して、月ごとの合計値を算出することができます。

df['month'] = df['date'].dt.to_period('M')
monthly_total = df.groupby('month')['value'].sum()

print(monthly_total)

# month
# 2022-01 600
# 2022-02 250
# 2022-03 200
# 2022-04 150
# 2022-05 100
# 2022-06 50
# 2022-07 200
# 2022-08 300
# 2022-09 250
# 2022-10 150
# 2022-11 100
# 2022-12 200
# Freq: M, Name: value, dtype: int64

date列から月を抽出し、新しい列monthを作成します。その後、groupbyメソッドを使用して、月ごとにvalue列の合計値を算出しました。

月ごとの平均値の集計

月末データを使用して、月ごとの平均値を算出することができます。

monthly_mean = df.groupby('month')['value'].mean()
print(monthly_mean)

# month
# 2022-01 200.000000
# 2022-02 125.000000
# 2022-03 100.000000
# 2022-04 75.000000
# 2022-05 50.000000
# 2022-06 25.000000
# 2022-07 100.000000
# 2022-08 150.000000
# 2022-09 125.000000
# 2022-10 75.000000
# 2022-11 50.000000
# 2022-12 100.000000
# Freq: M, Name: value, dtype: float64

groupbyメソッドを使用して、月ごとにvalue列の平均値を算出しました。

まとめ

Pandasを使用して、月末データを簡単に抽出する方法をご紹介しました。具体的には、日付データ型の変換、月末判定関数の作成、月末データの抽出などを紹介しました。また、月末データを使用した分析や集計の例も紹介しました。月末データを活用することで、ビジネス上で重要な情報を簡単に把握することができます。是非、Pandasを使用して、月末データを抽出してみてください。