ราคาหุ้นความถี่สูง
ข้อมูลราคาหุ้นที่มีความถี่สูงสามารถจำลองด้วยกระบวนการ MA(1) ได้เป็นอย่างดี จึงเป็นตัวอย่างการนำโมเดลในบทนี้ไปใช้งานจริง
DataFrame intraday เก็บราคาหุ้น Sprint (สัญลักษณ์ ticker "S") ของวันที่ 1 กันยายน 2017 โดยบันทึกข้อมูลทุก 1 นาที ตลาดหุ้นเปิดทำการ 6.5 ชั่วโมง (390 นาที) ตั้งแต่ 9:30 น. ถึง 16:00 น.
ก่อนจะวิเคราะห์ข้อมูล time series ได้ จะต้องทำความสะอาดข้อมูลเล็กน้อยในแบบฝึกหัดนี้และอีกสองแบบถัดไป เมื่อดูแถวแรก ๆ ของข้อมูลจะพบหลายสิ่ง ได้แก่ ไม่มี header ของคอลัมน์ ข้อมูลไม่ได้ประทับเวลาตั้งแต่ 9:30 ถึง 16:00 แต่ระบุเป็นตัวเลข 0 ถึง 390 และวันที่แรกมีรูปแบบที่แปลกตาคือ "a1504272600" ตัวเลขหลัง "a" คือ Unix time ซึ่งหมายถึงจำนวนวินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 ชุดข้อมูลนี้ใช้วิธีดังกล่าวเพื่อแยกข้อมูล intraday แต่ละวัน
หากตรวจสอบประเภทข้อมูล จะพบว่าคอลัมน์ DATE มี dtype เป็น object ซึ่งหมายความว่าเป็นสตริง จึงต้องแปลงเป็นตัวเลขก่อนที่จะจัดการกับข้อมูลที่หายไปได้
แหล่งที่มาของข้อมูลรายนาทีคือ Google Finance (ดูวิธีดาวน์โหลดข้อมูล ที่นี่)
โมดูล datetime ถูก import ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาด้วย Python
คำแนะนำการฝึกหัด
- เปลี่ยนวันที่แรกให้เป็นศูนย์ด้วย
.iloc[0,0]โดยตรง - เปลี่ยน header ของทั้งสองคอลัมน์เป็น
'DATE'และ'CLOSE'โดยกำหนดค่าintraday.columnsให้เท่ากับลิสต์ที่มีสตริงทั้งสองนั้น - ใช้แอตทริบิวต์
.dtypesของ pandas (ไม่มีวงเล็บ) เพื่อดูประเภทของข้อมูลในแต่ละคอลัมน์ - แปลงคอลัมน์
'DATE'ให้เป็นตัวเลขด้วยฟังก์ชันto_numeric()ของ pandas - กำหนดให้คอลัมน์
'DATE'เป็น index ใหม่ของintradayโดยใช้เมธอด.set_index()ของ pandas โดยส่งสตริง'DATE'เป็นอาร์กิวเมนต์ (ส่งแค่ ชื่อ ของคอลัมน์ ไม่ใช่ทั้งคอลัมน์)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# import datetime module
import datetime
# Change the first date to zero
intraday.___ = 0
# Change the column headers to 'DATE' and 'CLOSE'
intraday.columns = ___
# Examine the data types for each column
print(intraday.dtypes)
# Convert DATE column to numeric
intraday['DATE'] = pd.to_numeric(____)
# Make the `DATE` column the new index
intraday = ____