การ Merge Time Series ที่มีวันที่ต่างกัน
ตลาดหุ้นและตลาดพันธบัตรในสหรัฐฯ ปิดทำการในวันที่แตกต่างกัน ตัวอย่างเช่น แม้ว่าตลาดพันธบัตรจะปิดทำการในวัน Columbus Day (ประมาณ 12 ต.ค.) และวัน Veterans Day (ประมาณ 11 พ.ย.) แต่ตลาดหุ้นยังคงเปิดทำการตามปกติในวันเหล่านั้น วิธีหนึ่งในการดูว่าตลาดหุ้นเปิดแต่ตลาดพันธบัตรปิดในวันใดบ้าง คือการแปลง index ของวันที่ทั้งสองชุดให้เป็น set แล้วหาผลต่างระหว่างกัน
เมธอด .join() ของ pandas เป็นเครื่องมือที่ใช้งานง่ายสำหรับการ merge DataFrame ของหุ้นและพันธบัตรเฉพาะวันที่ตลาดทั้งสองเปิดทำการพร้อมกัน
ราคาหุ้นและอัตราผลตอบแทนพันธบัตรรัฐบาลสหรัฐฯ อายุ 10 ปี ซึ่งดาวน์โหลดมาจาก FRED ถูกโหลดไว้แล้วใน DataFrame stocks และ bonds
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาด้วย Python
คำแนะนำการฝึกหัด
- แปลงวันที่ใน
stocks.indexและbonds.indexให้เป็น set - หาผลต่างของ set หุ้นลบด้วย set พันธบัตร เพื่อดูว่าวันใดที่ตลาดหุ้นมีข้อมูลแต่ตลาดพันธบัตรไม่มี
- Merge สอง DataFrame ให้เป็น DataFrame ใหม่ชื่อ
stocks_and_bondsโดยใช้เมธอด.join()ซึ่งมีรูปแบบการใช้งานคือdf1.join(df2)- เพื่อให้ได้เฉพาะวันที่ที่ตรงกันทั้งสองชุด ให้ใช้อาร์กิวเมนต์
how='inner'
- เพื่อให้ได้เฉพาะวันที่ที่ตรงกันทั้งสองชุด ให้ใช้อาร์กิวเมนต์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import pandas
import pandas as pd
# Convert the stock index and bond index into sets
set_stock_dates = set(stocks.index)
set_bond_dates = set(___)
# Take the difference between the sets and print
print(set_stock_dates - ___)
# Merge stocks and bonds DataFrames using join()
stocks_and_bonds = ___