使用 merge_asof() 研究股票
你手上有一個股價資訊來源,嘗試每 5 分鐘記錄一次價格。不過因為網路延遲,實際記錄時間大約是每 5 分鐘。你擷取了三家銀行的價格紀錄:JP Morgan(JPM)、Wells Fargo(WFC)以及 Bank Of America(BAC)。你想比較另外兩家銀行的價格變化與 JP Morgan 的差異。因此,你需要把這三份紀錄合併成一個資料表。接著,你會使用 pandas 的 .diff() 方法計算隨時間的價格變化。最後,把價格變化繪圖,以便檢視你的分析。
三個紀錄檔已為你載入為 jpm、wells、bac 三個資料表。
本練習屬於課程
使用 pandas 進行資料表連接
練習說明
- 使用
merge_asof(),以jpm(左表)與wells在date_time欄位上進行合併,將時間最「接近」的列配對,並設定suffixes=('', '_wells')。將結果存為jpm_wells。 - 使用
merge_asof(),以jpm_wells(左表)與bac在date_time欄位上進行合併,將時間最接近的列配對,並設定suffixes=('_jpm', '_bac')。將結果存為jpm_wells_bac。 - 從
price_diffs繪製close_jpm、close_wells、close_bac的收盤價。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Use merge_asof() to merge jpm and wells
jpm_wells = ____
# Use merge_asof() to merge jpm_wells and bac
jpm_wells_bac = ____
# Compute price diff
price_diffs = jpm_wells_bac.diff()
# Plot the price diff of the close of jpm, wells and bac only
price_diffs.plot(y=[____, ____, ____])
plt.show()