Pandas 高階・時間視窗與工作階段
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 01
均線與日報酬
困難視窗函數 rollingpx 是 2330 連續 8 個交易日的收盤價(已依日期排序)。請新增三欄:
- ma3:近 3 日收盤平均(含當天),不足 3 天為 NaN,四捨五入到小數 2 位。
- ret_pct:日報酬率%=(今天 ÷ 昨天 − 1) × 100,第一天為 NaN,四捨五入到小數 2 位。
- above_ma:收盤價是否高於 ma3(True/False;ma3 為 NaN 時為 False)。
result 欄位順序為 date、close、ma3、ret_pct、above_ma。
作答方式:資料已在程式裡建好。只改「TODO」那一段,最後的 print 保留不動,輸出才能自動對答案。本題在瀏覽器內以 Pyodide 執行(pandas 2.3)。
作答登入後可作答 - 02
時間視窗異常偵測
困難視窗函數 rolling(時間視窗)metrics 是兩台機器(device)的監控值,ts 間隔不固定。異常規則:某筆 value 大於「同一台機器、該筆之前 30 分鐘內(不含該筆本身)所有讀數平均」的 1.5 倍,就標成異常。前 30 分鐘內沒有任何讀數的不判定。
請建立 result:列出所有異常列,四欄 device、ts(字串,原格式)、value、base(前 30 分鐘平均,四捨五入到小數 2 位)。依 device、ts 排序。
作答方式:資料已在程式裡建好。只改「TODO」那一段,最後的 print 保留不動,輸出才能自動對答案。本題在瀏覽器內以 Pyodide 執行(pandas 2.3)。
作答登入後可作答 - 03
使用者工作階段切分
困難時間序列(sessionization)點擊紀錄 clicks 有 user 與 ts。產品分析要把點擊切成「工作階段(session)」:同一位使用者,和上一次點擊相隔超過 30 分鐘,就算新的 session。
請算出每位使用者的 session 數,以及 session 平均長度(分鐘,=session 內最後一次點擊減第一次點擊;只有一次點擊的 session 長度為 0)。
result 三欄:user、sessions、avg_minutes(四捨五入到小數 1 位),依 user 由小到大。
作答方式:資料已在程式裡建好。只改「TODO」那一段,最後的 print 保留不動,輸出才能自動對答案。本題在瀏覽器內以 Pyodide 執行(pandas 2.3)。
作答登入後可作答 - 04
成交對最近報價
困難時間序列對齊(merge_asof)交易 trades 與報價 quotes 是兩條獨立的資料流(時間都是 HH:MM:SS 字串,同一天)。結算時,每筆成交要對上「同一支股票、成交當下或之前最近的一筆報價」。
請建立 result:每筆成交多一欄 price(對到的報價)與 value(price × qty)。若成交之前該股票還沒有任何報價,price 為 NaN、value 也為 NaN。
欄位順序 trade_id、stock_id、ts、qty、price、value,依 trade_id 由小到大。
作答方式:資料已在程式裡建好。只改「TODO」那一段,最後的 print 保留不動,輸出才能自動對答案。本題在瀏覽器內以 Pyodide 執行(pandas 2.3)。
作答登入後可作答

送件鴿飛出去了