5

パンダを使用して毎日の値の合計を計算しようとしています。これがテストファイルです - http://pastebin.com/uSDfVkTS

これは私がこれまでに思いついたコードです:

import numpy as np
import datetime as dt
import pandas as pd

f = np.genfromtxt('test', dtype=[('datetime', '|S16'), ('data', '<i4')], delimiter=',')
dates = [dt.datetime.strptime(i, '%Y-%m-%d %H:%M') for i in f['datetime']]
s = pd.Series(f['data'], index = dates)
d = s.resample('D', how='sum')

指定されたテストファイルを使用すると、次が生成されます。

2012-01-02    1128
Freq: D

最初の問題は、計算された合計が翌日に対応することです。パラメータ loffset='-1d' を使用して解決できました。

実際の問題は、データが 1 日の 00:30 からではなく、1 日のいつでも開始される可能性があることです。また、データには「nan」値で満たされたギャップがあります。

とはいえ、毎日の合計を計算するために必要な値の数のしきい値を低く設定することは可能ですか? (たとえば、1 日の値が 40 未満の場合は、合計の代わりに NaN を入力します)

カスタム関数を定義してそれを「how」パラメーターで参照することは可能だと思いますが、関数自体をコーディングする方法がわかりません。

4

2 に答える 2