สำหรับการดึงข้อมูลย้อนหลังรายปี เช่น ปี 2562 (ค.ศ. 2019)



 สำหรับการดึงข้อมูลย้อนหลังรายปี เช่น ปี 2562 (ค.ศ. 2019) 

คุณต้องระบุวันที่เริ่มต้น (`start`) และวันที่สิ้นสุด (`end`) ในรูปแบบ ค.ศ. (YYYY-MM-DD) 

### วิธีการคำนวณปี

ปี พ.ศ. 2562 - 543 = ปี ค.ศ. 2019

### โค้ดสำหรับดึงราคาหุ้นปี 2562

คุณสามารถใช้ฟังก์ชัน `.history()` และกำหนดช่วงเวลาได้ดังนี้:

```python

import yfinance as yf

# 1. กำหนดชื่อหุ้น

ticker_symbol = "PTT.BK"

stock = yf.Ticker(ticker_symbol)


# 2. ดึงข้อมูลย้อนหลังระบุช่วงวันที่ (ปี 2562 คือ 2019)

# start: วันแรกที่ต้องการ / end: วันถัดไปจากวันสุดท้ายที่ต้องการ

df_2019 = stock.history(start="2019-01-01", end="2020-01-01")

Format ของวันที่: ต้องเป็น `"ปี-เดือน-วัน"` (เช่น `"2019-12-31"`) เท่านั้น

พารามิเตอร์ `end`: ใน Python การระบุวันสิ้นสุด มักจะไม่รวมวันนั้น (Exclusive) ดังนั้นถ้าต้องการข้อมูลถึงสิ้นปี 2019 ควรตั้ง `end="2020-01-01"`

ข้อมูลที่ได้: จะมาเป็นรูปแบบ DataFrame (ตาราง) ซึ่งประกอบด้วย Open, High, Low, Close และ Volume ของทุกวันที่ตลาดเปิดในปีนั้น




# 3. แสดงผลข้อมูล

print(f"--- ข้อมูลหุ้น {ticker_symbol} ปี 2562 ---")

print(df_2019.head()) # แสดง 5 แถวแรกของปี

Library ที่ชื่อว่า Pandas ในภาษา Python

ค่า Default ของฟังก์ชัน: ฟังก์ชัน .head() ถูกออกแบบมาให้แสดงผล "5 แถวแรก" ของ DataFrame

ความหมายของคำสั่ง: head แปลว่า "ส่วนหัว" ซึ่งในทางโปรแกรมมิ่งคือการขอดูตัวอย่างข้อมูลเริ่มต้น 

เพื่อเช็คว่าข้อมูลโหลดมาถูกต้องไหม หรือชื่อ Column เป็นอย่างไร โดยไม่ทำให้หน้าจอรกจนเกินไป

หากต้องการจำนวนแถวที่ต่างออกไป

คุณสามารถใส่ตัวเลขลงไปในวงเล็บเพื่อกำหนดจำนวนแถวที่ต้องการได้เลยครับ เช่น:

df_2019.head(10) -> แสดง 10 แถวแรก

df_2019.head(1) -> แสดงแค่แถวแรกแถวเดียว

df_2019.tail() -> (แถม) แสดง 5 แถว สุดท้าย ของข้อมูลครับ



print(f"\nจำนวนวันที่มีการซื้อขายในปีนั้น: {len(df_2019)} วัน")

นับจำนวนแถวทั้งหมดในตัวแปร df_2019 แล้วแสดงออกมาว่าปีนั้นเทรดไปกี่วัน

`df_2019['Close'].max()` : ราคาสูงสุดของปี 2562

`df_2019['Close'].mean()` : ราคาเฉลี่ยของทั้งปี 2562

บันทึกเป็นไฟล์ Excel หรือ CSV (เลือกใช้อย่างใดอย่างหนึ่ง)

df_2019.to_excel("PTT_2019.xlsx")

df_2019.to_csv("PTT_2019.csv")


-------------------------------------------------------------

import yfinance as yf


# 1. กำหนดชื่อหุ้น

ticker_symbol = "PTT.BK"

stock = yf.Ticker(ticker_symbol)


# 2. ดึงข้อมูลย้อนหลังระบุช่วงวันที่ (ปี 2562 คือ 2019)

# start: วันแรกที่ต้องการ / end: วันถัดไปจากวันสุดท้ายที่ต้องการ

df_2019 = stock.history(start="2019-01-01", end="2020-01-01")


# 3. แสดงผลข้อมูล

print(f"--- ข้อมูลหุ้น {ticker_symbol} ปี 2562 ---")

print(df_2019.head()) # แสดง 5 แถวแรกของปี

print(f"\nจำนวนวันที่มีการซื้อขายในปีนั้น: {len(df_2019)} วัน")


# 4. บันทึกเป็นไฟล์ Excel หรือ CSV (เลือกใช้อย่างใดอย่างหนึ่ง)

# บันทึกข้อมูลสรุปปี 2562 ลงใน Text File

file_name = "PTT_Report_2019.txt"

with open("PTT_Report_2019.txt", "w", encoding="utf-8") as f:

    f.write("--- รายงานราคาหุ้น PTT ปี 2562 ---\n")

    f.write(f"จำนวนวันทำการ: {len(df_2019)} วัน\n")

    f.write(f"ราคาสูงสุดของปี: {df_2019['High'].max():.2f}\n")

    f.write(f"ราคาต่ำสุดของปี: {df_2019['Low'].min():.2f}\n")

    f.write("-" * 50 + "\n")

    f.write(df_2019.to_string()) # แปลงตารางทั้งหมดเป็นข้อความ


print("บันทึกไฟล์ PTT_Report_2019.txt เรียบร้อยแล้ว!")

# CSV

file_name = "PTT_2019_Data.csv"


# CSV ใช้คำสั่ง open เพื่อเขียนข้อมูลส่วนหัวลงไปก่อน

with open(file_name, 'w', encoding='utf-8') as f:

    # เขียน 2 บรรทัดที่ต้องการ

    f.write("--- รายงานราคาหุ้น PTT ปี 2562 ---\n")

    f.write(f"จำนวนวันทำการ: {len(df_2019)} วัน\n")    

    f.write(f"ราคาสูงสุดของปี: {df_2019['High'].max():.2f}\n")

    f.write(f"ราคาต่ำสุดของปี: {df_2019['Low'].min():.2f}\n")   

    df_2019.to_csv("PTT_2019_Data.csv")


print("บันทึกไฟล์ PTT_2019_Data.csv เรียบร้อยแล้ว!")





ความคิดเห็น