เราได้ยินข่าว Bitcoin บ่อยมากเลยนะครับช่วงนี้ 555 ประมาณ 2–3 วันก่อนเราได้ยินข่าวอินเดียประกาศแบน Bitcoin อย่างเป็นทางการจนราคาดิ่งลงมาต่ำกว่าหมื่นดอลฯ แต่ซักพัก Bitcoin ก็ดีดกลับขึ้นมาอีก ก็น่าสนใจนะครับว่าวงการ Cryptocurrency จะเป็นยังไงต่อ

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

TL;DR ยาวไปไม่อ่าน

จะไปเอาข้อมูลจากไหนมาพล็อต?

นี่เป็นคำถามที่น่ากลัวที่สุดครับ 5555 ในการทำงานอะไรๆที่เกี่ยวกับ Data Science นี่ การจะไปหาข้อมูล การนำข้อมูลมาทำความสะอาดเป็นอะไรที่ยากที่สุดแล้วล่ะครับ แต่ว่าโชคดีที่เผอิญว่าผมไปเจอเว็บไซต์เว็บนึง ชื่อ data.world

โลโก้ของ data.world

data.world เป็นคล้ายๆกับ Social Media สำหรับ Data Scientist ให้มาโพสต์ข้อมูล Datasets (ทั้งที่ทำความสะอาดแล้ว และเพียวๆ) แชร์ให้คนอื่นครับ วิธีการดาวน์โหลดก็ง่ายๆแค่เซิร์ชหาว่าอยากได้อะไร แล้วก็โหลดมาใช้ได้เลยครับ

ผมไปเอาข้อมูลชุดนี้มา https://data.world/jajenkins/bitcoin-usdhistoricalprice เป็นข้อมูล ของราคา Bitcoin เทียบกับเงินดอลฯ ช่วงปี 2010–2016 ของคุณ jajenkins ครับ datasets ตัวนี้มีลิขสิทธ์เป็น Public Domain เลยเอามาใช้ได้ฟรีๆ

โหลดข้อมูล CSV เข้ามาใน Python

เริ่มจากข้อมูล Datasets ที่เราได้มามักจะเป็นตารางครับ

วิธีกดเข้าไปดูว่า datasets มีตารางคอลัมน์อะไรบ้างก็กดเข้าไปที่ไฟล์เลยครับ ตัวที่เราโหลดมาก็จะมี date,24h_average,ask,bid,last total_volume แต่ที่เราต้องการก็มีแค่ 24h_average ตัวเดียว เพราะมันคือราคาเฉลี่ยของทั้งวันครับ

การอ่านไฟล์ csv จำเป็นต้องไป import ตัวโมดูลที่ใช้อ่านชื่อ csv มาก่อน(ตัวนี้เป็น Built-in) จากนั้นก็เปิดอ่านเหมือนไฟล์ทั่วไปครับ เราจะ Append ช่องที่ 2 ของแต่ลแถว (Index ที่ 1 ซึ่งก็คือราคาเฉลี่ยทั้งวัน) เข้าไปที่ List ชื่อว่า Value ส่วน Date เราจะเป็นแกน X เฉยๆครับ ไว้อ้างอิงตั้งแต่วันแรกที่มีข้อมูลกับวันสุดท้ายที่มีข้อมูล

เนื่องจากข้อมูลที่เราได้มาเรียงจากวันล่าสุดย้อนกลับไปเรื่อยๆ ผมเลยปรับตัว Date ใหม่ โดยใส่วันที่เป็นวันสุดท้ายแล้วลบ 1 ไปเรื่อยๆทุกแถวครับ (ในวันสุดท้ายก็คือแถวสุดท้ายก็จะเป็น 1 พอดี)

ลองเอามาพล็อตดู

บรรทัดที่ 16–18 ของโค้ดข้างบนเป็นการพล็อตกราฟเฉยๆครับ เราจะพล็อต date ที่แกน x แล้วก็ value ที่แกน y พอรันปุ๊ปก็จะได้ตามภาพนี้ครับ

จาก https://www.buybitcoinworldwide.com/price/

เทียบกับกราฟที่เว็บอื่นบันทึกไว้ครับ ทีนี้จะได้รู้ว่าที่เราเขียนมาถูก + datasets ที่ได้มาไม่ได้โดนหลอก 555

สำหรับวันนี้ก็มีแค่นี้ครับ :DD


Medium ที่ 5
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ