Pythonを用いてデータ加工を行う際にはpandasライブラリを使用する機会が多いですよね。
このpandasを使い慣れていないと上手く処理できないことがあり、例えば日付や時間を等間隔で間引きしたい(抽出したい)場合がありますが、どのように処理すればいいのか理解していますか。
ここでは、このPython(Pandas)にて等間隔(時間)で間引く方法について解説していきます。
Pandasにて等間隔(時間)で間引く方法【asfreq】
それでは、Python(Pandas)にて日付を等間隔で抽出する方法について確認していきます。
まずは以下のような時間の列を含むexcelファイルを読み込むとします。
このexcelファイルを読み込み、pandasにて等間隔で日付の間引きを行うには、以下のようなサンプルコードを記載していくといいです。
import os
os.chdir(“C:\\sample”)
import pandas as pd
df= pd.read_excel(‘jikansa.xlsx’,encoding=”SHIFT JIS”, index_col=0,parse_dates=True)
dfa = df[“2020-05-26″:”2020-06-01”]
dfb=dfa.asfreq(‘1D’)
dfb
コードの意味について具体的に解説していきます。
import os
os.chdir(“C:\\sample”)
こちらにてexcelファイルが置いてある場所にカレントディレクトリを移動させます(ここではCフォルダ直下のsampleフォルダに移動)。
import pandas as pd
df= pd.read_excel(‘jikansa.xlsx’,encoding=”SHIFT JIS”, index_col=0,parse_dates=True)
こちらにてpythonのpandasライブラリをインポートし、jikansaという名前のエクセルファイルの読み込みをします。この際、A列(0番目のカラム)に相当する時間の列をインデックス列として、さらに「parse_dates=True」で時系列データとして扱っていきます。
dfa = df[“2020-05-26″:”2020-06-01”]
こちらにて、抽出する期間を指定しています。
dfb=dfa.asfreq(‘1D’)
最後にpandasでの時間を等間隔で間引くコードを記載します。ここでは、.asfreq()を使用しています。この()内に日付、時間等を指定することでpythonでの等間隔処理を実行できます。
今回は1日=1Dで時間を間引いています。
2日間隔で間引く(Pandasでの等間隔の処理:asfreq)
なお、上述のasfreq()のカッコの中身を「2D」とすれば2日間隔での抽出ができます。
3Dであれば3日ごとの等間隔処理となります。
dfb=dfa.asfreq(‘2D’)
こちらを反映した際のpythonでの処理結果は以下の通りです。
時間(hour)単位でも等間隔で間引くことができる【pandas】
なお、asfreq()内を「1H」などと指定すれば時間単位での等間隔処理ができます。
以下では12H(12時間)ごとにデータを間引いてみました。もちろんpandasにて等間隔処理時にデータが無い場合にはNANと表示されます。
まとめ pythonにて時間を等間隔で間引く方法
ここで、pythonのpandasライブラリにて日付、時間を等間隔で抽出する方法について解説しました。
いずれにせよ上述の通り、asfreq()を上手く活用することが重要です。
pandasでの各種操作に慣れ、業務をより効率化させていきましょう。
コメント