สำหรับการดึงข้อมูลย้อนหลังรายปี เช่น ปี 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 เรียบร้อยแล้ว!")

ความคิดเห็น
แสดงความคิดเห็น