Power BI กับการทำนายอัตราการเปลี่ยนแปลงของประชากรไทย พร้อม Animated Bar Chart
อยากได้ chart แบบนี้หรือป่าว .. แล้วรู้หรือไม่ นี่คือ forecast ที่ทำโดยใช้ Power BI นะ
- สวัสดีทุกท่านที่ได้เข้ามาอ่าน 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
- จะเห็นว่าข้อมูลที่มีนั้น ยังต้องทำการ clean data อีกสักนิดหน่อย เนื่องจากมีทั้ง merge มีช่องว่างใน cell ที่ไม่ได้ใช้งาน เราจะไปทำการ clean กันใน Power BI กันดีกว่า
2.Import Data :
- นำตาราง excel เข้า Power BI กันเลย : เปิดโปรแกรมขึ้นมา จะเจอหน้าจอสีเหลืองแบบรูปที่ 2 บางคนอาจคลิก Get data ที่ด้านซ้ายมือ หรือถ้าเผลอกดปิดมุมขวาบนไป เราก็สามารถ Get data จากที่อื่นได้
- วิธี Get Data อีกแบบทำได้โดย ไปที่ tab Home > Get data > Excel จากนั้นจะเจอหน้าจอแบบรูปที่ 3 ให้เรากดเลือก sheet ที่ต้องการใช้ ในที่นี้แสดงอยู่ 2 ชีท (จำนวนชีท จะตรงกับในไฟล์ excel) แต่เราจะใช้แค่ชีทที่ชื่อ CrossTab_2R1C เพียงชีทเดียว จากนั้นที่มุมขวาล่างให้กดที่ Transform Data เพื่อทำการ clean ข้อมูลก่อนนำไปใช้
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 ไม่ได้ นะจ๊ะ ****
- หลังจากทำการ clean ข้อมูลแล้ว จะได้ออกมาตามรูปที่ 5 จากนั้นให้กดที่ tab home > Close&Apply >แล้วกด Close&Apply เพื่อทำการปิดหน้าต่าง power query และให้ข้อมูลที่ clean แล้ว ไปแสดงที่หน้าหลัก
4. Process Data & Visualize Data
- จะปรากฏหน้าว่างขึ้นมา ให้ไปคลิกที่ Visualizations > Line Chart
- เลื่อนลงไปด้านล่างจะเจอ Fields (เป็นรูปสี่เหลี่ยมผืนผ้าซ้อนกัน ที่อยู่ใกล้กับสัญลักษณ์แปรงทาสี) > จะพบ Axis, Legend, Values
- ให้ลาก ปี ไปใส่ที่ Axis ลาก จำนวน (คน) ไปใส่ที่ Values ตามรูปที่ 6
- หลังจากที่เราลากข้อมูลที่ต้องการ ไปไว้ที่ field ต่างๆแล้ว จะปรากฏ chart ดังรูปที่ 8 แต่จะเห็นว่ามี visualization 2 ตัว คือ line chart (เส้นสีม่วง) และ slicer (เส้นสีแดง)
- เอ๊ะ แล้ว data ใน line chart มายังไงนะ : เราแค่นำเม้าส์ไปวางที่ line chart จากนั้นคลิก 1 ที ตัวแถบ visualizations ด้านล่าง จะปรากฎรูปแปรงทาสีขึ้นมา จากนั้นเราก็ปรับค่าได้ตามใจเลย ทั้งของเส้นกราฟ ให้กราฟแสดงข้อมูล ขยายตัว data ให้ขนาดตามใจชอบได้ด้วย
- ส่วนในด้าน slicer มาจาก visualizations ชื่อ slicer (วงไว้ที่เป็นสีแดง) จากนั้นก็นำ Fields ที่่ต้องการให้เป็นตัว filter มาใส่ ในที่นี่เราเลือกให้ รายการ กับ เพศ เป็นตัวกรอง เพราะอยากทราบว่า อัตราการเปลี่ยนแปลงของประชากรในแต่ละเพศเป็นอย่างไร และเปลี่ยนไปในทางไหน
5. Forecasting : ถึงขั้นตอนสำคัญแล้วววว
- เมื่อเราได้ line chart มาแล้ว ต่อไปเราจะทำการ forecast ข้อมูลกัน มาดูว่า Power BI จะสามารถทำได้ขนาดไหนกันนะ
- เริ่มต้นด้วย นำเม้าส์ไปวางกราฟเส้นที่เราสร้างไว้ จากนั้นคลิก 1 ที แถบ Visualizations ก็จะปรากฏรูปแว่นขยาย (มันคือแถบ Analytics) รูปที่ 9
- เมื่อเลื่อนลงมาด้านล่างจะเจอ forecast
- ** ลองสังเกตว่า ถ้าทำตามทุกขั้นตอน แล้วยังไม่ปรากฏแถบ forecast ขึ้นมา นั่นแปลว่า ข้อมูลเรามีนั้น ไม่มีช่วงเวลา (date/time) ให้กลับไปเช็คที่ตัว data ที่หน้า Power Query อีกรอบก่อน **
- ** เพราะข้อมูล time-series มันต้องใช้ข้อมูลที่เป็นช่วงเวลาเสมอ ค่าาาาา
… เรามาใส่ parameter ใน Forecast กันดีกว่า
- Forecast Length คือ period ที่เราต้องการจะทำนาย โดยเราเลือก 6 ปี เพราะข้อมูลย้อนหลังที่มี จะมีการเปลี่ยนแปลงอย่างเห็นได้ชัดในช่วงทุก 6 ปี และปรับหน่วยเป็น Year(s) ตามที่เราต้องการ ถ้าใครต้องการดูเป็นเดือน ก็ปรับเป็นเดือนได้
- Ignore last หมายถึง เราจะไม่สนใจข้อมูลย้อนหลังเป็นจำนวนเท่าไหร่ ในที่นี้เราก็ใส่ 6 ปี เพื่อต้องการดูว่าผลทำนาย กับ ค่าจริงที่เกิดขึ้น มีความใกล้เคียงกันมากน้อยแค่ไหน
- Confidence interval ขอบเขตความแม่นยำ ลองสังเกตดูว่าถ้าเราเลือกที่ % มาก ค่าความแม่นยำของการทำนายก็จะยิ่งใกล้เคียงกับค่าจริง ซึ่งเราสามารถปรับตัว visualize ของ confidence interval ได้ด้วย ปรับได้ตามใจเลย
- ส่วน Seasonality จะเหมาะกับข้อมูลที่มีความถี่มากกว่านี้ เช่น รายเดือน หรือ รายไตรมาส ในที่นี้เราใส่เป็น Auto ไป แต่ถ้าข้อมูลเป็นพวกยอดขายเราสามารถใส่เป็น 3 ก็ได้ เพราะการเปลี่ยนแปลงยอดขายก็จะวัดกันเป็นรายไตรมาสอยู่แล้วโดยทั่วไปจ้าาาา
… แท่น แท๊นนนนน และในที่สุด เราก็ได้ forecast line chart ออกมาแล้ว มันคือเส้นประสีแดง
- จะสังเกตได้ว่า การทำนายค่อนข้างใกล้เคียงกับค่าจริงที่เกิดขึ้นเลยนะ แต่เนื่องด้วยข้อมูลเรามันเป็นปี ที่เป็น period ค่อนข้างกว้าง ทำให้ forecast ที่ออกมาค่อนข้างเหลื่อมๆไปหน่อย แต่ก็มีแนวโน้มที่คล้ายกันอยู่
- และลอง filter รายการดู จำนวนการเสียชีวิต ก็ตรงอยู่นะ ส่วนการเกิด ถ้าดูจากปีก่อนหน้าย้อนไปเกือบ 15 ปี อัตราการเกิดค่อนข้างคงที่เลยนะ เลยทำให้พอปีหลังๆมา การเกิดลดลง ตัวที่ forecast เลยเพี้ยนไปเลย ทั้งนี้ก็ขึ้นอยู่กับการกระจายตัวของข้อมูลด้วยน้าาา ถ้าต่างกันมากไป อย่างไรก็มีโอกาสทำนายผิดค่อนข้างมากเลยจ้าา
…
- ที่นี้ๆ เราก็มีลองปรับนู่นนี่นิดหน่อย ใส่ trend line (เส้นจุดสีม่วง) เพิ่ม ลองให้ forecast 6 ปี ต่อจากนี้ (ถึงปี 2568) (ปรับพวก Forecast Length, Ignore Last ) หน้าตาก็ดูดีอยู่น้า ตามรูปที่ 12 ต้องมาลองลุ้นกันว่าในอีก 5 ปี ข้อมูลจะใกล้เคียงที่เรา forecast มากน้อยแค่ไหน
— เห็นไหมว่า การ Forecast โดยใช้ Power BI ไม่ยากอย่างที่คิดเลยนะ
เรามีของแถมมมมมม …
แถม 1 : อยากทำ zoom slide แบบรูปที่ 13 ทำยังไงอ่ะ
- คลิกที่ตัว chart > ไปที่ Visualization มองลงล่าง เจอรูปแปรงทาสี > เลื่อนไปหา parameter ชื่อ Zoom Slider > เปลี่ยน Off เป็น ON .. เสร็จแล้วววว จบปิ๊ง ง่ายยยแต่สวยนะ
แถม 2 : อยากทำ Animation แบบรูปที่ 14 ด้วยทำยังไงอ่ะ
- ไปที่ Visualization > จะเจอ … (มันคือ Get more Visuals) กดเข้าไปเลย > แล้ว search ว่า Animated Bar Chart Race > เราก็จะได้ Visual ตัวใหม่มา
- จากนั้นก็ field ข้อมูลตามที่ต้องการได้เลยยยย ง่ายมากๆอีกเช่นกัน
- สำหรับเรา เราชอบ 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)