私はDataFrameにある時系列データの拡張Zスコアを計算したいが、複数の列の平均と標準偏差を使ってデータを標準化したいが、別々に各列内の平均および標準偏差ではなく、私はgroupbyとDataFrame.expandingの組み合わせを使いたいと思っていますが、私はそれを理解できないようです。ここではいくつかのサンプルデータです:複数の列にわたるZスコアを拡大する
import pandas as pd
import numpy as np
np.random.seed(42)
df = pd.DataFrame(np.random.rand(5,5),
columns=list('ABCDE'),
index=pd.date_range('2016-12-31', periods=5))
df.index.name = 'DATE'
df
入力:
所望の出力:
私が持っている行と個々の列などのデータ系列ダウン日付。私が望むのは、拡張Zスコアを計算した同じ形の新しいDataFrameです。私が何をするかわからないのは、df.expanding(2).mean()
メソッドを複数の列に集約させることです。つまり、列Aの拡大平均を取って列Aの値から差し引くのではなく、列AからEの値の拡大平均をとり、その平均値をAの値から差し引きたい。
Excelで考えると、=AVERAGE(B$2:B3)
と=AVERAGE($B$2:$F3)
の違いが私の話です。前者を行うには信じられないほど単純ですが(df.expanding(2).mean()
)、私は私の人生のために後者をする方法を理解できません。
groupby
,stack()
、expanding()
のようなさまざまな組み合わせを試したことがあります。