Pythonで時系列データの最初と最後の3日間を抽出して表示する方法
pandasの時系列データが与えられたとき、その先頭の3日間と末尾の3日間に含まれるデータを抽出したいケースはよくあります。
例えば、次のような時系列データから以下の結果を取得することを想定します。
first three days: 2020-01-01 Chennai 2020-01-03 Delhi Freq: 2D, dtype: object last three days: 2020-01-07 Pune 2020-01-09 Kolkata Freq: 2D, dtype: object
解決の手順
この問題は、以下の手順で解決できます。
Seriesを定義し、変数
dataとして保存します。pd.date_range()関数を使用し、開始日を「2020-01-01」、periods=5、freq='2D'(2日間隔)と指定して日付インデックスを生成し、変数time_seriesとして保存します。
time_series = pd.date_range('2020-01-01', periods = 5, freq ='2D')
data.index = time_seriesを設定して、生成した日付をインデックスとして割り当てます。data.first('3D')を使って先頭の3日間のデータを取得し、変数first_dayとして保存します。first()メソッドは、時系列データの先頭から指定したオフセット('3D'なら開始日から3日以内)に含まれるレコードを返します。この例では頻度が2日ごとなので、「1月1日」と「1月3日」の2行が該当します。
first_day = data.first('3D')
同様に、
data.last('3D')を使って末尾の3日間のデータを取得し、変数last_dayとして保存します。
last_day = data.last('3D')
サンプルコード
理解を深めるために、実際のコードを見てみましょう。
import pandas as pd
data = pd.Series(['Chennai', 'Delhi', 'Mumbai', 'Pune', 'Kolkata'])
time_series = pd.date_range('2020-01-01', periods = 5, freq ='2D')
data.index = time_series
print("time series:\n",data)
first_day = data.first('3D')
print("first three days:\n",first_day)
last_day = data.last('3D')
print("last three days:\n",last_day)
実行結果
time series: 2020-01-01 Chennai 2020-01-03 Delhi 2020-01-05 Mumbai 2020-01-07 Pune 2020-01-09 Kolkata Freq: 2D, dtype: object first three days: 2020-01-01 Chennai 2020-01-03 Delhi Freq: 2D, dtype: object last three days: 2020-01-07 Pune 2020-01-09 Kolkata Freq: 2D, dtype: object
このように、first() と last() メソッドを使えば、時系列データの先頭・末尾から任意の期間内のデータを簡単に抽出できます。データ分析の前処理などで特定の範囲だけを取り出したい場合に非常に便利な機能です。
-
【Python】PandasのSeriesから特定の範囲の要素を抽出して表示する方法
はじめにデータ分析では、PandasのSeriesから特定の範囲に含まれる値だけを取り出したい場面がよくあります。本記事では、「10以上15以下」の要素を抽出して表示するプログラムを、2つの異なるアプローチで実装する方法を解説します。入力 − 次のようなSeriesがあるとします。0 12 1 13 2 15 3 20 4 19 5 18 6 11出力 − 10から15の範囲にある要素を抽出すると、結果は次のようになります。0 12 1 13 2 15 6 11解決策1:between()メソッドを使うPandasには、指定した
-
Pythonでpandas Seriesに含まれる整数・浮動小数点・文字列のデータ型別カウント方法
はじめにpandasのSeriesには、整数(int)、浮動小数点数(float)、文字列(str)など、さまざまなデータ型が混在していることがあります。本記事では、Pythonを使って特定のSeries内の各データ型の要素数をカウントするプログラムを作成する方法を解説します。問題設定入力 − 次のようなSeriesが与えられていると仮定します。0 1 1 2 2 python 3 3 4 4 5 5 6 6.5出