Python
 Computer >> コンピューター >  >> プログラミング >> Python

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=5freq='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() メソッドを使えば、時系列データの先頭・末尾から任意の期間内のデータを簡単に抽出できます。データ分析の前処理などで特定の範囲だけを取り出したい場合に非常に便利な機能です。


  1. 【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には、指定した

  2. 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出