假設我們有一個 DataFrame,它只包含擲硬幣 N 次的結果。
outcome
0 H
1 T
2 H
3 H
4 H
5 T
6 H
對于我們的示例,假設我們想要檢查一個 3 的滑動視窗,并且我們想要計算每個視窗(保留順序)在資料集中出現的次數。
資料集中3的滑動視窗為:
- 高溫高壓
- THH
- HHH
- 高溫高壓
- 高溫高壓
所以價值計數將是:
H-T-H 2
T-H-H 1
H-H-H 1
H-H-T 1
我曾想過連接 3 個滑動行以將視窗創建為字串表示形式,然后在那里進行值計數。這是一種有效的方法嗎?還是有更面向熊貓的方式?
uj5u.com熱心網友回復:
您的方法是有效的,但對于大型陣列可能效率不高,因為字串連接/聚合很昂貴。
你可以使用麻木的在這里受益于您的資料的類似布爾的方面:
from numpy.lib.stride_tricks import sliding_window_view as swv
a = swv(df['outcome'].eq('H'), 3)
vals, counts = np.unique(a, return_counts=True, axis=0)
out = pd.Series(counts, index=np.where(vals, 'H', 'T'))
輸出:
(T, H, H) 1
(H, T, H) 2
(H, H, T) 1
(H, H, H) 1
dtype: int64
uj5u.com熱心網友回復:
嘗試這個 :
(data["outcome"] "-" data["outcome"].shift(1) "-" data["outcome"].shift(2)).dropna().value_counts()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518103.html
標籤:Python熊猫麻木的
上一篇:我正在嘗試從熊貓資料框中洗掉額外的字符,并且我已經創建了一種方法來做到這一點。但是從另一種方法呼叫時它不起作用
下一篇:洗掉numpy陣列中的連續重復項
