วิธีโหลดข้อมูลหุ้นจาก Siamchart มาใช้งานใน Python

วันนี้ผมมีวิธีการโหลดข้อมูลจาก website  “SiamChart” (SiamChart.com/stock/)  มานำเสนอให้กับผู้ใช้ Python ได้นำไปใช้กันครับ

Download file ข้อมูล

เริ่มกันที่การเข้าไปโหลดไฟล์ที่ website ก่อนครับ Download ไฟล์ข้อมูลที่ต้องการ

01

จากนั้นไปแตกไฟล์ไว้ที่เดียวกัน03

เขียน Python  จัดการข้อมูล

1. Import libraries ที่จำเป็น

03

2. เขียนโปรแกรมเพื่อโหลดไฟล์ทุกไฟล์จาก csv เนื่องจากมีจำนวนไฟล์หลักหมื่นไฟล์จึงเขียนโปรแกรมวนลูปเพื่ออ่านมันทั้งหมด โดยในที่นี้ในตัวแปร “path” อ้างถึงตำแหน่งข้อข้อมูลในเครื่อง ให้ทุกคนเปลี่ยนเป็น path ของตัวเองที่แตกไฟล์ไว้

ตัวแปร allFiles คือ path ของไฟล์ csv ทั้งหมด จากนั้นเรานำมาวนลูปและนำมาเก็บต่อกัน pd.concat ไว้ในตัวแปร frame ที่เราได้ประกาศไว้เป็น dataframe ไว้ก่อนแล้วด้านบนครับ

04..png

3. เช็คข้อมูลหลังที่โหลดมาเสร็จ

05.png

4. ปรับเปลี่ยนชื่อ Column

ปัญหาคือข้อมูลถูกเก็บในรูปแบบข้อมูลของหุ้นทั้งตลาดในวันนั้น ๆ มาเก็บต่อ ๆ กัน โดยมีขนาดข้อมูลถึง 3,467,130 rows × 7 columns ณวันที่ 25 เมษา 2560  ถ้าเป็นแบบนี้เราก็ต้องเขียนโปรแกรมเพื่อจัดรูปแบบก่อนก่อนอื่น จะเห็นว่าชื่อ Columns มันยังแปลกๆ เรามาเปลี่ยนชื่อ Columns ก่อนด้วยคำสั่ง

06.png

5. ทดลองดึงข้อมูลหุ้นตัวที่ต้องการ

คราวนี้ชื่อ  Columns เป็นแบบที่เราคุ้นเคยแล้ว จากนี้เราจะมาเขียนโปรแกรมเพื่อดึงข้อมูลหุ้นรายตัวออกมาจากตัวแปร frame

08.png

6. เรียงลำดับข้อมูล

จากคำสั่งด้านบนนี้ เราทำการดึงข้อมูลจาก ตัวแปร frame ที่มี Columns [‘Symbol’] เท่ากับตัวแปรชื่อหุ้นที่เราต้องการ โดยละลองดึง PTT จะเห็นว่า Date มันไม่เรียงวันกันเราจึงต้องใช้คำสั่งในการเรียงดังนี้

09.png

คำสั่งด้านบน เป็นคำสั่งเรียงค่าข้อมูลด้วยคำสั่ง sort_values ด้วย Columns ที่ชื่อ Date ผลที่ได้คือข้อมูลเรียงกันตาม Date แล้ว จากนั้นเราจะแปลงมันเป็น index

7. เซ็ตค่า date เป็น index ของข้อมูล

10.png

คำสั่งด้านบนคือ การแปลง Columns [‘Date’] เป็นรูปแบบ timestamp และกำหนดให้มันเป็น index ของ dataframe ผลที่ได้คือ Columns[‘Date’] หายไปและกลายเป็น Index ไปแล้ว เราจะเห็นว่าในตอนนี้ Columns [‘Symbol’] มันไม่จำเป็นอีกแล้วเราจึงลบออกด้วยคำสั่ง

8. ลบคอลัมน์ Symbol ออก

11.png

เสร็จแล้วครับทุกท่าน เมื่อทำทุกขั้นตอนที่ว่ามาข้างต้น เราก็จะได้ข้อมูลที่ได้สมบูรณ์ออกมาใช้งานกันแล้วครับ

แต่ถ้าทำแบบนี้ทุกครั้งมันคงไม่สะดวก ผมจึงนำคำสั่งทั้งหมดมาสร้างเป็นฟังก์ชั่นชื่อ getStock เพื่อให้สามารถเรียกใช้งานได้ง่ายๆ กันนะครับ

07

จะเห็นว่าไม่มีอะไรเพิ่มเติมเลยนอกจาก เพิ่มตัวแปร name ให้เป็น input ของ ฟังก์ชั่น getStock และเพิ่ม การ return stock ออกมาจากฟังก์ชั่น getStock

คราวนี้เมื่อเราจะใช้งานก็ทำได้ง่ายๆเพียงแค่กำหนดตัวแปรมารับค่าข้อมูล และ ใส่ชื่อหุ้นที่ต้องการไปในฟังก์ชั่น getStock(‘ชื่อหุ้น’)

12.png

ด้านล่าง คือ Code ทั้งหมดที่ว่ามาข้างต้น ลองเอาไปใช้ดูนะครับ

https://github.com/QuantML/QTML/blob/master/loadData.ipynb

13

ปล. ขอขอบคุณ Siamchart ไว้ ณ ที่นี้ด้วยนะครับ

Advertisements

4 thoughts on “วิธีโหลดข้อมูลหุ้นจาก Siamchart มาใช้งานใน Python

  1. ไม่ทราบมีปัญหากับชื่อ File “COM7” หรือไม่ครับเพราะเป็นคำห้ามใช้ หรือชื่อ File “S & J” ครับ

    Like

  2. เข้าใจผิดครับคิดว่าแยกเป็นไฟล์เก็บครับ

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s