เริ่มทำ Visualization กับ Altair

Ploii Tubsamon
3 min readFeb 4, 2021

--

อยากทำ visualization สวยๆ แต่เป็นมือใหม่ ทำไงดีอ่า ?

.. ถ้าไม่ถนัดใช้ BI Tools ในการ visualize ทำยังไงดีหล่ะ

.. หรือเป็นมือ code ขั้นเทพ python ที่เขียนทีไรแก้ error ได้ตล๊อดดด

>> เชิญทางนี้เลยค่า เราจะมาใช้ Altair กัน !!

ไม่ถนัด BI Tools เลย ใช้ Python แทนละกัน

“data visualization, python, altair”

Altair คือ อะไร ?

  • Altair เป็น python library ที่ base on มาจาก vega และ vega lite ซึ่งภายใต้คือ D3.js และ javascript
  • Vega-Lite คือ high-level grammar of interactive graphics อยู่ในรูป JSON format
  • Vega คือ visualization grammar เป็นภาษาที่ใช้ในการออกแบบ visualization โดยอยู่ใน JSON format เช่นเดียวกัน
https://eitanlees.github.io/altair-stack/
https://eitanlees.github.io/altair-stack/
  • มี Github ที่มีตัวอย่าง visualization ในหลายๆแบบ ให้เราเลือกดู แล้วเอาไปปรับใช้กับ data ของเราได้เลย
  • ถ้าดูจากหน้าตาของ visualization เห็นว่าหน้าตาคล้ายกับ tableau เลยนะ นั่นเพราะมีการพัฒนาร่วมกันระหว่าง altair และ tableau นั่นเอง (https://en.wikipedia.org/wiki/Leland_Wilkinson)

… มาเริ่มกันเลยยยย

0. ก่อนเริ่ม ขอกล่าวถึงตัวข้อมูลก่อน

  • ข้อมูลที่นำมานั้นเป็นข้อมูลผู้เสียชีวิต จากเหตุการณ์ภัยพิบัติทางธรรมชาติทั่วโลก ตั้งแต่ปี ค.ศ. 1900 จนถึง ปี ค.ศ. 2017 (https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/disasters.csv)

1. เปิด google colab ขึ้นมา

  • ทำการ import library : altair และ pandas ตามรูปที่ 1
รูปที่ 1 : import library

2. ทำการเรียก file ที่จะใช้ขึ้นมา

  • จาก path ที่เราวางไว้ในเครื่อง หรือง่ายที่สุดคือ เอาไปวางไว้ตรงแถบ file ด้านซ้ายมือของหน้าต่าง google colab ในที่นี้เลือกใช้ไฟล์ชื่อ disasters.csv
  • define ที่อยู่ของไฟล์เรา และสั่ง print เพื่อดูหน้าตาของข้อมูล ตามรูปที่ 2
รูปที่ 2 : define data
  • เมื่อ print(df) หน้าตาของข้อมูลจะเป็นแบบรูปที่ 3
รูปที่ 3 : หน้าตา raw data
  • จะเห็นว่า ‘ปี’ กลายไปเป็นคอลัมภ์ เพราะฉะนั้นเราต้องมาจัดรูปแบบใหม่ โดยการทำ unpivot
  • โดย altair จะมี default row limit อยู่ที่ 5000 แถว เราก็ทำการเขียน code ดักไว้นะว่า ให้ transform ที่ 5000 นะ ไม่งั้นหลังจากนี้ถ้า transform ไปแล้ว ค้างแน่นอน ตามรูปที่ 4
รูปที่ 4 : unpivot table
  • เมื่อ transform data แล้วเรียบร้อย ทำการ print ออกมา หน้าตาก็จะอยู่ใน format ที่สามารถนำไปทำ visualize ต่อได้แล้ว ตามรูปที่ 5
รูปที่ 5 : หน้าตาข้อมูลหลังจาก transform แล้ว

3. ขั้นตอนสร้าง visualization

  • ง่ายๆ โดยลองนึกภาพในหัว ว่าอยากให้ chart แสดงข้อมูลออกมาประมาณไหน จากนั้นเราก็จะไปสืบหา chart ที่เราต้องการ ได้ใน https://altair-viz.github.io/gallery/index.html ซึ่งจะมี chart หลากหลายแบบ
  • โดยเราได้เลือกตัว Binned Scatterplot มาลองทำ ตาม code ดังรูปที่ 6
รูปที่ 6 : code for Binned Scatterplot
  • โดยตัวแปรแต่ละตัว มีความหมายคือ
  • บรรทัดที่ 5 : opacity เป็นเหมือน transparent ถ้าค่าน้อยเราก็จะแทบมองไม่เห็นวงกลม
  • บรรทัดที่ 7: strokeWidth คือ ความหนาของเส้นรอบวงของวงกลม
  • บรรทัดที่ 12 : range [0,6000] คือ ช่วงของจำนวนข้อมูลที่เราแสดงเป็น legend
  • บรรทัดที่ 17,18 : เป็นความกว้าง และ ความสูงของ chart ปรับได้ตามความเหมาะสมของเรา

4. Visualization Chart ออกมาแล้ว

  • มีหลายแบบเลย เพราะเราทำการปรับ width, height
W1000 H500
W1000 H1500
  • ก็จะเห็นว่า แล้วแต่ความพอใจในการนำเสนอข้อมูล ว่าอยากได้เป็นแบบไหน

5. มาสรุปข้อมูลกันหน่อย

  • หลังจากทำ visualize แล้ว สิ่งที่เราต้องการจริงๆนั่นคือ การแปลความหมายจากข้อมูล ว่าข้อมูลต้องการสื่ออะไรกับเรา
  • หรือหากเราเป็นคนทำข้อมูล ก็ต้องเป็นข้อมูลที่ ..เมื่อทำออกมาแล้วต้องกระแทกตาคนดูได้ในทันที
  • จาก Binned Scatterplot ที่เราทำขึ้นมานั้น พบว่า ประการแรก คือ ผู้เสียชีวิตจากภัยพิบัติทางธรรมชาติมีจำนวนลดลงในทุกๆปี ประการที่ 2 คือ ช่วงหลังปี 200 ยังคงมีผู้เสียชีวิตจากเหตุการณ์แผ่นดินไหว แต่ในขณะที่ภัยพิบัติอื่นๆ แทบไม่พบผู้เสียชีวิต

เห็นไหมคะว่า .. ไม่เพียงมีข้อมูลที่ดี การทำ visualization ที่ดี ก็เป็นสิ่งที่ทำให้เรามองเห็นข้อความที่ข้อมูลจะสื่อมาถึงเราได้ โดยแค่มองกวาดตา เราก็มองเห็นใจความสำคัญนั้นแล้ว !!

ไว้เจอกันใหม่เรื่องถัดไปน้าาาา

ทั้งนี้ขอขอบคุณ …

ความรู้ไม่มีวันสิ้นสุด เรียนไปด้วยกันนะคะ

Data P (Tubsamon Dusitsopittawong)

--

--

Ploii Tubsamon
Ploii Tubsamon

Written by Ploii Tubsamon

Data Analyst. Microsoft Certified Power BI Data Analyst Associate.

No responses yet