ใช้ merge_asof() วิเคราะห์ราคาหุ้น
สมมติว่าคุณมีข้อมูลราคาหุ้นที่บันทึกทุก 5 นาที แต่เนื่องจากความล่าช้าของเครือข่าย เวลาที่บันทึกจริงจึงไม่ตรงเป๊ะทุกครั้ง คุณดึงข้อมูลราคาหุ้นของธนาคาร 3 แห่ง ได้แก่ JP Morgan (JPM), Wells Fargo (WFC) และ Bank Of America (BAC) โดยต้องการเปรียบเทียบการเปลี่ยนแปลงราคาของอีกสองธนาคารกับ JP Morgan จึงต้องรวม log ทั้ง 3 ไฟล์เข้าด้วยกันเป็นตารางเดียว จากนั้นใช้เมธอด .diff() ของ pandas เพื่อคำนวณการเปลี่ยนแปลงราคาตามเวลา แล้วพล็อตกราฟเพื่อตรวจสอบผลการวิเคราะห์
ไฟล์ log ทั้งสามถูกโหลดมาให้แล้วในชื่อตาราง 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 - พล็อตราคาปิดของ
close_jpm,close_wellsและclose_bacจากprice_diffs
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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()