はじめに:期間を指定してデータを抽出する利点
データ分析では、ある期間内のデータを抽出することがよくあります。例えば、特定の期間の売上データを抽出して分析することで、その期間の売上状況を把握できます。Pandasを使えば、簡単に期間を指定してデータを抽出することができます。
Pandasで日付データを扱うための前準備:datetime型への変換
Pandasで日付データを扱うためには、データをdatetime型に変換する必要があります。datetime型に変換するには、Pandasのto_datetime()関数を使います。以下は、日付が文字列型のデータをdatetime型に変換する例です。
import pandas as pd date_str = ['2022-01-01', '2022-01-02', '2022-01-03'] dates = pd.to_datetime(date_str) print(dates)
実行結果:
DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03'], dtype='datetime64[ns]', freq=None)
to_datetime()関数は、日付が含まれる列を一括で変換することもできます。
df['date'] = pd.to_datetime(df['date'])
期間を指定してデータを抽出する基本操作:query, loc, ilocを使った方法
期間を指定してデータを抽出するには、query、loc、ilocを使う方法があります。
queryを使った方法
queryを使う方法は、条件式を文字列で指定することができます。例えば、2022年1月1日から2022年1月3日までのデータを抽出するには、次のように記述します。
df.query('date >= "2022-01-01" and date <= "2022-01-03"')
locを使った方法
locを使う方法は、行ラベルと列ラベルを指定することで、条件に合う行を抽出します。例えば、2022年1月1日から2022年1月3日までのデータを抽出するには、次のように記述します。
df.loc[(df['date'] >= '2022-01-01') & (df['date'] <= '2022-01-03')]
ilocを使った方法
ilocを使う方法は、行番号と列番号を指定することで、条件に合う行を抽出します。例えば、0番目から2番目の行(つまり、2022年1月1日から2022年1月3日までのデータ)を抽出するには、次のように記述します。
df.iloc[0:3]
実例1:ある期間内の売上データを抽出して分析する
以下は、ある店舗の2022年1月1日から2022年1月31日までの売上データを抽出し、日別の合計売上を求める例です。
import pandas as pd sales_data = pd.read_csv('sales_data.csv') # 日付データをdatetime型に変換 sales_data['date'] = pd.to_datetime(sales_data['date']) # 2022年1月1日から2022年1月31日までのデータを抽出 sales_data = sales_data.query('date >= "2022-01-01" and date <= "2022-01-31"') # 日別の売上合計を求める daily_sales = sales_data.groupby('date')['sales'].sum() print(daily_sales)
実行結果:
date 2022-01-01 3000 2022-01-02 2000 2022-01-03 1500 ... 2022-01-29 2500 2022-01-30 2000 2022-01-31 3500 Name: sales, Length: 31, dtype: int64
実例2:特定の年度や月のデータを抽出する方法
以下は、ある店舗の2022年度(2022年4月1日から2023年3月31日まで)の売上データを抽出し、月別の平均売上を求める例です。
import pandas as pd sales_data = pd.read_csv('sales_data.csv') # 日付データをdatetime型に変換 sales_data['date'] = pd.to_datetime(sales_data['date']) # 2022年4月1日から2023年3月31日までのデータを抽出 sales_data = sales_data.query('"2022-04-01" <= date <= "2023-03-31"') # 月別の平均売上を求める monthly_sales = sales_data.groupby(pd.Grouper(key='date', freq='M'))['sales'].mean() print(monthly_sales)
実行結果:
date 2022-04-30 2800.00 2022-05-31 2475.00 2022-06-30 2175.00 ... 2023-01-31 2600.00 2023-02-28 3150.00 2023-03-31 3550.00 Freq: M, Name: sales, dtype: float64
まとめ:期間指定抽出の効果的な活用法と注意点
期間指定抽出は、データ分析において非常に重要な操作です。以下は、期間指定抽出の効果的な活用法と注意点です。
効果的な活用法
- ある期間のデータを抽出して、その期間の傾向やパターンを分析する。
- 特定の期間のデータを抽出して、その期間の売上や利益などを把握する。
- 特定の期間のデータを抽出して、その期間における顧客の嗜好や傾向を分析する。
注意点
- 期間指定の際は、日付のフォーマットに注意して指定すること。
- 期間指定の際は、開始日と終了日を両方とも含むかどうかについて注意すること。
- 期間指定の際は、データに欠損値が含まれている場合に注意すること。
以上が、Pandasで期間を指定してデータを抽出する方法の解説でした。