【Python】PandasのDataFrameを日付(時間)条件でフィルタリングする方法
PandasのDataFrameを特定の日付を基準にフィルタリングしたい場合は、locを使い、その中に抽出条件を指定することで、目的のレコードを簡単に取得できます。この記事では、購入日(Date_of_Purchase)を条件にデータを絞り込む具体的な手順を解説します。
1. 必要なライブラリをインポートする
まずはPandasをインポートします。
import pandas as pd
2. 日付データを含む辞書を作成する
次に、車種と購入日のデータを持つ辞書(リスト形式)を作成します。
d = {
'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
'2021-03-16', '2021-05-19', '2021-08-22']
}
3. 辞書からDataFrameを作成する
作成した辞書をもとに、pd.DataFrame()でDataFrameを生成します。
dataFrame = pd.DataFrame(d)
4. locを使って日付条件でフィルタリングする
ここでは「2021年7月15日以降に購入された車」を抽出してみましょう。locの中に比較条件を記述するだけで、条件に一致する行だけを取り出せます。
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
日付が「YYYY-MM-DD」形式の文字列で格納されている場合でも、文字列としての大小比較が正しく機能するため、この方法はシンプルかつ便利です。
サンプルコード(完全版)
以下が一連の流れをまとめた完全なコードです。
import pandas as pd
# リストの辞書を定義
d = {
'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
'2021-03-16', '2021-05-19', '2021-08-22']
}
# 辞書からDataFrameを作成
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)
# 2021年7月15日以降に購入された車を抽出
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
# フィルタリング結果を表示
print("\n2021年7月15日以降に購入された車:\n", resDF)
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
Car Date_of_Purchase
0 BMW 2021-07-10
1 Lexus 2021-08-12
2 Audi 2021-06-17
3 Mercedes 2021-03-16
4 Jaguar 2021-05-19
5 Bentley 2021-08-22
2021年7月15日以降に購入された車:
Car Date_of_Purchase
1 Lexus 2021-08-12
5 Bentley 2021-08-22
このように、2021年8月12日に購入された「Lexus」と、2021年8月22日に購入された「Bentley」の2件だけが抽出されました。
補足:より高度な日付処理を行いたい場合
文字列比較によるフィルタリングは手軽ですが、年や月ごとの集計、期間指定などより複雑な操作を行いたい場合は、pd.to_datetime()で日付列をdatetime型に変換しておくと便利です。
dataFrame["Date_of_Purchase"] = pd.to_datetime(dataFrame["Date_of_Purchase"])
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
datetime型に変換しておけば、.dt.yearや.dt.monthを使った柔軟な分析も可能になります。
まとめ
DataFrameの日付フィルタリングは、locに比較条件を渡すだけで実現できます。YYYY-MM-DD形式の文字列ならそのまま比較でき、より高度な処理が必要な場合はdatetime型への変換を活用しましょう。売上データやログデータの時系列分析など、実務でも頻繁に使われるテクニックなので、ぜひマスターしておいてください。
-
Python Pandasでnull以外の値を前方へ転送する方法(ffillの使い方)
Pandasのfillna()で欠損値(NaN)を前方向きに埋める Pandasでは、fillna()メソッドのmethodパラメータを使うことで、null以外の値を前方(上の行から下の行へ)に転送できます。前方補完(forward fill)を行うには、値としてffillを指定します。 fillna(method=ffill) なお、Pandas 2.1以降ではmethod引数は非推奨となっているため、専用メソッドのffill()を使うことが推奨されています。どちらも同じ結果が得られます。 サンプルデータの準備 ここでは、一部のセルにNaN(欠損値)を含むCSVファイル「SalesData.
-
Python・Pandas DataFrameで散布図を描画する方法
散布図(Scatter Plot)は、2つの変数の関係を視覚的に把握するための代表的なデータ可視化手法です。Pandasでは plot.scatter() メソッドを使うことで、DataFrameのデータから簡単に散布図を作成できます。この記事では、チームごとのランキングポイントデータを例に、Pandas DataFrameから散布図を描画する手順を解説します。必要なライブラリのインポートまず、必要なライブラリをインポートします。データ操作には pandas、グラフの表示には matplotlib を使用します。import pandas as pd import matplotlib.pyp