4
私は、「Date」と「Num」という列を持つデータフレームを持っています。週ごとのパンダデータフレームの分割
dates = pd.date_range('1/1/2001','1/1/2003', freq = 'd')
nums = [np.random.randint(100) for x in range(len(dates))]
df = pd.DataFrame({'Dates': dates, 'DOW': dates.strftime('%a'), 'Nums': nums})
df = df[(df.DOW != 'Sat') & (df.DOW !='Sun')]
df = df.drop([7,18]).reset_index(drop = True)
私は毎週別々に分離することができるようにデータフレームをビンする必要があります。最終的な目標は、毎週のMAXのNums値を調べて、その週のLAST値と比較して、変化率が何であるかを確認することです。たとえば、
week1 = df[0:5]
week2 = df[5:9]
week3 = df[9:12]
In [156]: w1max = week1.Nums.max()
Out[156]: 97
In [157]: w2Last = week2.iloc[-1].Nums
Out[157]: 76
pctChange = (w2Last-w1max)/float(w1max)
In [166]: pctChange
Out[166]: -0.21649484536082475
問題は、数週間で欠落していることです(例:week2には月がなく、week3には金曜日がありません)。では、どうやってそれらを分けるのですか?
最も近いものはdf.resample()
を使用しているようですが、私はこれを使って比較しようとしています。
鮮やかで、.shiftと.Grouperについては知らなかった – RSHAP