Python การใช้ pandas โหลดข้อมูลจากไฟล์ CSV
python ขึ้นชื่อว่าเป็นภาษาหนึ่งที่ใช้ทำการวิเคราะห์ข้อมูลได้ดี ซึ่งผมก็คิดว่ามันคงจะจริง โดยผมลองใช้ library มีอยู่แล้วมาลองโหลดข้อมูลจาก CSV แล้วทำการวิเคราะห์ข้อมูลเรียกว่าทำได้ง่ายมากเลยไม่ซับซ้อนอะไรมากมาย แต่ขั้นแรกก่อนจะเริ่มทำการโหลดไฟล์ csv ไปวิเคราะห์ข้อมูลนั้นก็ต้องทำการติดตั้ง library ก่อนนั้นคือเจ้า Pandas กับ Numpy โดย Pandas จะเป็นตัวโหลดข้อมูลและเซฟข้อมูลลงไฟล์ โดยข้อมูลที่มันโหลดมาจะกลายเป็น Data Frame หรือกรอบข้อมูลประมาณข้อมูลที่เรียงกันเป็นตารางที่มีได้หลายมิตินั้นเอง ส่วนเจ้า Numpy นั้นจะเป็น Library ในการคำนวณทางคณิตศาสตร์ โดยผมใช้ OS Windows เลยทำลง package รวมที่ชื่อว่า Anaconda ซึ่งจะมี ide มาให้พร้อมเลยชื่อว่า spyder เอาละที่นี้มาถึงไฟล์ csv ที่จะโหลดข้อมูลกันบ้าง ผมได้เอาไฟล์ csv ราคาหุ้นจาก website siamchart โดยมีหน้าตาข้อมูลในไฟล์ดังรูปด้านล่างครับ
ที่นี้ก็มาเริ่มเขียนโค้ดกันโดยมีโค้ดตามด้านล่างเลยครับ
[sourcecode language=”python”]
import pandas as pd
import numpy as np
stock_file = ‘D:/set-history_EOD_2017-07-04.csv’
df = pd.read_csv(stock_file,sep=’,’)
print(df.head(10))
stock_finder = ‘CPALL’
stock = df.loc[df[‘
print(stock)
avg_volumn = df[‘
max_close_price = df[‘
print(“average volumn stock “,avg_volumn)
print(“max close price”, max_close_price)
[/sourcecode]
เมื่อลองรันดูจะได้ผลลัพธ์ดังรูป
สังเกตโค้ด เราทำการ import pandas มาแล้ว as ให้ชื่อมันสั้นลงเป็น pd ในการโหลดไฟล์ csv เป็น dataframe นั้นใช้แค่คำสั่ง read_csv(ชื่อไฟล์, ตัวคั่นแต่ละ column ในไฟล์ csv) แค่นี้เอง ลองนึกดูถ้าเป็นในภาษาอื่นคงวนลูปกันเหนื่อยกว่าจะได้ข้อมูลใน csv ที่สามารถนำไปใช้งานได้ อีกอย่างเจ้า pandas นี้ยัง default ให้บรรทัดแรกของ csv เป็น header ให้อีกด้วย เมื่อลอง print ข้อมูล 10 แถวแรกโดยใช้คำสั่ง print(df.head(10)) ก็จะได้ผลลัพธ์ในรูปที่ตัวอักษร A จะเห็นว่าเจ้า dataframe นั้นมีคำสั่ง head, tail เพื่อเลือกดูข้อมูลหัวท้ายตามจำนวนที่เราต้องการเพื่อสะดวกในการดูข้อมูลในกรณีที่ dataframe มีข้อมูลจำนวนมากๆครับ
ต่อมา dataframe ที่ได้จาก csv นั้นยังสามารถใช้ filter เพื่อกรองเอาข้อมูล โดยในโค้ดจะค้นหา column <TICKER> มีค่าเท่ากับ CPALL โดยใช้คำสั่ง stock = df.loc[df[‘<TICKER>’] == stock_finder] ซึ่งก็จะได้ Dataframe อันใหม่ที่ชื่อว่า stock เมื่อลอง print ออกมาดูก็ได้ผลลัพธ์ตรงอักษร B
สุดท้ายจะเป็นการใช้คำสั่งพื้นฐานของ numpy โดยทำการหาค่า average ของ column <VOL> และหาค่ามากสุดของ column <CLOSE> โดยใช้คำสั่งแค่ datafram[‘ชื่อ column’].max, datafram[‘ชื่อ column’].mean() นอกจากนี้ยังมีคำสั่งอื่นอีกมากมาย จากโค้ดก็มีคำสั่งคือ
avg_volumn = df[‘<VOL>’].mean()
max_close_price = df[‘<CLOSE>’].max()
ภายใน [‘ ‘] จะเป็นชื่อ column นะครับแต่เนื่องด้วยไฟล์ตัวอย่างชื่อ column ดันมีเครื่องหมาย <> มาด้วยถ้าไฟล์อื่นชื่อ column ให้สังเกตบรรทัดแรกได้เลยครับ ผมก็ขอจบบทความนี้ไว้แค่นี้ครับ สามารถ Download Soucecode ตาม link ด้านล่างเลยครับ