Power BI กับการทำนายอัตราการเปลี่ยนแปลงของประชากรไทย พร้อม Animated Bar Chart

Ploii Tubsamon
4 min readJan 11, 2021

อยากได้ chart แบบนี้หรือป่าว .. แล้วรู้หรือไม่ นี่คือ forecast ที่ทำโดยใช้ Power BI นะ

รูปที่ 0 : Forecast Line Chart
  • สวัสดีทุกท่านที่ได้เข้ามาอ่าน blog ของเรานะคะ ความตั้งใจที่เขียน blog เพื่อต้องการนำข้อมูล (data) ทุกอย่างที่มี มาทำการวิเคราะห์เน้นการแสดงผลเป็นภาพ (หรือการทำ Data Visualization)
  • โดยนำ visualization tools ที่กำลังเป็นที่นิยมมาใช้งาน เช่น Power BI , Tableau, Excel เป็นต้น
  • มาเรียนและทำความเข้าใจไปด้วยกันนะคะ

“Simply, Power BI, Forecast, Data Visualization, Time Series, Animation”

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

1.Download Raw Data :

  • นำข้อมูลการเกิด การตาย จำนวนประชากรทั้งหมดของประเทศไทย ตั้งแต่ปี พ.ศ. 2536 ถึง พ.ศ. 2562
  • ที่มาจาก : สำนักบริหารการทะเบียน กรมการปกครอง กระทรวงมหาดไทย หรือดาวน์โหลดได้จากเว็บไซต์ http://social.nesdc.go.th/SocialStat/StatDefault_Final.aspx
  • หลังจากดาวน์โหลดมาแล้ว ข้อมูลที่ได้มา จะมีหน้าตาแบบรูปที่ 1
รูปที่ 1 : ข้อมูลดิบที่ได้จากเว็บไซต์ ที่ทำการดาวน์โหลดออกมาในแบบตาราง excel
  • จะเห็นว่าข้อมูลที่มีนั้น ยังต้องทำการ clean data อีกสักนิดหน่อย เนื่องจากมีทั้ง merge มีช่องว่างใน cell ที่ไม่ได้ใช้งาน เราจะไปทำการ clean กันใน Power BI กันดีกว่า

2.Import Data :

  • นำตาราง excel เข้า Power BI กันเลย : เปิดโปรแกรมขึ้นมา จะเจอหน้าจอสีเหลืองแบบรูปที่ 2 บางคนอาจคลิก Get data ที่ด้านซ้ายมือ หรือถ้าเผลอกดปิดมุมขวาบนไป เราก็สามารถ Get data จากที่อื่นได้
รูปที่ 2 : หน้าจอแรกหลังจากเปิดโปรแปรม
  • วิธี Get Data อีกแบบทำได้โดย ไปที่ tab Home > Get data > Excel จากนั้นจะเจอหน้าจอแบบรูปที่ 3 ให้เรากดเลือก sheet ที่ต้องการใช้ ในที่นี้แสดงอยู่ 2 ชีท (จำนวนชีท จะตรงกับในไฟล์ excel) แต่เราจะใช้แค่ชีทที่ชื่อ CrossTab_2R1C เพียงชีทเดียว จากนั้นที่มุมขวาล่างให้กดที่ Transform Data เพื่อทำการ clean ข้อมูลก่อนนำไปใช้
รูปที่ 3 : การนำข้อมูลเข้า Power BI

3.Clean Data : เป็นการจัดข้อมูลให้อยู่ในรูปแบบที่เราต้องการ โดยการ

  • Remove Columns : นำ column ที่ไม่ต้องการตัดทิ้งไป
  • Remove Rows : นำ row ที่ไม่ต้องการตัดทิ้งไป
  • Use First Row as Header : นำข้อมูลใน row แรก มาทำเป็นชื่อแต่ละ column
  • เปลี่ยน Data Type ของ Column ที่เป็นปี พ.ศ. ให้กลายเป็น Date ** อย่าลืมเปลี่ยนเป็น date เพราะการทำ forecast ต้องใช้ข้อมูลที่เป็นช่วงเวลา (time series) ถ้าไม่มีช่วงเวลา ก็จะทำ forecast ไม่ได้ นะจ๊ะ ****
รูปที่ 4 : tab ของ Power Query
  • หลังจากทำการ clean ข้อมูลแล้ว จะได้ออกมาตามรูปที่ 5 จากนั้นให้กดที่ tab home > Close&Apply >แล้วกด Close&Apply เพื่อทำการปิดหน้าต่าง power query และให้ข้อมูลที่ clean แล้ว ไปแสดงที่หน้าหลัก
รูปที่ 5 : หน้าตาข้อมูลหลังจาก clean แล้ว

4. Process Data & Visualize Data

  • จะปรากฏหน้าว่างขึ้นมา ให้ไปคลิกที่ Visualizations > Line Chart
  • เลื่อนลงไปด้านล่างจะเจอ Fields (เป็นรูปสี่เหลี่ยมผืนผ้าซ้อนกัน ที่อยู่ใกล้กับสัญลักษณ์แปรงทาสี) > จะพบ Axis, Legend, Values
  • ให้ลาก ปี ไปใส่ที่ Axis ลาก จำนวน (คน) ไปใส่ที่ Values ตามรูปที่ 6
รูปที่ 7 : Field ต่างๆ
  • หลังจากที่เราลากข้อมูลที่ต้องการ ไปไว้ที่ field ต่างๆแล้ว จะปรากฏ chart ดังรูปที่ 8 แต่จะเห็นว่ามี visualization 2 ตัว คือ line chart (เส้นสีม่วง) และ slicer (เส้นสีแดง)
รูปที่ 8 : line chart และ filter
  • เอ๊ะ แล้ว data ใน line chart มายังไงนะ : เราแค่นำเม้าส์ไปวางที่ line chart จากนั้นคลิก 1 ที ตัวแถบ visualizations ด้านล่าง จะปรากฎรูปแปรงทาสีขึ้นมา จากนั้นเราก็ปรับค่าได้ตามใจเลย ทั้งของเส้นกราฟ ให้กราฟแสดงข้อมูล ขยายตัว data ให้ขนาดตามใจชอบได้ด้วย
  • ส่วนในด้าน slicer มาจาก visualizations ชื่อ slicer (วงไว้ที่เป็นสีแดง) จากนั้นก็นำ Fields ที่่ต้องการให้เป็นตัว filter มาใส่ ในที่นี่เราเลือกให้ รายการ กับ เพศ เป็นตัวกรอง เพราะอยากทราบว่า อัตราการเปลี่ยนแปลงของประชากรในแต่ละเพศเป็นอย่างไร และเปลี่ยนไปในทางไหน

5. Forecasting : ถึงขั้นตอนสำคัญแล้วววว

  • เมื่อเราได้ line chart มาแล้ว ต่อไปเราจะทำการ forecast ข้อมูลกัน มาดูว่า Power BI จะสามารถทำได้ขนาดไหนกันนะ
รูปที่ 9 : แถบ Analytics
  • เริ่มต้นด้วย นำเม้าส์ไปวางกราฟเส้นที่เราสร้างไว้ จากนั้นคลิก 1 ที แถบ Visualizations ก็จะปรากฏรูปแว่นขยาย (มันคือแถบ Analytics) รูปที่ 9
  • เมื่อเลื่อนลงมาด้านล่างจะเจอ forecast
  • ** ลองสังเกตว่า ถ้าทำตามทุกขั้นตอน แล้วยังไม่ปรากฏแถบ forecast ขึ้นมา นั่นแปลว่า ข้อมูลเรามีนั้น ไม่มีช่วงเวลา (date/time) ให้กลับไปเช็คที่ตัว data ที่หน้า Power Query อีกรอบก่อน **
  • ** เพราะข้อมูล time-series มันต้องใช้ข้อมูลที่เป็นช่วงเวลาเสมอ ค่าาาาา

… เรามาใส่ parameter ใน Forecast กันดีกว่า

รูปที่ 10 : parameter ของ forecast
  • Forecast Length คือ period ที่เราต้องการจะทำนาย โดยเราเลือก 6 ปี เพราะข้อมูลย้อนหลังที่มี จะมีการเปลี่ยนแปลงอย่างเห็นได้ชัดในช่วงทุก 6 ปี และปรับหน่วยเป็น Year(s) ตามที่เราต้องการ ถ้าใครต้องการดูเป็นเดือน ก็ปรับเป็นเดือนได้
  • Ignore last หมายถึง เราจะไม่สนใจข้อมูลย้อนหลังเป็นจำนวนเท่าไหร่ ในที่นี้เราก็ใส่ 6 ปี เพื่อต้องการดูว่าผลทำนาย กับ ค่าจริงที่เกิดขึ้น มีความใกล้เคียงกันมากน้อยแค่ไหน
  • Confidence interval ขอบเขตความแม่นยำ ลองสังเกตดูว่าถ้าเราเลือกที่ % มาก ค่าความแม่นยำของการทำนายก็จะยิ่งใกล้เคียงกับค่าจริง ซึ่งเราสามารถปรับตัว visualize ของ confidence interval ได้ด้วย ปรับได้ตามใจเลย
  • ส่วน Seasonality จะเหมาะกับข้อมูลที่มีความถี่มากกว่านี้ เช่น รายเดือน หรือ รายไตรมาส ในที่นี้เราใส่เป็น Auto ไป แต่ถ้าข้อมูลเป็นพวกยอดขายเราสามารถใส่เป็น 3 ก็ได้ เพราะการเปลี่ยนแปลงยอดขายก็จะวัดกันเป็นรายไตรมาสอยู่แล้วโดยทั่วไปจ้าาาา

… แท่น แท๊นนนนน และในที่สุด เราก็ได้ forecast line chart ออกมาแล้ว มันคือเส้นประสีแดง

รูปที่ 11 : Forecast Line Chart
  • จะสังเกตได้ว่า การทำนายค่อนข้างใกล้เคียงกับค่าจริงที่เกิดขึ้นเลยนะ แต่เนื่องด้วยข้อมูลเรามันเป็นปี ที่เป็น period ค่อนข้างกว้าง ทำให้ forecast ที่ออกมาค่อนข้างเหลื่อมๆไปหน่อย แต่ก็มีแนวโน้มที่คล้ายกันอยู่
  • และลอง filter รายการดู จำนวนการเสียชีวิต ก็ตรงอยู่นะ ส่วนการเกิด ถ้าดูจากปีก่อนหน้าย้อนไปเกือบ 15 ปี อัตราการเกิดค่อนข้างคงที่เลยนะ เลยทำให้พอปีหลังๆมา การเกิดลดลง ตัวที่ forecast เลยเพี้ยนไปเลย ทั้งนี้ก็ขึ้นอยู่กับการกระจายตัวของข้อมูลด้วยน้าาา ถ้าต่างกันมากไป อย่างไรก็มีโอกาสทำนายผิดค่อนข้างมากเลยจ้าา

  • ที่นี้ๆ เราก็มีลองปรับนู่นนี่นิดหน่อย ใส่ trend line (เส้นจุดสีม่วง) เพิ่ม ลองให้ forecast 6 ปี ต่อจากนี้ (ถึงปี 2568) (ปรับพวก Forecast Length, Ignore Last ) หน้าตาก็ดูดีอยู่น้า ตามรูปที่ 12 ต้องมาลองลุ้นกันว่าในอีก 5 ปี ข้อมูลจะใกล้เคียงที่เรา forecast มากน้อยแค่ไหน
รูปที่ 12 : Forecast จำนวนประชากรในอีก 6 ปี (2563–2568)

— เห็นไหมว่า การ Forecast โดยใช้ Power BI ไม่ยากอย่างที่คิดเลยนะ

เรามีของแถมมมมมม …

แถม 1 : อยากทำ zoom slide แบบรูปที่ 13 ทำยังไงอ่ะ

รูปที่ 13: ภาพจากการทำ zoom slide format
  • คลิกที่ตัว chart > ไปที่ Visualization มองลงล่าง เจอรูปแปรงทาสี > เลื่อนไปหา parameter ชื่อ Zoom Slider > เปลี่ยน Off เป็น ON .. เสร็จแล้วววว จบปิ๊ง ง่ายยยแต่สวยนะ

แถม 2 : อยากทำ Animation แบบรูปที่ 14 ด้วยทำยังไงอ่ะ

  • ไปที่ Visualization > จะเจอ … (มันคือ Get more Visuals) กดเข้าไปเลย > แล้ว search ว่า Animated Bar Chart Race > เราก็จะได้ Visual ตัวใหม่มา
  • จากนั้นก็ field ข้อมูลตามที่ต้องการได้เลยยยย ง่ายมากๆอีกเช่นกัน
รูปที่ 14 : Animated Bar Chart
  • สำหรับเรา เราชอบ visualization ตัวนี้นะ มันทำให้มองเห็นการเปลี่ยนแปลงในแต่ละปีได้เลย ซึ่งจะเห็นว่าเริ่มต้นปี 2536 (1993) จำนวนการเกิดของผู้ชายสูงกว่าผู้หญิงเกือบ 50,000 คนนะ แต่พอมาปีหลัง จำนวนการเกิดของผู้หญิงก็เพิ่มมาเกือบเท่าผู้ชายเลย เหมาะกับคนที่ต้องการมองว่า ตัวแปรสำคัญที่ส่งผลต่อข้อมูลมีการเปลี่ยนแปลงยังไงบ้าง ในช่วงเวลาไหน

สรุป …

  • การ forecast ถือว่าค่อนข้างใกล้เคียงเลยนะ แต่ในอัตราการเกิดอย่างที่บอก คือ ข้อมูลย้อนหลังค่อนข้างคงที่ ทำให้การ forecast คาดเคลื่อนค่อนข้างมาก โดยนั่นแปลว่า ในข้อมูลที่ม่ีความซับซ้อน หรือ ขึ้นกับ environment อื่นๆ เราต้องนำข้อมูลอื่นๆ มาประกอบในการ forecast ด้วยแหละ จะอาศัยข้อมูลที่มีเพียงตัวแปรเดียวไม่ได้
  • Power BI เป็น visualization tools ที่ powerful จริงๆนะ แค่เราคลิกๆลากๆ ก็สามารถแสดงผลได้แล้ว แต่สิ่งสำคัญจริงๆ เราต้องรู้พฤติกรรมของข้อมูล ว่าเป็นข้อมูลชนิดไหน ส่งผลกระทบอย่างไร คลิกๆวางๆอย่างเดียว ไม่สามารถเพิ่ม performance ได้น๊ะ
  • จะเห็นว่า ยังมี visual chart อีกมากมายยยย เราต้องคิดดูว่า ข้อมูลที่เรามีนั้น อยากนำเสนอออกมาในรูปแบบไหน แล้วไปค้นหาตัว visual แบบที่ต้องการได้เลยแหละ ง่ายยยรอบที่ล้านแล้วววว

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

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

  • สำนักบริหารการทะเบียน กรมการปกครอง กระทรวงมหาดไทย ผู้สนับสนุนข้อมูล
  • Bandicam ที่อัดหน้าจอฟรี
  • Convertio ที่แปลงไฟล์ GIF ให้
  • ที่ขาดไม่ได้เลย คือ Microsoft Power BI ที่ทำให้เราได้มี skill ติดตัวเพิ่มขึ้นมาอีก

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

Data P (Tubsamon Dusitsopittawong)

--

--

Ploii Tubsamon

Data Analyst. Microsoft Certified Power BI Data Analyst Associate.