การใช้ .melt() เพื่อเปรียบเทียบประสิทธิภาพของหุ้นและพันธบัตร
เป็นที่รู้กันดีว่าราคาพันธบัตรมีความสัมพันธ์แบบผกผันกับราคาหุ้น ในแบบฝึกหัดสุดท้ายนี้ เราจะทบทวนหัวข้อต่าง ๆ ในบทนี้เพื่อยืนยันความสัมพันธ์ดังกล่าว โดยมีตารางแสดงเปอร์เซ็นต์การเปลี่ยนแปลงของราคาพันธบัตรรัฐบาลสหรัฐอายุ 10 ปีในรูปแบบ wide format ซึ่งแต่ละปีมีคอลัมน์แยกต่างหาก จึงต้องใช้เมธอด .melt() เพื่อปรับรูปร่างตารางนี้
นอกจากนี้ จะใช้เมธอด .query() เพื่อกรองข้อมูลที่ไม่จำเป็นออก แล้วรวมตารางนี้กับตารางเปอร์เซ็นต์การเปลี่ยนแปลงของดัชนีหุ้น Dow Jones Industrial จากนั้นจึงพล็อตข้อมูล
ตาราง ten_yr และ dji ถูกโหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การรวมข้อมูลด้วย pandas
คำแนะนำการฝึกหัด
- ใช้
.melt()กับten_yrเพื่อ unpivot ทุกคอลัมน์ยกเว้นคอลัมน์metricโดยตั้งค่าvar_name='date'และvalue_name='close'แล้วบันทึกผลลัพธ์ไว้ในตัวแปรbond_perc - ใช้เมธอด
.query()เลือกเฉพาะแถวที่metricมีค่าเป็นcloseแล้วบันทึกไว้ในตัวแปรbond_perc_close - ใช้
merge_ordered()เพื่อรวมdji(ตารางซ้าย) กับbond_perc_closeโดยใช้คอลัมน์dateแบบ inner join และกำหนดsuffixesเป็น('_dow', '_bond')แล้วบันทึกผลลัพธ์ไว้ในตัวแปรdow_bond - ใช้
dow_bondพล็อตเฉพาะค่าของ Dow และพันธบัตร
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Use melt on ten_yr, unpivot everything besides the metric column
bond_perc = ____
# Use query on bond_perc to select only the rows where metric=close
bond_perc_close = ____
# Merge (ordered) dji and bond_perc_close on date with an inner join
dow_bond = ____
# Plot only the close_dow and close_bond columns
dow_bond.plot(____, x='date', rot=90)
plt.show()