0
我想知道是否有一種方法可以計算數據框中每小時數據的累計p_value。例如,如果您有24小時的數據,則會有24個p_value的度量值,但在當前小時之前的所有小時內它們都會累計。在熊貓中每小時計算一次累計p_value
我已經能夠通過按小時對數據進行分組,然後應用我編寫的agg_func來計算所有需要計算p的相關統計信息,從而獲得每個小時的p_value。但是,這種方法不會產生累積結果,只有每個小時的p值。
給定一個帶有列id,ts(如unix時間戳),ab_group,結果的df。我運行下面的代碼來計算小時的p_values。
df['time'] = pd.to_datetime(df.ts, unit='s').values.astype('<m8[h]')
def calc_p(group):
df_old_len = len(group[group.ab_group == 0])
df_new_len = len(group[group.ab_group == 1])
ctr_old = float(len(group[(group.ab_group == 0) & (df.result == 1)]))/ df_old_len
ctr_new = float(len(group[(group.ab_group == 1) & (df.converted == 1)]))/ df_new_len
nobs_old = df_old_len
nobs_new = df_new_len
z_score, p_val, null = z_test.z_test(ctr_old, ctr_new, nobs_old, nobs_new, effect_size=0.001)
return p_val
grouped = df.groupby(by='time').agg(calc_p)
N.B. z_test是我自己的模塊,包含一個z_test的實現。
任何關於如何修改這個累積值的建議非常感謝。
http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples –
我不認爲P值本身,或它的計算的組成部分,很容易轉化爲某種添加劑。 –
@AmiTavory我想出了一個解決方案。最終必須將每個組件設置爲全局變量並在函數內進行更新。 – Grr