Category: Portfolio

  • Churn Analysis with Python

    Churn Analysis with Python

    สวัสดีครับ สำหรับบทความนี้จะให้ความสนใจเกี่ยวกับการหาปัจจัยที่ทำให้ลูกค้ายกเลิกการใช้บริการของบริษัมคมนาคมแห่งหนึ่งนะครับ โดยจะใช้เครื่องมือ Google Colab สำหรับการเขียนโปรแกรมภาษา Python เพื่อการจัดการข้อมูล วิเคราะห์ข้อมูลและนำเสนอข้อมูลนะครับ

    โดยชุดข้อมูลที่จะนำมาวิเคราะห์จะมีข้อมูลหลายคอลัมน์ สามารถเข้าไปดูคำอธิบายแต่ละคอลัมน์ได้จากลิ้งต่อไปนี้ครับ –> คำอธิบายคอลัมน์ต่างๆของข้อมูล

    สามารถดูตารางข้อมูลได้โดยกดลิ้งดังต่อไปนี้ –> ตารางข้อมูล
    โดยแต่ละแถวจะเป็นข้อมูลของลูกค้า 1 คน

    ตัวแปรเป้าหมายที่เราจะให้ความสนใจคือ Churn การยกเลิกการใช้บริการของลูกค้า (yes ยกเลิกการใช้บริการ , no ยังไม่ยกเลิกการใช้บริการ)

    บทความนี้ผมจะค่อยๆอธิบายโดยเรียงลำดับดังต่อไปนี้ครับ

    1. การ Import Library และ Import Data
    2. Data Cleansing: การตรวจสอบและทำความสะอาดข้อมูล(ถ้าข้อมูลยังไม่พร้อมใช้)
    3. Descriptive Analysis : วิเคราะห์และนำเสนอข้อมูลเบื้องต้น
    4. Hypothesis Testing: ทดสอบสมมติฐานทางสถิติ
    5. สรุปข้อมูลเชิงลึก (Insight)

    สำหรับไฟล์ชุดข้อมูลและการเขียนโปรแกรมเพื่อทำโปรเจคสำหรับการวิเคราะห์เกี่ยวกับ Churn จะขอแปะลิ้ง Github ไว้ด้านล่างนี้นะครับ

    Project : Customer Churn Analysis with Python

    โดยในส่วนของลิ้ง Colab จะแปะอยู่ในส่วนของ README.md นะครับ

    Import Library and Dataset

    ก่อนอื่นเปิด Google Colab สร้างไฟล์ใหม่ แล้วทำการ Import Library ที่จำเป็นต้องใช้ได้แก่

    • pandas สำหรับการจัดการข้อมูล วิเคราะห์ข้อมูลและสร้างกราฟเบื้องต้น
    • matplotlib.pyplot และ seaborn สำหรับการกราฟโดยเฉพาะเพื่อนำเสนอข้อมูล
    • scipy stats สำหรับทดสอบสมมติฐานทางสถิติ
    การเรียก Library ต่างเพื่อวิเคราะห์ข้อมูล นำเสนอข้อมูลและทดสอบสมมติฐานทางสถิติ

    จากนั้น Import Dataset ที่จะใช้ในการวิเคราะห์ข้อมูล ในที่นี้ไฟล์ดังกล่าว นามสกุล csv จะสามารถเขียนโค้ดเพื่อ Import Dataset File ได้ดังนี้

    การนำเข้าข้อมูลไฟล์ csv

    ต่อไปจะทำการตรวจสอบความพร้อมของข้อมูลกันนะครับ

    Data Cleansing

    ก่อนจะเริ่มวิเคราะห์ข้อมูลจะทำความเข้าใจข้อมูลและเช็คเรื่องความสะอาดของข้อมูลก่อน ไม่ว่าจะเป็นค่าว่าง หรือ ข้อมูลซ้ำกันมากกว่า 1 แถวและเช็คประเภทของข้อมูลครับ

    โดยที่ใช้คำสั่ง df.info() เพื่อดูว่ามีข้อมูลเกี่ยวกับอะไรบ้างและเช็คจำนวนคอลัมภ์และจำนวนรายการของข้อมูล

    จะเห็นว่าข้อมูลนี้มีทั้งหมด 12892 รายการ และแต่ละคอลัมภ์มีจำนวนค่าเท่ากันกับจำนวนแถวของข้อมูล ดังนั้น ข้อมูลชุดนี้ไม่มีค่าว่าง (Missing Values) และแต่ละคอลัมภ์ก็มีประเภทข้อมูลที่เหมาะสมอยู่แล้ว

    ต่อไปจะเช็คเรื่องของการซ้ำกันของข้อมูล โดยใช้คำสั่งต่อไปนี้

    ผลปรากฏว่าไม่มีข้อมูลแถวใดซ้ำกันเลย

    ถัดไปจะเข้าสู่การวิเคราะห์ข้อมูลเบื้องต้นครับ

    Descriptive Analysis

    หัวข้อนี้จะทำการศึกษาข้อมูลตัวอย่างของลูกค้าจำนวน 12892 คน โดยจะทำการสำรวจข้อมูลพร้อมทั้งสรุปและอธิบายสิ่งที่เกิดขึ้นเกี่ยวกับปัจจัย Churn (การยกเลิกการใช้บริการของลูกค้า) นะครับ

    ก่อนอื่นเราจะสำรวจข้อมูลคร่าวๆ

    • ดูข้อมูลแถวแรกๆ df.head()
    • ประเภทข้อมูล df.info()
    • การดูค่าทางสถิติของตัวแปรที่เป็นเชิงปริมาณ df.describe()

    เมื่อสำรวจข้อมูลเบื้องต้นเรียบร้อย จะทำการวิเคราะห์เพื่ออธิบายข้อมูลเบื้องต้น

    อย่างแรกหาว่าจำนวนคนในข้อมูลทั้งกลุ่ม Churn = “yes” และกลุ่ม
    Churn = “no” มีอย่างละกี่คน ดังต่อไปนี้

    การเขียนโปรแกรมเพื่อแสดงสัดส่วนของจำนวนคนที่ Chrun และ จำนวนคนที่ยังไม่ Chrun
    สัดส่วนการยกเลิกการใช้บริการของลูกค้า

    Age of account in the months

    ในหัวข้อนี้จะหาค่าเฉลี่ยอายุบัญชีแยกตามปัจจัย Churn จะโชว์โค้ดและผลลัพธ์ ดังต่อไปนี้

    อายุของบัญชีลูกค้าเฉลี่ยแยกตามปัจจัย Churn

    อายุบัญชีเฉลี่ย(ต่อลูกค้า 1 คน) ของลูกค้าทั้ง 2 กลุ่ม แทบจะพอๆกัน

    User Behavior

    ต่อไปจะศึกษาพฤติกรรมการใช้งานในส่วนต่างๆ ได้แก่

    • ปริมาณการใช้งาน(นาที) ต่อวัน
    • จำนวนการโทรออกต่อวัน

    Daily Usage (Minutes)

    เริ่มจากวิเคราะห์ปริมาณการใช้งาน(นาที) แยกตามแบ่งกลุ่มตาม Churn

    การเขียนโปรแกรมเพื่อแสดงตารางที่แสดงปริมาณการใช้งานต่อวันเฉลี่ยแบ่งกลุ่มตามตัวแปร Churn
    การเขียนโปรแกรมเพื่อแสดงกราฟแท่งแสดงปริมาณการใช้งานต่อวันเฉลี่ยแบ่งกลุ่มตาม Churn ของแต่ละช่วงเวลาต่างๆ (ระหว่างวัน, เย็น, กลางคืน) รวมไปถึงการปริมาณการใช้งานต่อวันเฉลี่ยสำหรับการติดต่อระหว่างประเทศ
    ปริมาณการใช้งานต่อวัน (นาที) เฉลี่ยในช่วงเวลาต่างๆ (ระหว่างวัน, เย็น, กลางคืน) รวมไปถึง
    ปริมาณการใช้งานต่อวัน (นาที) เฉลี่ยเพื่อติดต่อระหว่างประเทศ

    จะสังเกตได้ว่าไม่ว่าจะช่วงเวลาใดก็ตาม รวมไปถึงการโทรระหว่างประเทศกลุ่มลูกค้าที่ Churn มีปริมาณใช้งาน(นาที) เฉลี่ยมากกว่ากว่าของกลุ่มลูกค้าที่ยังไม่ Churn สันนิษฐานได้ว่าลูกค้าในกลุ่มที่จะเลิกใช้บริการแล้ว อาจจะเพราะว่าถูกเก็บค่าบริการที่สูงกว่าอันเนื่องมาจากการใช้งานที่มากกว่า
    โดยในหัวข้อย่อยอย่าง Service charge จะมีการดูความสัมพันธ์ระหว่างปริมาณการใช้งาน (นาที) กับ ค่าบริการต่อไปครับ

    Total calls

    ต่อไปจะดูในเรื่องของจำนวนการโทรออกต่อวันของลูกค้าแต่ละคนกันบ้าง


    จำนวนการโทรออกเฉลี่ย ในช่วงเวลาต่างๆ (ระหว่างวัน, เย็น, กลางคืน) รวมไปถึง
    จำนวนการโทรออกเฉลี่ย ระหว่างประเทศ

    พบว่าไม่ว่าจะเป็นลูกค้าที่ Churn หรือลูกค้าที่ยังไม่ Churn มีจำนวนการโทรออกต่อวันโดยเฉลี่ยเกือบเท่ากัน ไม่ว่าจะช่วงระหว่างวัน ช่วงเย็น ช่วงกลางคืน รวมไปถึงการโทรออกระหว่างประเทศ

    Service Charge

    จากหัวข้อพฤติกรรมการใช้งานต่างๆ ในส่วนของปริมาณการใช้งานหน่วยนาทีต่อวันเฉลี่ย เราทราบว่าลูกค้ากลุ่มที่ Churn ใช้งานโดยเฉลี่ยต่อวันมากกว่าของกลุ่มลูกค้าที่ไม่ Churn ทุกช่วงเวลา รวมไปถึงการโทรระหว่างประเทศด้วย เราจึงสันนิษฐานว่ายิ่งใช้งานนาน ทำให้ค่าบริการสูงขึ้น

    ดังนั้นถัดไปจะพล็อตกราฟเพื่อหาความสัมพันธ์ระหว่าง ปริมาณการใช้งานและค่าบริการว่ามีความสัมพันธ์อย่างไร (ผมจะโชว์เฉพาะของ ช่วงเวลาเช้านะครับ เพราะข้อมูลของช่วงเวลาอื่น ความสัมพันธ์จะคล้ายกันมากๆ)

    ความสัมพันธ์ระหว่างปริมาณการใช้งานต่อวัน(นาที)ช่วงระหว่างวัน และ ค่าบริการรายวัน

    ผลปรากฏว่ามีความสัมพันธ์กันแบบเส้นตรงอย่างชัดเจนมากนั่นแปลว่า ยิ่งใช้บริการมากเท่าไหร่ก็ยิ่งต้องเสียค่าบริการมากขึ้นเท่านั้น

    จากนั้นจะหาค่าบริการเฉลี่ยของลูกค้าที่ Churn และไม่ Churn นะครับ โดยวิธีการเขียนโค้ดนั้นจะคล้ายกับการเขียนโค้ดแสดงปริมาณการใช้งานต่อวันครับ ดังนั้นจะโชว์เฉพาะผลลัพธ์นะครับ

    ค่าบริการการติดต่อที่เก็บจากลูกค้ารายวัน ทั้งช่วงระหว่างวัน , ช่วงเย็น , ช่วงกลางคืน และค่าบริการการติดต่อระหว่างประเทศ

    เราจึงสรุปได้ว่า ลูกค้าที่ตัดสินใจ Churn ส่วนหนึ่งเป็นเพราะถูกเก็บค่าบริการที่สูงกว่าถ้าเทียบกับลูกค้าที่ไม่ Churn โดยมีสาเหตุจากพฤติกรรมที่ลูกค้ากลุ่มที่ Churn นั้นมีปริมาณการใช้งานปริมาณ(นาที) สูงกว่าลูกค้าที่ไม่ Churn

    Packages

    ในหัวข้อนี้จะวิเคราะห์ข้อมูลตามปัจจัยเรื่องแพ็จเกจบ้างร่วมกับปัจจัย Churn
    ต่อไปจะวิเคราะห์ในส่วนของโปรโมชั่นบ้างจะแบ่งเป็น 2 อย่างตามข้อมูลที่มีได้แก่

    • international_plan แพ็กเกจการโทรต่างประเทศ (yes มี / no ไม่มี)
    • voice_mail_plan แพ็กเกจฝากข้อความเสียง (yes มี / no ไม่มี)

    โดยทั้ง 2 คอลัมภ์นี้ที่เป็นข้อมูลเรื่องการมีแพ็จเกจของลูกค้า ผมจะทำการหาสัดส่วนการเลิกใช้บริการของลูกค้า ทั้งกรณีที่ลูกค้ามีแพ็กเกจ หรือ กรณีที่ลูกค้าไม่มีแพ็กเกจดังกล่าวก็ตาม

    International Plan

    เราจะแบ่งเป็น 2 กรณี เพื่อวิเคราะห์หาสัดส่วนการ Churn

    • กรณีที่ 1 ลูกค้ามีแพ็กเกจดังกล่าว (international_plan = “yes”)
    • กรณีที่ 2 ลูกค้าไม่มีแพ็กเกจดังกลาว (international_plan = “no”)
    สัดส่วนลูกค้าจำแนกตามตัวแปร Churn กรณีที่
    ลูกค้ามีแพ็กเกจการโทรต่างประเทศ
    สัดส่วนลูกค้าจำแนกตามตัวแปร Churn กรณีที่
    ลูกค้าไม่มีแพ็กเกจการโทรต่างประเทศ

    จาก 2 รูปภาพนี้บอกได้เลยว่าแพ็กเกจการโทรต่างประเทศอาจจะมีปัญหาบางอย่างที่ทำให้ลูกค้าไม่พอใจ เนื่องจากกลุ่มลูกค้าที่ไม่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) เพียง 11% เท่านนั้น ในขณะที่กลุ่มลูกค้าที่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) พุ่งสูงถึง 41.8%

    ด้านล่างจะโชว์วิธีการเขียนโค้ดต่อไปนี้

    ตารางแสดงสัดส่วนต่างๆแยกตามตัวแปร international_plan และ churn
    การเขียนโปรแกรมเพื่อแสดงสัดส่วนของจำนวนคนที่ Chrun / ยังไม่ Chrun
    ในกรณีสำหรับคนที่มีแพ็กเกจต่างประเทศ (international = “yes”)

    การเขียนโปรแกรมเพื่อแสดงสัดส่วนของจำนวนคนที่ Chrun / ยังไม่ Chrun
    ในกรณีสำหรับคนที่ไม่มีแพ็กเกจต่างประเทศ (international = “no”)

    Voice mail plan

    เราจะแบ่งเป็น 2 กรณี เพื่อวิเคราะห์หาสัดส่วนการ Churn

    • กรณีที่ 1 ลูกค้ามีแพ็กเกจดังกล่าว (voice_mail_plan = “yes”)
    • กรณีที่ 2 ลูกค้าไม่มีแพ็กเกจดังกลาว (voice_mail_plan = “no”)
    สัดส่วนลูกค้าจำแนกตามตัวแปร Churn กรณีที่
    ลูกค้ามีแพ็กเกจการการฝากข้อความเสียง
    สัดส่วนลูกค้าจำแนกตามตัวแปร Churn กรณีที่
    ลูกค้าไม่มีแพ็กเกจการการฝากข้อความเสียง

    จาก 2 รูปภาพนี้ จะเห็นว่าแพ็กเกจนี้ไม่ค่อยมีผลต่อการยกเลิกการใช้บริการของลูกค้า เนื่องจากพบว่ากลุ่มลูกค้าที่ไม่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) เพียง 16.3% ในขณะที่กลุ่มลูกค้าที่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) เพียง 8.3% ซึ่งถือว่าสัดส่วนของทั้งลูกค้าทั้ง 2 กลุ่มมีลูกค้าที่เลิกใช้บริการไม่มากนักเมื่อเทียบกับจำนวนลูกค้าทั้งหมดของแต่ละกลุ่ม

    สำหรับวิธีการเขียนโค้ดนั้นจะคล้ายๆกับกรณีของการวิเคราะห์ Chrun แบ่งกรณีตามตัวแปร international_plan ทุกประการ

    Number customer service calls

    สำหรับหัวข้อนี้จะอธิบายการวิเคราะห์เกี่ยวกับจำนวนครั้งที่ลูกค้าติดต่อสอบถามผ่านระบบตอบรับอัตโนมัติ (IVR) ของฝ่ายบริการลูกค้า โดยธรรมชาติในโลกตามเป็นจริงนั้น ถ้าลูกค้าไม่ว่าคนไหนที่โทรสอบถามฝ่ายบริการบ่อยๆ มักสะท้อนว่าลูกค้ากำลังประสบปัญหา และมีความเสี่ยงในการยกเลิกการใช้บริการได้

    ผมจะใช้ข้อมูลที่มีเพื่อหาค่าเฉลี่ยของจำนวนครั้งที่ลูกค้าโทรสอบถามฝ่ายบริการของทั้งกลุ่มที่ลูกค้า Churn และกลุ่มที่ลูกค้ายังไม่ Churn ครับ ดังต่อไปนี้

    การเขียนโปรแกรมเพื่อแสดงตารางของจำนวนลูกค้าที่ติดต่อสอบถามฝ่ายบริการลูกค้าโดยเฉลี่ยโดยแบ่งกลุ่มตาม Churn
    ตารางแสดงจำนวนลูกค้าที่ติดต่อสอบถามฝ่ายบริการลูกค้าโดยเฉลี่ยแบ่งกลุ่มตาม Churn

    จากข้อมูลตัวอย่างนี้พบว่า ลูกค้ากลุ่มที่ Churn มีการโทรสอบถามหาฝ่ายบริการด้วยจำนวนครั้งเฉลี่ย(ต่อลูกค้า 1 คน) มากกว่าของลูกค้ากลุ่มที่ไม่ Churn

    เนื่องจากหัวข้อที่แล้วเราได้ทำการหาค่าต่างๆ ไม่ว่าจะเป็นจำนวนลูกค้าแยกตามคอลัมน์ Churn หรือ ค่าเฉลี่ยต่างๆของตัวแปรเชิงปริมาณทั้งกลุ่มลูกค้าที่ Churn และกลุ่มลูกค้าที่ไม่ Churn ไปแล้ว แต่นั่นเป็นการที่แค่ศึกษาเฉพาะข้อมูลตัวอย่างเท่านั้น ไม่ได้ครอบคลุมข้อมูลระดับประชากร เราจะยังไม่สามารถบอกได้ว่าตัวแปรเชิงปริมาณเหล่านั้นมีความเกี่ยวข้องกับการยกเลิกการบริการ (Churn) ดังนั้น ในหัวข้อถัดไปจะทำการทดสอบสมมติฐานทางสถิติครับ

    Hypothesis Testing

    ในหัวข้อนี้ เราจะทำการทดสอบสมมติฐานเพื่อศึกษาว่ามีตัวแปรเชิงปริมาณตัวใดบ้างที่มีความสัมพันธ์กับการยกเลิกบริการ (Churn) โดยเราจะเปรียบเทียบค่าเฉลี่ยของกลุ่มลูกค้าที่ Churn (กลุ่ม yes) และไม่ Churn (กลุ่ม no) ว่ามีความแตกต่างกันอย่างมีนัยสำคัญทางสถิติหรือไม่ โดยในที่นี้จะทดสอบที่นัยสำคัญ alpha = 0.05

    ต่อไปนี้แสดงการเขียนโปรแกรมภาษา Python และผลการทดสอบสมมติฐานด้วย t-test ดังต่อไปนี้

    ลิสต์ชื่อคอลัมน์ ของข้อมูลคอลัมน์ที่เป็นประเภทตัวเลข(ทั้งทศนิยมและจำนวนเต็ม) ทั้งหมด โดยยกเว้นคอลัมน์ recordID, customer_id และ area_code
    การเขียนโปรแกรมเพื่อทดสอบสมมติฐานทางสถิติเพื่อทดสอบ t-test ว่ากลุ่มลูกค้าที่ Churn และไม่ Chrun มีค่าเฉลี่ยของตัวข้อมูลเชิงปริมาณแต่ละตัวแปรแตกต่างกันอย่างมีนัยสำคัญหรือไม่

    หมายเหตุ: ข้อมูลตัวแปรเชิงปริมาณที่นำมาทดสอบความแตกต่างกันของค่าเฉลี่ยได้แก่ ปริมาณการใช้งาน(นาที) ต่อวัน , จำนวนการโทร , ค่าบริการ, อายุบัญชีของลูกค้า และจำนวนการโทรสอบถามหาฝ่ายบริการ โดยจะเปรียบเทียบระหว่าง 2 กลุ่มได้แก ลูกค้าที่ Chrun และไม่ Chrun ว่า 2 กลุ่มนี้มีความแตกต่างกันของค่าเฉลี่ยหรือไม่

    ผลการทดสอบสมมติฐานทางสถิติ

    ผลการทดสอบพบว่าเกือบทุกตัวแปรไม่ว่าจะเป็น อายุบัญชี ปริมาณเวลาการใช้งาน(นาที) ของทุกช่วงเวลา และค่าบริการต่างๆ และค่าธรรมเนียม ของลูกค้าที่ Churn และ ไม่ Churn มีค่าเฉลี่ยแตกต่างกันอย่างมีนัยสำคัญแสดงว่า ปัจจัยต่างๆดังกล่าวมีความสัมพันธ์กับการยกเลิกการใช้บริการ (Churn) จากการได้ผลการตัดสินใจ Reject H0

    มีเพียงแค่จำนวนครั้งในการ call ที่ไม่มีความสัมพันธ์กับการยกเลิกการบริการ (Churn) เลย จากการได้ผลการตัดสินใจ Fail to Reject H0

    ผมจะอธิบายเพิ่มเติมเกี่ยวกับขั้นตอนการทดสอบสมมติฐานทางสถิติเพื่อให้เข้าใจมากขึ้นนะครับ

    สมมติผมจะทดสอบตัวแปร ค่าบริการรายวัน (total_day_charge) มีความสัมพันธ์ต่อการยกเลิกบริการหรือไม่ผมจะตั้งสมมติฐาน 2 ส่วนคือ H0 และ H1 ดังนี้

    H0 : μyes = μno หรือ μyes – μno = 0
    H1 : μyes ≠ μno หรือ μyes – μno ≠ 0

    โดยทดสอบด้วย t-test ที่ระดับนัยสำคัญ 0.05 ด้วยการเขียนภาษา python สามารถอ่านผลการทดสอบได้ 2 วิธีคือ อ่านค่า p-value หรือ อ่านค่า Confidence Interval(CI) โดยในที่นี้ จะอ่านค่า p-value นะครับ

    p – value : เนื่องจากผลการทดสอบพบว่า p – value <= 0.05 ตัดสินใจ Reject H0 ทำให้ได้ข้อสรุปว่า μyes ≠ μno
    นั่นคือกลุ่มลูกค้าที่ Chrun มีค่าบริการรายวันไม่เท่ากับของกลุ่มลูกค้าที่ยังไม่ Chrun อย่างมีนัยสำคัญทางสถิติ

    Summary Insights

    หลายๆตัวแปรเชิงปริมาณไม่ว่าจะเป็น

    • พฤติกรรมการใช้งาน
    • ค่าบริการ,
    • อายุบัญชีผู้ใช้งานของลูกค้า
    • จำนวนการโทรสอบถามฝ่ายบริการของลูกค้า

    ล้วนแล้วแต่มีความเกี่ยวข้องกับการยกเลิกการใช้บริการของลูกค้าอย่างมีนัยสำคัญ จะมีเพียงแค่จำนวนการโทรต่อวันที่ไม่ได้มีความเกี่ยวข้องต่อการยกเลิกการใช้บริการเลย

    สำหรับข้อมูลตัวอย่างของลูกค้ากว่า 12000 คนนี้ พบว่ากลุ่มลูกค้าที่ตัดสินใจยกเลิกการบริการจะทั้งในแง่พฤติกรรมการใช้งาน(นาที) ต่อวัน , ค่าบริการ, และจำนวนการโทรสอบถามฝ่ายบริการของลูกค้า โดยเฉลี่ยสูงกว่าของกลุ่มลูกค้าที่ยังไม่ยกเลิกการบริการ

    ดังนั้นจากการที่หาค่าทางสถิติเพื่ออธิบายข้อมูลและการทดสอบสมมติฐานนั้นมีความเป็นไปได้สูงว่า ค่าบริการที่สูงขึ้นรวมไปถึงการโทรสอบถามฝ่ายบริการที่บ่อย อาจจะโทรไปเพราะมีปัญหาบางอย่างเกี่ยวกับการใช้บริการ เป็นส่วนหนึ่งที่มีผลต่อการยกเลิกการใช้บริการของลูกค้า

    ส่วนปัจจัยเชิงกลุ่มอื่นๆนั้น ที่เป็นเรื่องแพ็กเกจ

    • แพ็กเกจสำหรับการโทรต่างประเทศ คาดว่ามีปัญหาบางอย่างที่ทำให้ลูกค้าไม่พอใจจนจะนำมาซึ่งการยกเลิกบริการได้ เนื่องจาก
      • กลุ่มลูกค้าที่ไม่มีแพ็กเกจนั้น มีคนเลิกใช้บริการเพียง 11%
      • กลุ่มลูกค้าที่มีแพ็กเกจนั้น มีคนเลิกใช้บริการพุ่งสูงถึง 41.8%
    • แพ็กเกจสำหรับฝากข้อความเสียง ไม่ค่อยมีผลต่อการยกเลิกการใช้บริการของลูกค้า เนื่องจากพบว่า สัดส่วนของทั้งลูกค้าทั้ง 2 กลุ่มมีลูกค้าที่เลิกใช้บริการไม่มากนักเมื่อเทียบกับจำนวนลูกค้าทั้งหมดของแต่ละกลุ่ม
      • กลุ่มลูกค้าที่ไม่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) 16.3%
      • กลุ่มลูกค้าที่มีแพ็กเกจนั้น มีคนเลิกใช้บริการ (Churn) 8.3%

  • From Raw Text to Insights: Extracting ID Card Data with REGEXEXTRACT and Looker Studio Dashboards

    From Raw Text to Insights: Extracting ID Card Data with REGEXEXTRACT and Looker Studio Dashboards

    สวัสดีครับ บทความนี้จะพาทุกคนมาจัดการข้อมูลจำลองชุดหนึ่งที่มีลักษณะเป็นข้อความยาวๆโดยใช้เครื่องมือ Google sheets ให้มีลักษณะเป็นตารางพร้อมทั้งใช้ Google Looker Studio เพื่อสรุปข้อมูลให้เห็นภาพเป็นกราฟที่เข้าใจง่ายๆด้วยการทำ Report ที่มีลักษณะเป็น Interactive Dashboard ครับ

    ผมจะทำการแปะลิ้งโปรเจคที่ทำใน Google sheets และ Google Looker Studio ครับ

    Transformation data in Google sheets
    Interactive Dashboard by Looker Studio

    โปรเจคนี้ผมมี Dataset สมมติที่สร้างมาจาก Gemini เป็นข้อมูลบัตรประจำตัวทั้งหมด 100 รายการแต่ละรายการก็จะเป็นของแต่ละคน โดยผมจะโชว์ข้อมูล 5 แถวแรกครับ (Copy จาก Gemini ใส่ Google sheet ตั้งชื่อ Sheet ว่า Dataset)

    Dataset ID Card : ข้อมูลจำลองที่สร้างขึ้นจาก Gemini

    โดยเป้าหมายคือจัดการข้อมูลเหล่านี้โดยปรับเปลี่ยนรูปแบบข้อมูลจากข้อความยาวๆที่นำไปใช้ต่อยาก ให้เป็นโครงสร้างแบบตารางเพื่อนำไปใช้ในการวิเคราะห์ข้อมูลต่อง่ายขึ้นแล้วนำข้อมูลแบบตารางมาสรุปข้อมูลเป็นกราฟอย่างง่าย เป็น 2 ส่วนด้วยรูปแบบ Interactive Dashboard ดังต่อไปนี้

    1. Demographic Analysis ข้อมูลเชิงประชากรศาสตร์ อันประกอบด้วย การกระจายตัวของอายุ ,สัดส่วนแบ่งตามเพศ, สัดส่วนแบ่งตามสถานะบัตรประจำตัว
    2. Geographic Analysis ข้อมูลเชิงภูมิศาสตร์ อันประกอบด้วย จำนวนประชากรแบ่งตามประเทศ และจำนวนประชากรแบ่งตามรัฐในประเทศ USA

    เราจะเริ่มที่การจัดการข้อมูลกันก่อนนะครับในหัวข้อ Transformation Data ครับ

    Transformation Data

    เนื่องจากข้อมูลที่เรามี เป็นข้อความยาวๆประกอบด้วยข้อมูลหลายส่วนมากๆเช่น ID, คำนำหน้า, ชื่อและอื่นๆอยู่ในคอลัมภ์เดียวกัน ไม่เหมาะกับการนำมาวิเคราะห์ข้อมูลต่อ

    ดังนั้นเราจะทำการเปลี่ยนรูปแบบข้อมูลดังกล่าวที่ให้เป็นโครงสร้างแบบตารางด้วยการสกัดข้อมูลออกเป็นส่วนๆ แต่ละส่วนให้อยู่คนละคอลัมภ์กันโดยจะใช้หลักการที่เรียกว่า Regular Expression และตรวจสอบพร้อมแก้ไขคอลัมภ์ที่เป็นวันที่เพิ่มเติมในกรณีที่มีรูปแบบวันที่ที่ผิดพลาด

    แต่ก่อนเริ่มผมตั้งชื่อ Range ของข้อมูลดิบนี้ว่า DATA_CUSTOMER ก่อนนะครับ

    โดยไปที่แถบ Data –> Name ranges พร้อมตั้งชื่อ range ให้เรียบร้อยครับ

    ต่อไปเข้าสู่หัวข้อ Regular Expression ครับเพื่อสกัดข้อมูลแต่ละส่วนแยกเป็นแต่ละคอลัมภ์ครับ

    Regular Expression

    หัวข้อนี้จะใช้ฟังก์ชันที่ชื่อว่า REGEXEXTRACT หน้าที่คือสกัดข้อมูลที่ต้องการจากข้อความยาวๆโดยใช้การระบุรูปแบบ (Pattern) ครับ

    ผมจะแยกข้อมูลออกทั้งหมดได้เป็นลักษณะตารางให้เป็น 9 คอลัมภ์ดังต่อไปนี้

    • ID
    • Name
    • Gender
    • DOB (วันเกิด)
    • House No.
    • State
    • Country
    • Postal Code
    • EXP (วันที่บัตรหมดอายุ)

    สำหรับการใช้งานฟังก์ชันดังกล่าวจะมีพารามิเตอร์ 2 ตัวได้แก่

    • Text ข้อความที่เราจะนำมาสกัดคำหรือส่วนที่ต้องการ
    • Regular Expression คือส่วนสำคัญที่จะต้องระบุ pattern เพื่อดึงส่วนที่ต้องการออกมา ซึ่ง Pattern ที่ระบุนั้นต้องอยู่ในเครื่องหมาย “” โดยมีสัญลักษณ์ที่ควรรู้จักไว้ ดังผมจะอธิบายดังต่อไปนี้
      • . แทนตัวอักษรหรือสัญลักษณ์ใดก็ได้ 1 ตัว
      • ^ จุดเริ่มต้นของข้อความ
      • $ จุดสิ้นสุดของข้อความ
      • [ ] เลือกตัวใดตัวหนึ่งในวงเล็บ เช่น
        • [a-z] หาตัวอักษรพิมพ์เล็ก 1 ตัวอักษร
        • [A-Z] หาตัวอักษรพิมพ์ใหญ๋ 1 ตัวอักษร
        • [A-z] หาตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ก็ได้ 1 ตัวอักษร
        • [0-9] หาตัวเลขระหว่าง 0-9 1 ตัวอักษร
      • + คือ มีตัวก่อนหน้า 1 ตัวหรือมากกว่านั้น เช่น
        • [abc]+ หาตัวอักษรที่เป็น a หรือ b หรือ c มากกว่าหรือเท่ากับ 1 ตัว
        • .+ เลือกอักขระอะไรก็ได้มากกว่าหรือเท่ากับ 1 ตัว
      • * คือ มีตัวก่อนหน้า 0 ตัวหรือมากกว่านั้น

    ต่อไปผมจะนำความรู้เบื้องต้นเกี่ยวกับการใช้สัญลักษณ์ทั้งหลายดังกล่าวมาเขียนฟังก์ชัน REGEXEXTRACT เพื่อสกัดข้อมูลแต่ละส่วนครับ โดยจะแสดงการเขียนฟังก์ชันดังกล่าวของแต่ละคอลัมภ์ให้ดูนะครับ

    การใช้ฟังก์ชัน REGEXEXTRACT สกัดคำที่ต้องการแบบมี pattern แยกเป็นส่วนๆแต่ละคอลัมภ์

    เมื่อทำเสร็จเรียบร้อยก็จะได้ข้อมูลที่มีลักษณะเป็นโครงสร้างแบบตารางแล้ว

    และผมจะตั้งชื่อ Range ของข้อมูลที่เป็นรูปแบบตารางนี้ว่า CUSTOMER และจะโชว์ข้อมูล 5 แถวแรกดังต่อไปนี้

    Range: CUSTOMER ของ Sheet: Dataset

    จากนั้นเราจะต้องตรวจสอบรูปแบบของวันที่ในข้อมูล ได้แก่คอลัมภ์ DOB และ EXP ดังจะแสดงหัวข้อถัดไปครับ

    Handling Date Columns

    หัวข้อนี้จะอธิบายเกี่ยวกับการจัดการคอลัมภ์ประเภท Date นะครับ

    โดยที่ทั้งสองคอลัมภ์นั้นมีรูปแบบข้อมูลวันที่จะเป็น “วัน/เดือน/ปี” แต่เนื่องจาก Local ของ Google sheets เป็นของประเทศ United states รูปแบบวันที่ของเขาจะเป็นแบบ “เดือน/วัน/ปี” ดังนั้นรูปแบบวันที่ของข้อมูลที่บันทึกในสองคอลัมภ์นั้นกับรูปแบบวันที่ของ Google sheets ไม่ตรงกัน

    เช่น แถวที่สองของคอลัมภ์ DOB (25/11/1990) คนไทยจะอ่านว่า วันที่ 25 เดือน 11 ปี 1990 แต่ระบบจะเข้าใจว่าเป็นวันที่ 11 เดือน 25 ปี 1990 ซึ่งปัญหาคือเดือนที่ 25 ไม่มีอยู่จริงตามปฏิทิน ดังนั้นต้องแก้ไขทั้งสองคอลัมภ์ดังกล่าวให้มีรูปแบบวันที่ของข้อมูลตรงกับรูปแบบวันที่ของระบบก่อนครับ

    ก่อนจะแก้รูปแบบวันที่จะสร้าง sheet ใหม่ที่ชื่อว่า CLEAN_DATA แล้วใช้ฟังก์ชัน CHOOSECOLS เพื่อดึงข้อมูลทุกคอลัมภ์ที่ไม่ใช้คอลัมภ์ DOB และ EXP มาแปะไว้ที่ sheet ดังกล่าว

    ดึงคอลัมภ์ที่ต้องการจาก Range: Customer สู่ Sheet: CLEAN_DATA

    การแก้รูปแบบวันที่ขอเริ่มที่คอลัมภ์ DOB ครับ

    ผมเพิ่ม sheet ใหม่ที่ชื่อว่า DOB เขียนฟังก์ชัน QUERY เพื่อดึงข้อมูลคอลัมภ์ ID และ DOB

    จากนั้นบนหัวตารางจะเพิ่มคอลัมภ์ดังต่อไปนี้ได้แก่ Day , Month ,Year และ Date of Birth ตามลำดับ

    จากนั้นในส่วนของคอลัมภ์ Day, Month และ Year จะดึงข้อมูล “วัน”, “เดือน” และ “ปี” ตามลำดับ ของคอลัมภ์ DOB ด้วยการเขียนฟังก์ชัน DAY, MONTH และ YEAR ตามลำดับ

    ส่วนคอลัมภ์ Date of Birth จะเป็นคอลัมภ์วันเดือนปีเกิดใหม่ที่จะมีรูปแบบตรงกับระบบ โดยจะใช้ฟังก์ชัน DATE ดึงข้อมูลของสามคอลัมภ์ ได้แก่ Day, Month และ Year จะได้ข้อมูลรูปแบบ “ปี-เดือน-วัน” เรียบร้อยซึ่งจะสามารถนำไปใช้ในการวิเคราะห์ข้อมูลต่อได้โดยไม่ผิดพลาด ดังจะแสดงการเขียนฟังก์ชันดังต่อไปนี้

    แล้วผมจะตั้งชื่อ Range ที่ประกอบด้วยข้อมูล ID, DOB, Day, Month, Year และ Date of Birth ว่า DOB_TABLE ครับ

    Range : DOB_TABLE ของ sheet : DOB

    กลับมาที่ sheet: CLEAN_DATA จะทำการเพิ่มข้อมูลคอลัมภ์ Date of Birth แต่ทว่าข้อมูลดังกล่าวอยู่อีก Range หนึ่ง (DOB_TABLE จาก sheet: DOB)

    ดังนั้นใน sheet: CLEAN_DATA จะใช้ฟังก์ชัน VLOOKUP ดึงข้อมูล
    Date of Birth จาก DOB_TABLE โดยที่มีคอลัมภ์ ID ที่เป็นตัวเชื่อมระหว่าง ข้อมูลจาก Sheet: DOB และ CLEAN_DATA ดังจะแสดงต่อไปนี้

    Sheet: CLEAN_DATA เพิ่มคอลัมภ์ Date of BIrth
    โดยดึงข้อมูล Date of Birth จาก Range: DOB_TABLE ของ sheet: DOB

    สำหรับคอลัมภ์ EXP ที่จะต้องแก้ไข Format นั้น จะเพิ่ม Sheet: EXP ซึ่งจะมีวิธีทำเหมือนกับกรณีของคอลัมภ์ DOB ทุกประการ พร้อมตั้งชื่อ Range ของข้อมูลใน Sheet นี้ว่า EXP_TABLE

    Range: EXP_TABLE ของ sheet: EXP TABLE

    Sheet: CLEAN_DATA เพิ่มคอลัมภ์ Expired Date
    โดยดึงข้อมูล Expired Date จาก Range:EXP_TABLE ของ sheet: EXP

    จะเห็นได้ว่าจากข้อมูลที่เป็นข้อความยาวซึ่งนำไปใช้งานยาก เมื่อผ่านการทำ transformation ด้วยการใช้ฟังก์ชัน REGEXEXTRACT รวมไปถึงจัดการคอลัมภ์ Date ให้มี Format ที่ถูกต้องแล้ว เราก็จะได้ข้อมูลใน Sheet: CLEAN_DATA ที่สะอาดแล้วครับ

    แต่ทว่าข้อมูลที่เราต้องการสรุปให้เห็นภาพอย่าง การกระจายตัวของอายุและสถานะบัตร (หมดอายุ/ยังไม่หมดอายุ) ของแต่ละคนข้อมูลนี้ จำเป็นต้องมีตัวแปรอายุ และ สถานะของบัตรประจำตัวเสียซึ่งตอนนี้ยังขาดสองตัวแปรนี้ ต้องเพิ่มสองคอลัมภ์ใหม่ให้เรียบร้อยเสียก่อนครับ

    Create columns

    ในหัวข้อนี้ สำหรับ sheet: CLEAN_DATA จะเพิ่มคอลัมภ์อายุและสถานะบัตรประจำตัว โดยจะตั้งชื่อคอลัมภ์ว่า Age และ Card Status ตามลำดับโดยที่ Card Status จะเป็นตัวแปรเชิงกลุ่มแต่ละรายการมี 2 ค่า ค่าใดค่าหนึ่งได้แก่ Active (ยังไม่หมดอายุ) หรือ Expired (หมดอายุ)

    ใน Google sheets สามารถเขียนฟังก์ชันเพื่อสร้างสองคอลัมภ์ดังกล่าวได้ดังนี้

    การเพิ่มคอลัมภ์ Age ด้วยฟังก์ชัน Datediff สำหรับหาผลต่างระยะเวลา(ปี) ระหว่างวันที่ในข้อมูลและวันที่ในปัจจุบัน
    การเพิ่มคอลัมภ์ Card Status แบบมีเงื่อนไข

    ทั้งหมดที่เราจัดการข้อมูลชุดนี้พร้อมแล้วสำหรับนำไปทำ Report ใน Google Looker Studio แล้วครับ อย่าลืมตั้งชื่อไฟล์ก่อนนะครับโดยผมจะตั้งชื่อว่า “Project ID Card” ครับ

    Interactive Dashboard with Looker Studio

    ต่อไป ผมจะลองพาทุกคนสรุปข้อมูลเบื้องต้นด้วยการทำ Report บนเครื่องมือที่ชื่อว่า Google Looker Studio กันครับซึ่งเป็นเครื่องมือที่เหมาะสำหรับการทำ Dashboard ครับ

    ก่อนอื่นเราจะต้องทำการ Import data ที่สะอาดเรียบร้อยจาก Google Sheets ก่อนครับ

    ไปที่เว็บไซต์ของ Google Looker studio กด Blank Report

    กด Blank Report เพื่อสร้าง Report ใหม่

    จากนั้นระบบก็จะเด้งหน้า Add data to report เลือก Google sheet

    ในส่วนของ Spreadsheet เลือกไฟล์ที่ต้องการในที่นี้ให้เลือก Project ID Card จะปรากฏส่วนของ Worksheet เพิ่มเติม

    ในส่วนของ Worksheet ให้เลือกที่ sheet: CLEAN_DATA

    เลือก Spreadsheet: Project ID Card และ
    เลือก Worksheet: CLEAN_DATA

    เพียงเท่านี้ก็ขึ้นหน้า Report แล้วสามารถนำข้อมูลที่มีนำไปสรุปเป็น Pivot table หรือกราฟต่างๆได้ และสามารถทำได้หลายหน้าโดยผมจะสรุปข้อมูล Report 2 หน้า ได้แก่ Demographic และ Geographic มีลักษณะเป็น Interactive Dashboard ดังต่อไปนี้

    • หน้าที่ 1 : Demographic Analysis ข้อมูลเชิงประชากรศาสตร์ อันประกอบด้วย
      • การกระจายตัวของอายุ :
        • จากค่าเฉลี่ยอายุและกราฟฮิสโทแกรมบ่งบอกได้ว่าข้อมูลนี้ประกอบด้วยกลุ่มวัยทำงานเป็นส่วนมาก
      • สัดส่วนแบ่งตามเพศ :
        • ผู้ชายมีจำนวนมากกว่าผู้หญิงเล็กน้อย
      • สัดส่วนแบ่งตามสถานะบัตรประจำตัว :
        • ใน 100 คน มีผู้คนถึง 41 คนที่บัตรจำประตัวของเขาหมดอายุแล้ว
    • หน้าที่ 2 : Geographic Analysis ข้อมูลเชิงภูมิศาสตร์ อันประกอบด้วย
      • จำนวนประชากรในข้อมูลแบ่งตามประเทศ :
        • บ่งบอกได้ว่ากลุ่มเป้าหมายหลักของข้อมูลจำลองนี้เน้นไปที่ประชากรในประเทศ USA ซึ่งมีถึง 62 คนจาก 100 คน
      • จำนวนประชากรในข้อมูลแบ่งตามรัฐของประเทศ USA :
        • รัฐ Manhattan มีจำนวนประชากรในข้อมูลมากที่สุดถึง 11 คน

    ผู้อ่านสามารถลองเล่น Interactive Dashboard ด้วยการกดดู Result แต่ละหน้าของ report ได้ด้วยตนเองและถ้าต้องการดูข้อมูลที่เจาะจงมากขึ้น สามารถกดเลือกที่กล่อง Filter สีชมพูด้านขวามือครับ:

    Country: เจาะลึกลงไปในระดับประเทศ

    Gender: เลือกดูเฉพาะเพศที่สนใจ

    Card Status: เจาะลึกดูในส่วนของสถานะบัตรประจำตัว

    ………………………………………………………………………………………………………………..

    หวังว่าบทความนี้จะเป็นไอเดียให้ทุกคนนำไปปรับใช้กับข้อมูลของตนเองนะครับ ลองหยิบเอาเทคนิคการสกัดคำและทำ Report นี้ไปใช้ดู แล้วคุณจะพบว่า Insight ดีๆ ซ่อนอยู่ในข้อมูลรอบตัวเราเสมอ

  • Ecommerce Customer Behavior and Sales Analysis in Excel and R

    Ecommerce Customer Behavior and Sales Analysis in Excel and R

    สวัสดีครับทุกคน บทความนี้จะพาทุกคนตะลุยสู่โลกแห่ง Ecommerce

    ในบทความนี้จะพาทุกคนวิเคราะห์ประสิทธิภาพเชิงเปรียบเทียบของหมวดหมู่สินค้า เพื่อระบุปัจจัยที่ขับเคลื่อนรายได้ พฤติกรรมการซื้อของผู้บริโภค และมาตรฐานการบริการบนแพลตฟอร์ม Ecommerce

    โดยที่ผมจะใช้ Dataset ที่อ้างอิงจากเว็บไซต์ดังต่อไปนี้ครับ

    E-Commerce Customer Behavior & Sales Analysis -TR

    ก่อนอื่น ผมจะแนบลิ้ง GitHub ด้านล่างต่อไปนี้เพื่อให้ผู้อ่านบทความสามารถดาวน์โหลดไฟล์ต่างๆได้

    E-Commerce Customer Behavior & Sales Analysis project

    โดยด้านในจะแบ่งเป็น 3 โฟลเดอร์ ได้แก่

    • Dataset เก็บชุดข้อมูลที่โหลดมาจาก Kaggle
    • Excel – Analysis เก็บไฟล์การวิเคราะห์ข้อมูลและการนำเสนอข้อมูลด้วยเครื่องมือ Excel
    • Hypothesis with R เก็บไฟล์สำหรับการทดสอบสมมติฐานด้วยการเขียนโปรแกรมภาษา R

    ชุดข้อมูลที่ครอบคลุมนี้ประกอบด้วยธุรกรรมอีคอมเมิร์ซ 5,000 รายการจากแพลตฟอร์มค้าปลีกออนไลน์ของตุรกี ครอบคลุมช่วงตั้งแต่เดือนมกราคม 2023 ถึงเดือนมีนาคม 2024 ชุดข้อมูลมีรายละเอียดเกี่ยวกับข้อมูลประชากรของลูกค้า พฤติกรรมการซื้อ พฤติกรรมการใช้แพลตฟอร์ม และความพึงพอใจสินค้าจากลูกค้า

    โดยคร่าวๆ ในส่วนของการวิเคราะห์ข้อมูลผมจะแบ่งเป็น 4 ส่วนได้แก่

    1. ภาพรวมของธุรกิจ : สำรวจข้อมูลเบื้องต้น เช่น หาปริมาณที่ขายได้ ,ยอดขายที่ได้รับทั้งหมดจากลูกค้า ,จำนวนออเดอร์ และอื่นๆ
    2. ราคาสินค้า & การเติบโตของธุรกิจ : โดยจะเน้นที่พิจารณาปริมาณการสั่งซื้อและยอดขายรวมทั้งหมดแบ่งตามหมวดหมู่สินค้า รวมไปถึงวิเคราะห์เรื่องราคาสินค้าและส่วนลดของสินค้า
    3. พฤติกรรมของลูกค้า : ศึกษาความแตกต่างพฤติกรรมของลูกค้าในแง่มุมต่างๆจำแนกตามหมวดหมู่สินค้า ไม่ว่าจะเป็นค่าใช้จ่าย , ปริมาณการซื้อ, การใช้แพลตฟอร์ม และในส่วนนี้จะมีการทดสอบสมมติฐานทางสถิติเพิ่มเติมด้วย
    4. คะแนนความพึงพอใจของลูกค้า : ศึกษาความแตกต่างของความพึงพอใจแต่ละหมวดของสินค้าที่ได้รับจากลูกค้า พร้อมทั้งทดสอบสมมติฐานทางสถิติ

    โดยต่อไปนี้ผมจะอธิบายการ import data การทำความสะอาดข้อมูลเบื้องต้น การวิเคราะห์ข้อมูลทั้งเบื้องต้นและเชิงลึก โดยใช้โปรแกรม Excel และจะมีการทดสอบสมมติฐานทางสถิติโดยเขียนโปรแกรมภาษา R เพื่อทดสอบความแตกต่างของค่าเฉลี่ย ปิดท้ายที่การสรุป Insight และ Recommendations นะครับ

    Transform data and Import data

    ในส่วนนี้ผมจะทำการ Get data แล้วเช็คความสะอาดของข้อมูลก่อน ถ้าข้อมูลยังไม่สะอาดก็จะทำความสะอาดข้อมูลให้เรียบร้อย รวมไปถึงผมจะเพิ่มคอลัมภ์ใหม่อย่าง Discount(%) เพื่อนำไปใช้ในการวิเคราะห์ต่อๆไปด้วยครับ

    Get data ไฟล์ csv

    เริ่มจากเปิดโปรแกรม Excel จะทำการ Get Data ด้วยการไปที่ แถบ Data
    –> Get Data –> From File –> From Text/CSV แล้วเลือกไฟล์ที่โหลดมาจาก kaggle ก่อนหน้านี้ครับ

    คลิก Transform Data เพื่อจัดการข้อมูลใน Power Query

    เมื่อขึ้นหน้านี้ ผมจะคลิกที่ Transform data โปรแกรมจะพาไปที่ Power Query เพื่อเช็คความสะอาดของข้อมูล ไม่ว่าจะดูเรื่องของ Data type , Missing values ค่าที่หายไป หรือ Duplicate ความซ้ำกันของข้อมูลมากกว่า 1 แถวก็ตาม ถ้าพบเจอจะทำความสะอาดข้อมูลให้เรียบร้อยก่อนใน Power Query เพื่อนำไปวิเคราะห์ต่อใน Excel ได้ครับ

    เมื่อขึ้นมาหน้า Power Query แล้วผมจะอธิบายขั้นตอนต่อไปนี้

    Check Data Type

    ตรวจสอบชนิดข้อมูลของแต่ละคอลัมภ์ว่าเหมาะสมกับข้อมูลในคอลัมภ์นั้นไหม ซึ่งเท่าที่ดูพบว่าแต่ละคอลัมภ์มี data type ที่ถูกต้องแล้ว

    Blank Rows

    เราไม่ทราบว่าข้อมูลนี้มีแถวที่ว่างทั้งแถวหรือไม่ คือ ไม่มีข้อมูลในแถวนั้น เราจะทำการไฮไลต์ทั้งตารางข้อมูล แล้วไปที่ Home เลือก Remove Rows –> Remove Blank rows เพียงเท่านี้แถวที่ว่างก็จะหายไปแล้ว (กรณีที่มี Blank row)

    ลบแถวที่ว่างทั้งแถวด้วย Remove Blank Rows

    Duplicates Rows

    จะทำการไฮไลต์ทั้งตารางข้อมูล แล้วไปที่ Home เลือก Remove Rows –> Remove Duplicates เพียงเท่านี้ข้อมูลแถวที่ซ้ำกับข้อมูลแถวอื่นก็จะถูกกำจัดไป (กรณีที่มี Duplicates Rows ) ก็จะเหลือข้อมูลแต่ละแถวที่ไม่ซ้ำกัน

    ลบแถวที่มีข้อมูลซ้ำกับแถวอื่นด้วย Remove Duplicates

    Missing values

    สามารถเช็คคร่าวๆ ได้ด้วยการดูที่ Empty ของแต่ละคอลัมภ์ ถ้าคอลัมภ์ไหน Empty ไม่เท่ากับ 0% แสดงว่าคอลัมภ์นั้นมีค่าว่างเกิดขึ้นและจะต้องหาสาเหตุ ในที่นี้ Empty = 0% ทุกคอลัมภ์แสดงว่าชุดข้อมูลนี้ไม่มี Missing values

    ตัวอย่างในส่วนของ Total_Amount
    ไม่มีข้อมูลที่หายไป

    เพียงเท่านี้ก็ตรวจสอบความสะอาดของข้อมูลเรียบร้อย พบว่าข้อมูลพร้อมต่อการใช้งาน

    Create columns

    ก่อนที่จะ Import เข้า Excel ผมจะเพิ่มคอลัมภ์ Level Age และ Discount(%) ก่อนครับ

    จะอธิบายถึงการสร้างคอลัมภ์ Discount(%) ก่อนนะครับ

    ก่อนอื่น ต้องทราบว่า

    Discount(%) = Discount_Amount / Total amount before discount

    โดยที่เรามีคอลัมภ์ที่เป็น Discount_Amount คือราคาส่วนลด ส่วน Total amount before discount (tabd) คือยอดขายของแต่ละ row ที่ยังไม่ได้หักด้วยราคาส่วนลด ซึ่งยังไม่ทราบ ดังนั้น เราจำเป็นต้องสร้างคอลัมภ์ tabd ขึ้นมาก่อน

    (หมายเหตุ Total_Amount ที่ปรากฎบน dataset คือยอดที่หักด้วย Discount_Amount แล้ว)

    โดยที่

    Total_Amount_Before_Discount = Unit_Price * Quantity

    วิธีการไปที่ Add column –> Custom column

    การเพิ่ม Custom column

    จากนั้น ตรง New column name ให้ทำการตั้งชื่อคอลัมภ์และเขียนสูตรคำนวณ ดังที่ได้แสดงในภาพด้านล่างนี้ จากนั้นคลิกปุ่ม OK

    การตั้งชื่อคอลัมภ์ของ tabd พร้อมใส่สูตรคำนวณ

    จากนั้นในทำนองเดียวกันสร้างคอลัมภ์ Discount(%) ตั้งชื่อคอลัมภ์และเขียนสูตรคำนวณจากนั้น คลิกปุ่ม OK

    การตั้งชื่อคอลัมภ์ของ Discount(%) พร้อมใส่สูตรคำนวณ

    จะได้ 2 คอลัมภ์ใหม่ปรากฎบนตาราง ทำการเปลี่ยนชนิดข้อมูลให้เรียบร้อย

    ต่อไปนี้จะเพิ่มคอลัมภ์ Level Age (กลุ่มอายุ) กันบ้างครับ

    จาก data set เรามีแต่คอลัมภ์ Age ถ้าอยากแบ่งกลุ่มอายุตามเงื่อนไข ต้องเพิ่มคอลัมภ์แบบมีเงื่อนไขขึ้นมาครับ ให้ไปที่
    Add column –> conditional columns แล้วตั้งชื่อคอลัมภ์ว่า Level_Age กำหนดเงื่อนไขของอายุ เพื่อแบ่งกลุ่มตามช่วงอายุให้เรียบร้อย ดังแสดงในภาพด้านล่างนี้ แล้วคลิกปุ่ม OK

    การเพิ่ม Conditional column
    ตั้งชื่อคอลัมภ์ Level_Age พร้อมกับแบ่งกลุ่มตามช่วงอายุด้วยการใส่เงื่อนไข

    เมื่อจัดการข้อมูลและเพิ่มคอลัมภ์เรียบร้อยแล้ว หลังจากนั้นเราจะทำการ Import data ที่ถูกแก้ไขแล้วลงใน Excel ด้วยการไปที่แถบ
    Home –> Close & Load เพียงเท่านี้ก็จะได้ข้อมูลปรากฏใน Excel เรียบร้อย

    ต่อจากนี้จะเริ่มสำรวจข้อมูลเบื้องต้นและวิเคราะห์ข้อมูลกันนะครับผม

    Descriptive Analysis

    ในส่วนนี้จะวิเคราะห์ข้อมูลด้วยการสรุปและอธิบายข้อมูลกับสิ่งที่เกิดขึ้นในอดีต ไล่ตั้งแต่ภาพรวมของธุรกิจ การเติบโตของธุรกิจ และศึกษาพฤติกรรมของลูกค้าต่างๆ โดยจะโฟกัสที่ปัจจัยด้านหมวดหมู่สินค้าเป็นหลัก

    โดยหัวข้อนี้ผมจะแบ่งเป็น 4 พาร์ทได้แก่

    Part 1 : Introduction ภาพรวม

    Part 2 : Price & Business Size ราคาสินค้าและการเติบโตของธุรกิจ

    Part 3 : Customer Behavior & Customer Rating พฤติกรรมการการซื้อขาย การใช้แพลตฟอร์มของลูกค้า และคะแนนความพึงพอใจของลูกค้า

    โดยการวิเคราะห์ข้อมูลผมจะมีทั้งแบบเขียนสูตรฟังก์ชันคำนวณ หรือทำ Pivot Table แล้วทำ Pivot Chart เพื่อนำเสนอข้อมูลครับ

    Part 1 : Introduction to Analysis

    ในพาร์ทแรกจะทำการสรุปข้อมูลเบื้องต้น เริ่มจากหาจำนวน Order จำนวนลูกค้า ผลรวมยอดขาย ผลรวมปริมาณที่ขายได้ ค่าเฉลี่ยราคาสินค้า และอื่นๆ เพื่อทำความเข้าใจภาพรวมเบื้องต้น

    โดยจะโชว์ Result ดังต่อไปนี้ครับ

    ภาพรวมของธุรกิจ

    จากข้อมูลตารางด้านบนนี้ 1 ออเดอร์เป็นของลูกค้า 1 คนที่ซื้อสินค้า 1 หมวดหมู่

    ภาพที่ 1.1 แสดงการกระจายตัวของยอดขาย (ความถี่ในแต่ละช่วงยอดขาย)

    ภาพที่ 1.2 แสดงจำนวนออเดอร์แยกตามปริมาณที่ขายได้

    ในหนึ่งออเดอร์จะสามารถขายสินค้าให้ลูกค้าได้ส่วนมาก 1 – 2 ชิ้น

    ภาพที่ 1.3 แสดงการกระจายตัวของราคาสินค้า (ความถี่ในช่วงราคาต่างๆ)

    ต่อไปจะหาระดับความสัมพันธ์ของ 2 ตัวแปร โดยที่ตัวแปรเป็นประเภท Numeric นะครับ

    จากตาราง Correlation matrix มีเพียงคู่ตัวแปร Unit_Price กับ Total_Amount ที่มีความสัมพันธ์กันเชิงบวกค่อนข้างสูงที่ระดับ r = 0.791 เพื่อให้เห็นภาพจะแสดงกราฟ Scatter plot ครับ

    ภาพที่ 1.4 แสดงความสัมพันธ์ระหว่างราคาสินค้าและยอดขาย

    จากกราฟความสัมพันธ์ระหว่าง ราคาสินค้า (Unit_Price) และ ยอดขาย (Total_Amount) พบว่า ความสัมพันธ์เชิงบวกค่อนข้างสูง บ่งบอกว่าถ้าราคาสินค้าของออเดอร์ใดสูงค้าสูงขึ้นก็มีแนวโน้มที่สินค้านั้นทำยอดขายได้สูงกว่าสินค้าที่มีราคาต่ำ

    ภาพที่ 1.5 แสดงจำนวนที่ลูกค้าให้คะแนนแต่ละระดับความพึงพอใจ

    ธุรกิจนี้โดยรวมค่อนข้างเป็นที่น่าพอใจสำหรับลูกค้าโดยพิจารณาจากคะแนนความพึงพอใจจากลูกค้าที่ส่วนมากลูกค้าให้คะแนนที่ระดับ 4 – 5 รวมกันมากกว่า 3500 ออเดอร์

    Part 2 : Business Size

    พาร์ทนี้ จะดูการเติบโตของธุรกิจ โดยพิจารณาจากยอดขายรวมทั้งหมด ยอดสั่งซื้อรวม พิจารณายอดขายแบบรายเดือน รวมไปถึงราคาเฉลี่ยและส่วนลดเฉลี่ยสินค้าจำแนกตามหมวดหมู่สินค้า

    โดยจะโชว์ Result ดังต่อไปนี้

    ภาที่ 2.1 ค่าเฉลี่ยของราคาสินค้าและเปอร์เซนส่วนลดของสินค้า จำแนกตามหมวดหมู่สินค้า
    ภาพที่ 2.2 จำนวนออเดอร์ ปริมาณที่ขายได้ทั้งหมดและยอดขายรวมทั้งหมด จำแนกตามหมวดหมู่สินค้า
    ภาพที่ 2.3 ซ้ายมือแสดงยอดขายรวมรายเดือน และ ทางขวามือแสดงยอดขายรวมรายเดือนที่แบ่งตามหมวดหมู่สินค้าโดยโชว์ข้อมูลหมวดหมู่สินค้าที่ ติด Top 5 ที่ทำยอดขายรวมตลอดช่วงเวลาได้สูงสุด

    สิ่งที่ค้นพบ

    • ราคาสินค้าเฉลี่ย แปรผันตาม ยอดขายเฉลี่ย
    • ยอดขายรวมทั้งหมดรายเดือนมีขึ้นลงบ้างแต่โดยรวมมีแนวโน้มค่อนข้างคงที่ แต่ถ้าพิจารณาแยกตามหมวดหมู่สินค้าด้วยพบว่า Electronics มีความผันผวนของยอดขายมากกว่าหมวดหมู่สินค้าอื่นๆ
    • หมวดหมู่ Electronics เป็นหมวดหมู่ที่มีอิทธิพลต่อการเติบโตของธุรกิจมากสุดเนื่องจากทำยอดขายรวมทั้งหมดได้ดีกว่ากลุ่มอื่นๆทุกๆเดือน โดยมียอดทั้งหมดประมาณ 2.3M TRY อันมาจากราคาสินค้าเฉลี่ยประมาณ 1750 TRY ซึ่งสูงกว่าหมวดสินค้าอื่นมาก
    • หมวดหมู่ Books ที่ทำยอดขายได้น้อยสุดเพียง 73k TRY ปริมาณที่ขายได้ก็น้อยสุดอยู่ที่ 1.2k ชิ้นแต่สินค้าหมวดหมู่นี้กลับมีเปอร์เซนส่วนลดที่สูงที่สุดที่ร้อยละ 3.60
    • หมวดหมู่ Sports น่าสนใจคือ ปริมาณที่ขายได้อยู่ที่ 1.52k ชิ้นซึ่งมากกว่าทุกหมวดหมู่ที่เหลือ

    Part 3 : Customer Behavior & Customer Rating

    พาร์ทนี้จะพิจารณาพฤติกรรมการซื้อสินค้าจากลูกค้าและการใช้แพลตฟอร์มการซื้อของออนไลน์จากลูกค้า โดยหลักๆจะพิจารณาแยกตามหมวดหมู่สินค้า และจะมีตัวแปรกลุ่มอีก 4 ตัวแปรที่จะนำมาวิเคราะห์ร่วมด้วยได้แก่ ประเภทลูกค้า(False ไม่เคยกลับมาซื้อซ้ำ / True เคยกลับมาซื้อซ้ำ) ,
    เพศของลูกค้า , ช่วงอายุของลูกค้า และเมืองที่ลูกค้าอาศัย

    หมายเหตุ : ในส่วนของกราฟที่วิเคราะห์โดยจำแนกตามช่วงอายุและเมืองที่ลูกค้าอาศัย จะไม่ได้แสดงในบทความนี้ แต่มีอยู่ในไฟล์ซึ่งอยู่ในลิ้ง GitHub ที่แนบด้านบนนะครับ

    Customer Behavior

    ในส่วนแรกจะอธิบายเกี่ยวกับพฤติกรรมทั้งการซื้อและการใช้แพลตฟอร์มออนไลน์นะครับ

    ภาพที่ 3.1 ค่าเฉลี่ยของปริมาณสินค้าที่ลูกค้าซื้อ และ ค่าใช้จ่ายที่ลูกค้าซื้อ (ต่อออเดอร์) แบ่งตามหมวดหมู่สินค้า
    ภาพที่ 3.2 ค่าใช้จ่ายเฉลี่ย (ต่อออเดอร์) แบ่งตามหมวดหมู่สินค้าและประเภทลูกค้า (เคยซื้อซ้ำ / ไม่เคยซื้อซ้ำ)
    ภาพที่ 3.3 ค่าใช้จ่ายเฉลี่ย (ต่อออเดอร์)แบ่งตามหมวดหมู่สินค้าและเพศของลูกค้า

    ปริมาณที่ขายสินค้าต่อออเดอร์

    • แต่ละประเภทสินค้าลูกค้าจะซื้อสินค้าประมาณ 2 – 3 ชิ้นต่อออเดอร์

    ยอดขายต่อออเดอร์

    • สินค้า Electronics มีผลต่อการขับเคลื่อนธุรกิจสูงเพราะ สามารถทำยอดขายเฉลี่ยได้ประมาณ 3700 TRY ต่อออเดอร์ ซึ่งสูงกว่าของสินค้าประเภทอื่นมาก
    • เมื่อนำปัจจัยประเภทลูกค้ามาพิจารณาร่วมกับประเภทสินค้า พบว่าพฤติกรรมของลูกค้าที่เคยซื้อซ้ำ (True) และลูกค้าที่ไม่เคยซื้อซ้ำ(False) ในการใช้จ่ายเงินซื้อสินค้า [Total_Amount] ประเภทเดียวกันนั้นไม่ค่อยแตกต่างกันมากนัก
    • เมื่อนำปัจจัยต่างๆ ที่เกี่ยวข้องกับข้อมูลลูกค้าไม่ว่าจะเป็นเพศ / ช่วงอายุ / พื้นที่ที่ลูกค้าอายุ มาพิจารณาร่วมกับประเภทสินค้า ก็พบว่าปัจจัยเหล่านั้นก็ไม่ค่อยมีผลมากนักต่อการใช้จ่ายเงินซื้อสินค้าประเภทเดียวกัน

    ภาพที่ 3.4 ค่าเฉลี่ยของจำนวนเวลา (นาที) ที่ลูกค้าใช้แพลตฟอร์มและจำนวนหน้าที่ลูกค้าเข้าชมในแพลตฟอร์ม
    ภาพที่ 3.5 จำนวนออเดอร์ที่ลูกค้าใช้อุปกรณ์ต่างๆในการเข้าชมแพลตฟอร์มและซื้อสินค้า

    พฤติกรรมการใช้แพลตฟอร์มออนไลน์

    • ปัจจัยประเภทสินค้า ไม่ค่อยมีผลกับพฤติกรรมแพลตฟอร์มเท่าไหร่ไม่ว่าจะเป็นจำนวนเวลาที่ใช้งาน หรือ จำนวนหน้าที่ลูกค้าค้นหา
    • ไม่ว่าลูกค้าจะช้อปสินค้าอะไร ก็ไม่ได้มีผลกับอุปกรณ์ที่ลูกค้าใช้โดยที่ลูกค้าส่วนมากใช้อุปกรณ์ Moblie รองลงมาคือ Desktop และ Tablet ตามลำดับ

    ภาพที่ 3.6 สัดส่วนวิธีการชำระเงิน ของลูกค้าที่ซื้อสินค้าหมวดหมู่ Electronics

    วิธีชำระเงิน

    • สำหรับวิธีการชำระเงิน ผมพิจารณากรณีที่ลูกค้าซื้อ Electronics พบว่า ออเดอร์จำนวนมากลูกค้านิยมชำระเงินด้วยวิธี Credit Card มากถึง 40 % ของออเดอร์ทั้งหมด

    Customer Rating

    ต่อไปจะพิจาณาในส่วนของคะแนนความพึงพอใจของลูกค้ากันครับ

    ภาพที่ 3.7 คะแนนความพึงพอใจจากลูกค้าเฉลี่ย จำแนกตามหมวดหมู่สินค้า
    ภาพที่ 3.8 ซ้ายมือแสดงคะแนนความพึงพอใจเฉลี่ยจำแนกตามประเภทลูกค้า (True/False)
    ขวามือแสดงคะแนนความพึงพอใจเฉลี่ยจำแนกตามเพศลูกค้า
    • คะแนนความพึงพอใจ
      • โดยเฉลี่ยแล้วธุรกิจนี้ได้รับความพึงพอใจจากลูกค้าจำแนกตามประเภทสินค้า ไม่ได้แตกต่างกันมาก ราวๆระดับ 3.8 – 4.0
      • Books เป็นหมวดหมู่สินค้าที่โดยเฉลี่ยลูกค้าพึงพอใจมากสุดที่ระดับ 3.97

    Hypothesis Testing

    จากหัวข้อที่ผ่านมา ในส่วนของการวิเคราะห์พฤติกรรมของลูกค้า โดยปัจจัยหลักที่นำมาพิจารณาคือหมวดหมู่สินค้าที่ลูกค้าซื้อ พบว่ามีเพียงเรื่องค่าใช้จ่ายสำหรับซื้อสินค้าเฉลี่ย (ต่อออเดอร์) ที่มีความแตกต่างกันอย่างเห็นได้ชัดที่เจนที่สุด ส่วนเรื่องปริมาณการซื้อเฉลี่ย รวมไปถึงพฤติกรรมการใช้แพลตฟอร์มออนไลน์ และระดับความพึงพอใจแต่ละหมวดหมู่จะค่อนข้างใกล้เคียงกัน

    แต่ก่อนหน้านี้เราศึกษาเพียงข้อมูลเท่าที่มีเท่านั้นซึ่งเป็นข้อมูลตัวอย่าง ดังนั้นการจะสรุปผลกลับไปยังข้อมูลประชากรนั้นว่า ค่าใช้จ่ายเฉลี่ย ปริมาณการซื้อสินค้า จำนวนเวลาและจำนวนหน้าที่ลูกค้าช็อปปิ้ง และคะแนนความพึงพอใจเฉลี่ย แต่ละหมวดหมู่สินค้าแตกต่างอย่างมีนัยสำคัญหรือไม่นั้น เราจะต้องทำการทดสอบสมมติฐาน ที่ชื่อว่า Anova single factor ในที่นี้จะทดสอบที่ระดับนัยสำคัญ α = 0.05 นะครับ

    โดยที่จะตั้ง Null Hypothesis (H0) และ Alternative Hypothesis (H1) ดังนี้ครับ

    H0 : μ1 = μ2 = … = μk (ค่าเฉลี่ยทุกหมวดหมู่สินค้าไม่แตกต่างกัน)

    H1 : μi ≠ μj for some i,j (มีอย่างน้อย 2 หมวดหมู่ที่มีค่าเฉลี่ยแตกต่างกัน)

    จะเขียนภาษา R เพื่อทดสอบสมมติฐาน เมื่อได้ Result มาแล้วให้อ่านค่าของ Pr(>F) ซึ่งก็คือค่า p – value นั่นเอง

    • ถ้า p – value <= 0.05 จะ Reject H0 นั่นคือสรุปว่า มีอย่างน้อย 2 หมวดหมู่ที่มีค่าเฉลี่ยไม่เท่ากัน
    • ถ้า p – value > 0.05 จะสรุปว่า Fail to Reject H0 นั่นคือสรุปว่า ค่าเฉลี่ยทุกหมวดหมู่สินค้าเท่ากัน

    Total amount

    มาเริ่มที่ทดสอบค่าเฉลี่ยของค่าใช้จ่ายกันนะครับ จะสามารถตั้ง Hypothesis ได้ ดังนี้

    H0 : ค่าเฉลี่ยของค่าใช้จ่ายในการซื้อสินค้าทุกหมวดหมู่สินค้าไม่แตกต่างกัน

    H1 : มีอย่างน้อย 2 หมวดหมู่สินค้าที่มีค่าใช้จ่ายในการซื้อสินค้าแตกต่างกัน

    การเขียนโค้ดเพื่อทดสอบความแตกต่างของค่าใช้จ่ายในการซื้อสินค้าแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของค่าใช้จ่ายแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value <= 0.05 สรุปได้ว่า Reject H0 คือมีอย่างน้อย 2 หมวดหมู่ที่มีค่าใช้จ่ายในการซื้อสินค้าต่อออเดอร์แตกต่างกันอย่างมีนัยสำคัญทางสถิติ

    Quantity

    H0 : ค่าเฉลี่ยของปริมาณการซื้อสินค้าทุกหมวดหมู่สินค้าไม่แตกต่างกัน

    H1 : มีอย่างน้อย 2 หมวดหมู่สินค้าที่มีปริมาณการซื้อสินค้าแตกต่างกัน


    การเขียนโค้ดเพื่อทดสอบความแตกต่างของปริมาณการซื้อสินค้าแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของปริมาณการซื้อสินค้าแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value > 0.05 สรุปได้ว่า Fail to Reject H0 คือ ทุกหมวดหมู่สินค้ามีปริมาณการซื้อสินค้าต่อออเดอร์ไม่แตกต่างกัน

    Session duration minutes

    H0 : ลูกค้าใช้เวลาช้อปปิ้งสินค้าเฉลี่ยของทุกหมวดหมู่สินค้าไม่แตกต่างกัน

    H1 : มีอย่างน้อย 2 หมวดหมู่ที่ลูกค้าใช้เวลาช้อปปิงสินค้าเฉลี่ยแตกต่างกัน

    การเขียนโค้ดเพื่อทดสอบความแตกต่างของระยะเวลาการใช้งานแพลตฟอร์มแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของระยะเวลาการใช้งานแพลตฟอร์มแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value > 0.05 สรุปได้ว่า Fail to Reject H0ไม่ว่าลูกค้าจะช้อปสินค้าหมวดไหน จำนวนเวลาที่ลูกค้าช้อปปิ้งไม่แตกต่างกัน

    Page viewed

    H0 : ไม่ว่าจะช้อปสินค้าหมวดไหน ลูกค้าก็เปิดดูด้วยจำนวนหน้าที่เข้าชมระหว่างเซสชันเฉลี่ยพอๆ กัน

    H1 : มีอย่างน้อย 2 หมวดหมู่ที่ลูกค้าเปิดดูด้วยจำนวนหน้าที่เข้าชมระหว่างเซสชันเฉลี่ยต่างกัน

    การเขียนโค้ดเพื่อทดสอบความแตกต่างของจำนวนหน้าที่ลูกค้าช้อปสินค้าแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของจำนวนหน้าที่ลูกค้าช้อปสินค้าแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value > 0.05 สรุปได้ว่า Fail to Reject H0 คือไม่ว่าจะช้อปสินค้าหมวดไหนลูกค้าก็จะเปิดดูหน้าในแอปด้วยจำนวนหน้าเฉลี่ยไม่แตกต่างกัน

    Customer rating

    H0 : ค่าเฉลี่ยของคะแนนความพึงพอใจทุกหมวดหมู่สินค้าไม่แตกต่างกัน

    H1 : มีอย่างน้อย 2 หมวดหมู่สินค้าที่มีคะแนนความพึงพอใจเฉลี่ยแตกต่างกัน

    การเขียนโค้ดเพื่อทดสอบความแตกต่างคะแนนความพึงพอใจแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของคะแนนความพึงพอใจแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value > 0.05 สรุปได้ว่า Fail to Reject H0 คือ ทุกหมวดหมู่สินค้ามีค่าเฉลี่ยของคะแนนความพึงพอใจที่ไม่แตกต่างกัน

    ผมจะทดสอบอีกอย่างด้วยนะครับ คือทดสอบว่าปัจจัยหมวดหมู่สินค้ามีผลต่อระยะเวลาที่ใช้ในการดำเนินการจัดส่งสินค้าให้ลูกค้าหรือไม่ ดังจะแสดงดังต่อไปนี้

    H0 : ไม่ว่าจะจัดส่งสินค้าหมวดไหน ใช้เวลาในการดำเนินการจัดส่งเท่ากัน

    H1 : ระยะเวลาการจัดส่งสินค้าอย่างน้อย 2 หมวดหมู่ที่ไม่เท่ากัน

    การเขียนโค้ดเพื่อทดสอบความแตกต่างระยะเวลาการจัดส่งสินค้าแยกตามหมวดหมู่สินค้า
    ผลการทดสอบความแตกต่างของระยะเวลาการจัดส่งสินค้าแยกตามหมวดหมู่สินค้า

    ผลการทดสอบพบว่าค่า p – value > 0.05 สรุปได้ว่า Fail to Reject H0 มีอย่างน้อย 2 หมวดหมู่สินค้าที่มีระยะเวลาการจัดส่งที่ไม่เท่ากัน

    สรุปทั้งหมดได้ว่า ปัจจัยอย่างหมวดหมู่สินค้ามีผลเพียงยอดขายเท่านั้นอย่างมีนัยสำคัญทางสถิติ อันเนื่องมาจากราคาสินค้าแต่ละหมวดหมู่มีความแตกต่างกัน

    Summary Insight and Recommendation

    Summary Insight

    ธุรกิจนี้สามารถรักษามาตรฐานคุณภาพสินค้าทุกๆหมวดหมู่ได้อย่างเท่าเทียมกันอย่างสม่ำเสมอ มีระบบหลังบ้านที่ดีเพราะ

    • ยอดขายรายเดือนมีแนวโน้มคงตัว
    • ทุกหมวดหมู่ใช้เวลาการจัดส่งพอๆกัน
    • ทุกหมวดหมู่สินค้ามีคะแนนความพึงพอใจจากลูกค้าที่พอๆกันเฉลี่ยที่ระดับราวๆ 3.8 -4.0 ซึ่งไม่ได้แตกต่างกันอย่างมีนัยสำคัญทางสถิติ

    สินค้าทุกหมวดหมู่เป็นที่ต้องการจากลูกค้าใกล้เคียงกัน

    ทุกหมวดหมู่สินค้ามีส่วนลดเฉลี่ยแก่ลูกค้าด้วยร้อยละที่ใกล้เคียงกัน ช่วงราวๆ ร้อยละ 2.5 – 4.0 บ่งบอกได้ว่าแพลตฟอร์มไม่ได้อยู่ในภาวะช่วง “สงครามราคา” แต่ขายได้ด้วยความต้องการจริงๆของลูกค้า

    Electronics เป็นสินค้าหมวดหมู่ที่เป็นฟันเฟืองสำคัญในการสร้างยอดขายโดยมียอดขายเฉลี่ยที่ 3700 TRY ต่อออเดอร์ อันเนื่องมาจากราคาสินค้าที่สูงกว่าหมวดอื่นๆ และ เมื่อทดสอบสมมติฐานก็พบว่าปัจจัยอย่างหมวดหมู่สินค้า มีผลอย่างมีนัยสำคัญกับยอดขายเฉลี่ยของสินค้าที่แตกต่างกัน

    Books เป็นสินค้าที่มีปริมาณที่ขายได้รวมน้อยสุดและมีส่วนลดสูงที่สุด (3.60%)

    ปัจจัยอื่นๆอย่าง กลุ่มลูกค้าที่แบ่งตาม ประเภทลูกค้า (เคยซื้อซ้ำ/ ไม่เคยซื้อซ้ำ) หรือ แบ่งตามเพศ หรือ ช่วงอายุลูกค้า หรือ เมืองที่ลูกค้าอาศัยมา จากการวิเคราะห์เบื้องต้นพบว่าปัจจัยเหล่านั้นไม่ได้มีผลมากนักกับพฤติกรรมการใช้จ่ายของลูกค้า

    ลูกค้าส่วนมากเลือกใช้วิธีชำระเงินด้วย Credit card สำหรับลูกค้าที่ซื้อ Electronics มีจำนวนที่เลือกชำระด้วยวิธีดังกล่าวร้อยละประมาณ 40

    อุปกรณ์ที่ถูกเลือกใช้มากที่สุดในการใช้แพลตฟอร์มคือ Mobile

    Recommendations

    เพิ่มสัดส่วนประเภทลูกค้า True (ให้ลูกค้าที่ยังไม่เคยซื้อซ้ำ มาซื้อซ้ำอีก)

    • สำหรับ Electronics ที่มียอดขายสูงแนะนำให้ทำระบบ Next-Step Offer เช่นถ้าลูกค้าซื้อสมาร์ทโฟนแล้ว ภายใน 30 วัน ต้องให้ส่วนลดกับลูกค้าเพื่อให้สิทธิ์แก่ลูกค้าในการซื้ออุปกรณ์เสริมหรือสินค้าหมวดอื่นๆ เพื่อดึงดูดให้ลูกค้ากลุ่ม False กลับมาซื้อสินค้าอีกและลดต้นทุนการหาลูกค้าใหม่
    • สำหรับสินค้าที่ใช้แล้วหมดไป อย่างเช่น Food, Beauty ควรมีระบบแจ้งเตือนลูกค้าในแพลตฟอร์มให้ซื้อซ้ำตามรอบใช้งาน

  • Restaurant Tips analytics with Google Sheets

    Restaurant Tips analytics with Google Sheets

    สวัสดีครับ บทความนี้จะมาอธิบายและนำเสนอข้อมูลด้วย chart เกี่ยวกับพฤติกรรมของลูกค้าที่เข้ามารับประทานอาหารแห่งหนึ่ง โดยข้อมูลแต่ละแถวจะเป็นข้อมูลของกลุ่มลูกค้าที่เข้ามารับประทานอาหารร่วมกันแต่ละโต๊ะอาหาร

    • sex เพศของผู้จ่ายค่าบิลนั้น
    • smoker กลุ่มลูกค้าแต่ละกลุ่มที่มารับประทานอาหารด้วยกันมีคนสูบบุหรี่หรือไม่ (Yes ใช่ , No ไม่ใช่)
    • day วันในสัปดาห์ (Thur พฤหัส , Fri ศุกร์ , Sat เสาร์ , Sun อาทิตย์)
    • time เวลา (Lunch กลางวัน , Dinner เย็น)
    • size จำนวนลูกค้าของแต่ละกลุ่มที่มาด้วยกัน
    • total_bill ยอดบิลทั้งหมดของแต่ละกลุ่ม
    • tip ยอดทิปที่ลูกค้าให้

    ส่วนคอลัมภ์สุดท้ายเป็นคอลัมภ์ที่เพิ่มมาเอง คือ tip_percentage เป็นอัตราส่วนของทิปเทียบกับยอดบิล

    โดยผมจะแปะ result จากการวิเคราะห์ข้อมูลด้วย google sheet ดังนี้

    Restaurant tips analytics with google sheet

    โดยที่ Sheet ที่ 1 จะเป็น tips data คือข้อมูลดิบไฟล์ csv ส่วน Sheet ที่เหลือจะเป็น ไม่ว่าจะเป็นการสำรวจข้อมูลด้วยการสร้างการ chart เพื่อดูรูปแบบการแจกแจงของข้อมูลบางคอลัมภ์ การดูความสัมพันธ์ของตัวเลขสองตัวแปร หรือ การทำ Descriptive analysis โดยการใช้ฟังก์ชัน หรือใช้ pivot table เพื่อวิเคราะห์ข้อมูลแล้วสร้าง chart นำเสนอข้อมูลครับ โดยข้อมูลดิบ tips data อ้างอิงจากเว็บไซต์ ดังต่อไปนี้

    https://www.kaggle.com/datasets/grandmaster07/restaurant-tips-dataset-analysis

    เราจะอธิบายข้อมูลที่ได้จากการใช้เครื่องมือในการวิเคราะห์ข้อมูล 3 ส่วนหลักๆ กันนะครับ ได้แก่

    1. ภาพรวมของพฤติกรรมการให้ทิป (Descriptive Overview)
    2. การวิเคราะห์ตามบริบทด้านเวลาและวัน (Time & Day Analysis)
    3. การวิเคราะห์ตามลักษณะของกลุ่มลูกค้า (Customer Characteristics Analysis)

    เรามาเริ่มกันต้นกันนะครับ โดยจะเริ่มจาก Import data -> Descriptive analysis -> Conclusion

    Import data

    ก่อนอื่นเปิด google sheet จะได้ไฟล์เปล่าๆ มาจากนั้นจะทำการ import data ดังนั้นโดยการคลิกที่ File -> import -> แล้วเลือกไฟล์ tip.csv

    จากนั้นจะมี data ปรากฏขึ้นมาบนตาราง

    Rename range

    ขั้นตอนต่อไป จะทำการเปลี่ยนชื่อ range ทุกคอลัมภ์อย่างเช่น ข้อมูลคอลัมภ์ total_bill อยู่ใน range F2:F245 ตั้งชื่อเป็น total_bill เวลาที่ใช้ฟังก์ชันต่างๆก็จะใส่ input ง่ายขึ้นเช่น หาค่าเฉลี่ยของยอดบิล แทนที่จะเขียนสูตรเป็น average(F2:F245) ก็เปลี่ยนเป็น average(total_bill) ก็จะอ่านสูตรง่ายขึ้น

    Explore data and descriptive analysis

    Descriptive Overview

    1.1. ความสัมพันธ์หลัก: ความสัมพันธ์ระหว่างยอดบิลรวมกับจำนวนทิปที่ให้มีความเข้มข้นในระดับใด และเป็นไปในทิศทางใด?

    กราฟที่ 1.1 แสดงความสัมพันธ์ระหว่างยอดบิลและจำนวนทิป

    จากกราฟที่ 1.1 ช่วงยอดบิลที่ต่ำๆ (น้อยกว่า 20 $) ข้อมูลจะค่อนข้างกระจุกตัวกัน การให้ทิปของลูกค้าส่วนมากก็จะน้อย (ไม่เกิน 4$ ) แต่เมื่อยอดบิลมากขึ้น ข้อมูลก็จะเริ่มกระจายตัวออกนั่นคือ มีทั้งลูกค้าที่จ่ายค่าบิลบางคนที่ให้ทิปน้อยและบางคนให้ทิปมาก

    แต่ถ้าดูโดยภาพรวมแล้วความสัมพันธ์ของยอดบิลกับจำนวนทิปนั้นไปทางเดียวกันคือถ้ากลุ่มลูกค้ากลุ่มไหนจ่ายยอดบิลเยอะ คนที่ออกค่าบิลนั้นก็จะแนวโน้มให้ทิปมากกว่าคนที่จ่ายบิลน้อยกว่า

    1.2. การแจกแจงทิป: การแจกแจงของจำนวนเงินทิปที่ลูกค้าให้เป็นอย่างไร? (เช่น ทิปส่วนใหญ่อยู่ในช่วงไหน?)

    กราฟที่ 1.2 แสดงการกระจายตัวของความถี่การให้ทิป

    ลูกค้าที่เป็นคนจ่ายค่าบิลนั้น ส่วนมากจะให้ทิปอยู่ที่ช่วงราวๆ ไม่เกิน 4$ และมีลูกค้าส่วนน้อยมากๆ ที่ให้ทิปเกิน 6$ (มากสุดประมาณ 10$) ซึ่งเป็นจำนวนทิปที่มากกว่าของลูกค้าคนส่วนมากเป็นพิเศษ

    1.3. การแจกแจงบิล: การแจกแจงของยอดบิลรวมของลูกค้าเป็นอย่างไร?

    กราฟที่ 1.3 แสดงการกระจายตัวของความถี่ยอดบิล

    ส่วนมากยอดบิลของกลุ่มลูกค้าแต่ละกลุ่มจะไม่ได้สูงนัก ราวๆ ช่วง 10$ – 25$ มีบางกลุ่มลูกค้าที่ต้องจ่ายค่ายอดบิลน้อยกว่าช่วงดังกล่าว แต่มีบางกลุ่มซึ่งเป็นส่วนน้อยมากที่จ่ายด้วยยอดบิลที่สูงกว่าของของกลุ่มลูกค้าส่วนใหญ่เป็นพิเศษ (ตั้งแต่ ช่วง 35$ ขึ้นไป)

    1.4. อัตราส่วนทิป: อัตราส่วนเฉลี่ยของการให้ทิปเทียบกับยอดบิลรวม (Tip Percentage) อยู่ที่ประมาณเท่าไหร่?

    อัตราส่วนของการให้ทิปเทียบกับยอดบิลรวม (ก่อนให้ทิป) อยู่ที่ 15.15% แสดงว่าร้านอาหารแห่งนี้สามารถให้บริการลูกค้าโดยรวมได้อย่างน่าพอใจสำหรับลูกค้า ถ้าพนักงานร้านอาหารนี้ยกระดับการบริการได้ดีขึ้นอีกทางร้านก็จะมีโอกาสได้รับสัดส่วนของทิปมากขึ้น หรือลูกค้าเก่าก็อาจจะชวนลูกค้าใหม่ให้รู้จักและมารับประทานอาหารร้านแห่งนี้ ทางร้านก็จะมีฐานลูกค้าเพิ่มและสามารถสร้างรายได้ทั้งจากยอดบิลและทิปเพิ่มขึ้นได้นั่นเอง

    *********************************************************************

    สรุป Business insight ข้อ 1

    • ยอดบิล มีความสัมพันธ์เชิงบวกกับ ยอดทิป
    • กลุ่มลูกค้าส่วนมากไม่ได้ถึงกับสั่งเมนูที่ราคาแพงมากหรือไม่ได้สั่งหลายเมนูมาก ยอดบิลจึงไม่สูงมากนัก
    • มีเพียงบางกลุ่มซึ่งเป็นส่วนน้อยมากๆ ที่สั่งเมนูแพงหรือหลากหลาย ยอดบิลจึงสูง และมีแนวโน้มให้ทิปสูงกว่ากลุ่มลูกค้าส่วนใหญ่
    • อัตราส่วนเฉลี่ยของทิปเทียบยอดบิลก่อนทิป 15.15% ถือเป็นเลขที่น่าพอใจแสดงได้ถึงว่าร้านนี้มีมาตรฐานการบริการลูกค้า

    Time & Day Analysis

    กราฟที่ 2.1 แสดงยอดบิลเฉลี่ยและยอดทิปเฉลี่ยจำแนกตามวันในสัปดาห์

    2.1. ทิปตามวัน: วันในสัปดาห์ใดที่มี จำนวนทิปเฉลี่ยสูงที่สุดและวันใดต่ำที่สุด?

    จากกราฟที่ 2.1 กล่าวได้ว่า วันอาทิตย์จะเป็นวันที่ได้รับทิปเฉลี่ยมากที่สุด ส่วนวันพฤหัสและศุกร์นั้นได้ทิปเฉลี่ยกันแบบสูสี คือได้รับทิปเฉลี่ยน้อยกว่าวันหยุด โดยจะเป็นวันศุกร์ที่ได้รับทิปน้อยที่สุด

    แสดงว่าวันหยุดน่าจะเป็นวันที่ลูกค้าหลักของร้านมีเวลามารับประทานอาหารมากกว่าวันธรรมดาที่เป็นวันทำงาน จึงน่าจะมีลูกค้าจำนวนมากเข้ามาร้านอาหารแห่งนี้มากกว่าวันธรรมดา ทางร้านควรให้ความสำคัญกับการวางแผนหลายๆอย่างเกี่ยวกับไม่ว่าจะทั้งการจัดการภายในหรือจัดตารางพนักงานเพื่อยกระดับการบริการลูกค้าในวันหยุดมากเป็นพิเศษเพื่อรักษาความพอใจของลูกค้าและไม่เสียโอกาสในการเพิ่มกำไรให้ทางร้านในวันหยุด

    2.2. บิลตามวัน: วันในสัปดาห์ใดที่มียอดบิลรวมเฉลี่ย สูงที่สุด?

    จากกราฟที่ 2.1 จะเห็นได้ว่าวันหยุดทั้งเสาร์อาทิตย์นั้นได้รับยอดบิลเฉลี่ยสูงกว่า 20$ โดยจะเป็นวันอาทิตย์ที่ทำยอดบิลเฉลี่ยมากที่สุด ส่วนวันธรรมดาอย่างวันพฤหัสบดีและวันศุกร์นั้น ทำยอดบิลเฉลี่ยได้เพียงประมาณ 17$ โดยวันศุกร์ทำยอดบิลเฉลี่ยได้น้อยที่สุด

    ***

    กราฟต่อไปนี้ สำหรับอธิบาย ข้อ 2.3 และ 2.4

    กราฟที่ 2.2 แสดงยอดทิปเฉลี่ยและสัดส่วนของทิปเฉลี่ยเทียบกับยอดบิล (จำแนกตามมื้ออาหาร)

    2.3. ทิปตามมื้ออาหาร: โดยเฉลี่ยแล้วเพศใดที่ให้จำนวนทิปมากกว่ากัน?

    อธิบายตามกราฟที่ 2.2 โดยเฉลี่ยแล้วทั้งสองช่วงเวลานั้นทางร้านได้รับทิปเฉลี่ยจากลูกค้าเท่ากันคือมื้อละ 3$

    2.4. อัตราส่วนทิปตามมื้ออาหาร: ช่วงเวลา (มื้อกลางวัน/มื้อเย็น) ใดที่มีอัตราส่วนทิปเฉลี่ยเทียบกับยอดบิลสูงกว่ากัน?

    พิจารณากราฟที่ 2.2 อัตราส่วนทิปตามมื้ออาหารเทียบกับยอดบิลแต่ละกลุ่มลูกค้าโดยเฉลี่ย นั้นของมื้อกลางวันจะมากกว่าของมื้อเย็นเล็กน้อย เท่ากับ 16.41%-15.95% = 0.46% แทบจะพอๆกัน

    หมายความว่า ถ้าพิจารณาที่ยอดบิลเท่ากันทั้งมื้อกลางวันและมื้อเย็น มื้อกลางวันจะได้รับทิปเฉลี่ยจากลูกค้ามากกว่าของมื้อเย็นเล็กน้อย

    2.5. จำนวนบิล: วันใดในสัปดาห์ที่มีจำนวนธุรกรรม (บิล) มากที่สุด?

    กราฟที่ 2.3 แสดงสัดส่วนของจำนวนบิลแต่ละวันในสัปดาห์

    จากกราฟที่ 2.3 วันเสาร์เป็นวันที่มีจำนวนการเช็คบิลจากลูกค้ามากที่สุดที่สัดส่วน 35.66% รองลงมาเป็นวันอาทิตย์สัดส่วนอยู่ที่ 31.1%

    กราฟที่ 2.4 แสดงจำนวนบิลแยกตามวันในสัปดาห์และมื้ออาหาร

    และจากกราฟที่ 2.4 ถ้านับจำนวนบิลแยกย่อยตามช่วงเวลาเพิ่มอีกหนึ่งตัวแปรจะเห็นได้ชัดว่าร้านแห่งนี้ในหยุดเสาร์อาทิตย์นั้น เปิดบริการเพียงช่วงเย็นเท่านั้น และมีคนมาร้านช่วงเย็นของสองร้านดังกล่าวจำนวนมาก ส่วนวันพฤหัสและศุกร์จะเห็นว่ามีจำนวนบิลทั้งช่วงกลางวันและเย็น โดยช่วงเย็นนั้นคนน่าจะมาที่ร้านน้อยมากๆ เพราะจำนวนบิลของวันพฤหัสและศุกร์น้อย

    *********************************************************************

    สรุป Business insight ข้อ 2

    • ลูกค้าส่วนมากมาที่ร้านอาหารวันเสาร์หรืออาทิตย์ ซึ่งตรงกับวันหยุดงานของหลายๆ คน
    • คาดว่าร้านอาหารแห่งนี้เปิดทั้งสองช่วงเวลาในวันพฤหัสและศุกร์ ส่วนวันหยุดสองวันนั้น เปิดเพียงช่วงเย็นช่วงเดียว
    • เมื่อมีลูกค้าจำนวนมากมาที่ร้านอาหารวันหยุดช่วงเวลาเย็นดังกล่าว ร้านจึงสามารถสร้างรายได้ไม่ว่าจากยอดบิลหรือทิปสูงกว่าทั้งวัน พฤหัสและศุกร์อย่างมาก
    • ช่วงกลางวันและเย็นได้รับจำนวนทิปเฉลี่ยพอๆกัน

    Customer Characteristics Analysis

    กราฟสำหรับอธิบายข้อมูลข้อที่ 3.1 และ 3.2

    กราฟที่ 3.1 แสดงยอดทิปเฉลี่ยและอัตราส่วนเฉลี่ยของทิปเทียบกับยอดบิล จำแนกตามเพศ

    3.1. ทิปตามเพศ: โดยเฉลี่ยแล้วเพศใดที่ให้จำนวนทิปมากกว่ากัน?

    โดยเฉลี่ยแล้วเพศชายให้ทิปเฉลี่ยมากกว่าเพศหญิง

    3.2. อัตราส่วนทิปตามเพศ: เมื่อเทียบกับยอดบิลแล้ว เพศใดที่ให้อัตราส่วนทิปเฉลี่ยสูงกว่ากัน?

    เพศหญิงจะมีอัตราส่วนเฉลี่ยการให้ทิปเทียบกับยอดบิลสูงกว่าของเพศชาย หมายความว่าถ้าในกรณีที่ยอดบิลเฉลี่ยของคนที่จ่ายเงินจากเพศชายและเพศหญิงเท่ากันแล้ว เพศหญิงจะให้ทิปมากกว่าของเพศชายเล็กน้อย

    3.3. พฤติกรรมสูบบุหรี่: กลุ่มลูกค้าที่มีคนสูบบุหรี่ในกลุ่ม เทียบกับกลุ่มที่ไม่มี มีความแตกต่างกันในด้านจำนวนทิปเฉลี่ย หรือไม่?

    กราฟที่ 3.2 แสดงยอดทิปเฉลี่ยของกลุ่มที่มีคนสูบบุหรี่และกลุ่มที่ไม่สูบบุหรี่

    จากกราฟที่ 3.2 จะเห็นได้ว่าไม่ค่อยมีความแตกต่างของการให้ทิประหว่างกลุ่มที่มีคนสูบบุหรี่กับกลุ่มที่ไม่มีการสูบบุหรี่ ดังนั้นการสูบบุหรี่จึงไม่น่าส่งผลกับการให้ทิป

    3.4. ผลกระทบของขนาดกลุ่ม: ขนาดของกลุ่มลูกค้าที่มาใช้บริการมีผลกับ ยอดบิลและจำนวนทิปที่ให้หรือไม่ อย่างไร

    กราฟที่ 3.3 แสดงความสัมพันธ์ระหว่างยอดบิลและทิปจำแนกตามช่วงของขนาดกลุ่มลูกค้า

    หมายเหตุ : buble สีเหลือง คือขนาดของกลุ่มลูกค้า ช่วง 1 – 3 ตนต่อกลุ่ม และ bubble สีเขียวคือขนาดของกลุ่มลูกค้า ช่วง 4- 6 คนต่อกลุ่ม

    จากกราฟที่ 3.3 ถ้าดูจากภาพรวมจะเห็นว่าความสัมพันธ์ระหว่างขนาดของกลุ่มลูกค้ากับยอดบิลและยอดทิปที่ให้มีความสัมพันธ์ในทิศเดียวกัน คือ

    ในส่วนของยอดบิล ถ้ามากันไม่มากคือไม่เกิน 3 คน ยอดบิลส่วนมากจะกระจุกตัวอยู่ในช่วงราวๆ ไม่เกิน 20$ ซึ่งน้อยกว่ายอดบิลของกลุ่มที่มาร้านด้วยกันหลายๆคน โดยส่วนมากกลุ่มที่มากันมากหน่อยจะมียอดบิลมากกว่า 20$

    ในส่วนของยอดทิปนั้นกลุ่มที่มาที่ร้านไม่เกิน 3 คน จะให้ยอดทิปส่วนมากอยู่ในช่วงไม่เกิน 4$ ส่วนกลุ่มใหญ่ที่มาด้วยกันตั้งแต่ 4 คนขึ้นไปนั้นจะมียอดทิปที่ค่อนข้างหลากหลายกว่าที่มีทั้งยอดทิปที่ต่ำประมาณ 2$ จนถึงเกือบๆ 10$

    สรุป Business insight ข้อ 3

    • จำนวนทิปเฉลี่ยทางร้านได้จาก : ชาย > หญิง แต่ อัตราส่วนเฉลี่ยของทิปเทียบยอดบิล : หญิง > ชาย นั่นคือจริงๆแล้ว เพศที่จ่ายเงินที่เป็นหญิงให้ทิปมากกว่ากลุ่มที่ลูกค้าเพศชายจ่ายค่าบิล ในกรณีที่บิลเท่ากัน
    • กลุ่มของลูกค้าที่มาร้านถ้าเป็นกลุ่มเล็กๆมากันไม่เกิน 3 คนจะมีแนวโน้มทั้งยอดบิลและให้ทิปน้อยกว่าการให้ทิปของกลุ่มใหญ่ที่มากันตั้งแต่ 4 คนขึ้นไป

    Conclusion and recommendations

    ทางร้านได้รับอัตราส่วนของยอดทิปรวมเทียบกับยอดบิลรวมทั้งหมด(ยอดบิลก่อนรวมเข้ากับทิป) ที่ 15.15% ซึ่งถือเป็นตัวเลขบ่งบอกได้ว่าทางร้านมีมาตรฐานที่ดีในการบริการลูกค้า โดยยอดทิปกับยอดบิลนั้นมีความสัมพันธ์กันเชิงบวก คือ กลุ่มลูกค้าที่ต้องจ่ายยอดบิลสูง อาจจะเพราะสั่งหลายเมนูหรือจากการมาด้วยกันหลายๆคนนั้น (กลุ่ม 4-6 คน) มีแนวโน้มโดยรวมที่จะให้ทิปมากกว่ากลุ่มลูกค้าอีกหลายกลุ่มที่มาด้วยกันไม่มาก(ไม่เกิน 3 คน)ซึ่งยอดบิลของกลุมไม่เกิน 3 คน ส่วนมากจะไม่สูง(ไม่เกิน 20$) และจะมีกลุ่มลูกค้าส่วนน้อยที่ทำยอดบิลและยอดทิปสูง ดังนั้นกลุ่มลูกค้าส่วนน้อยเหล่านี้มีส่วนสำคัญในการทำรายได้หลักให้กับทางร้านมากกว่ากลุ่มอื่นโดยส่วนใหญ่ โดยรายได้รวมนั้นส่วนมากมาจากช่วงวันหยุดเสาร์และอาทิตย์ที่มีลูกค้าจำนวนมากมาที่ร้านดังนั้น ถ้าสามารถยกระดับการบริการที่ดีขึ้นกว่านี้ได้โดยเฉพาะวันหยุดเสาร์และอาทิตย์ด้วยการจัดตารางพนักงานให้พร้อมเสมอหรือเตรียมวัตถุดิบให้มากพอ จะทำให้พนักงานทำงานกันอย่างไม่ติดขัด ลูกค้าจะได้ไม่ต้องรอนาน และสามารถรักษาฐานลูกค้าหลักโดยเฉพาะกลุ่มลูกค้าที่ร่ำรวยที่จ่ายค่าบิลสูงและให้ทิปสูง หรือทำให้มีลูกค้าใหม่เข้ามาเพิ่ม อนาคตก็อาจจะสร้างรายได้จากยอดบิลและยอดทิปมากกว่านี้ได้ และในวันหยุดเสาร์อาทิตย์ทางร้านควรเปิดบริการเพิ่มขึ้นอีกช่วงคือ ช่วงกลางวัน (จากเดิมคาดว่าเปิดเฉพาะช่วงเย็นเนื่องจากไม่มีจำนวนยอดบิลเลย) เนื่องจากเป็นวันหยุดของคนส่วนใหญ่อยู่แล้ว เพื่อที่จะไม่พลาดโอกาสสร้างรายได้รวมเพิ่มได้อีกช่วงเวลา

  • Pizza Restaurant Sales 2015 analysis with R

    Pizza Restaurant Sales 2015 analysis with R

    เริ่มต้น

    สวัสดีครับ บทความนี้จะนำเสนอการวิเคราะห์ข้อมูลเกี่ยวกับพฤติกรรมการสั่งซื้อพิซซ่าของลูกค้าของร้านพิซซ่าสไตล์กรีกในรัฐนิวเจอร์ซีย์ของปี 2015 ในแง่ของปริมาณการสั่งซื้อ และ ยอดขายที่ได้รับจากการสั่งซื้อ ไม่ว่าจะวิเคราะห์โดยจำแนกตามชนิดของพิซซ่า , เมนูพิซซ่าที่ลูกค้าส่วนใหญ่นิยมซื้อ , ขนาดของถาดพิซซ่า , ช่วงเวลาที่มีจำนวนลูกค้ามาสั่งซื้อสูง รวมไปถึงการวิเคราะห์เรื่องราคาพิซซ่า เพื่อให้ได้ข้อมูลเชิงประจักษ์ในการเพิ่มประสิทธิภาพการบริหารจัดการสินค้าคงคลังและการวางแผนการตลาดโดยใช้เครื่องมือ R โดยข้อมูลที่นำมาวิเคราะห์ อ้างอิงจาก Plato’s Pizza โดยมีข้อมูลดังต่อไปนี้

    • order_id : หมายเลขเฉพาะแต่ละคำสั่งซื้อ
    • order_details_id : หมายเลขเฉพาะสำหรับพิซซ่าแต่ละถาดที่วางในแต่ละออเดอร์ (พิซซ่าชนิดเดียวกันและขนาดเดียวกันจะวางเรียงในแถวเดียวกันและปริมาณจะเพิ่มขึ้น)
    • pizza_id : หมายเลขเฉพาะแต่ละเมนูพิซซ่า
    • quantity : ปริมาณการสั่งซื้อ
    • order_date : วันที่สั่งพิซซ่า
    • order_time : เวลาที่สั่งซื้อพิซซ่า
    • unit_price : ราคาพิซซ่าแต่ละ order_details_id
    • total_price : ยอดขายพิซซ่าแต่ละ order_details_id
    • pizza_size : ขนาดของพิซซ่า มีตั้งแต่ ไซต์ S, M, L, XL และ XXL
    • pizza_type : ชนิดของพิซซ่า
    • pizza_ingredient : ชุดส่วนผสมของพิซซ่า
    • pizza_name :เมนู(รายชื่อ) พิซซ่า

    สิ่งที่ผมทำคือโหลดข้อมูลไฟล์ Excel จาก

    จากเว็บ https://www.kaggle.com/datasets/shilongzhuang/pizza-sales โดยข้อมูลชุดนี้อยู่ในช่วงปี 2015 จากนั้นทำ desciptive analysis คือวิเคราะห์เชิงพรรณา 3 ส่วนดังต่อไปนี้

    1. ความนิยมของเมนูและขนาดของถาดพิซซ่า

    2. ประสิทธิภาพของราคา

    3. แนวโน้มตามช่วงเวลา

    เริ่มต้นกันนะครับ

    ติดตั้ง และ ดาวน์โหลด Library

    ติดตั้ง packages และโหลด library ที่ต้องใช้ในการ transformation และ visualization ในโปรแกรม R studio ดังนี้

    ติดตั้งและเรียกใช้ library

    โดยที่

    • library(readxl) เพื่อดึงข้อมูลไฟล์ excel เพื่อพร้อมสำหรับวิเคราะห์ข้อมูลใน R studio
    • library(tidyverse) ไว้ใช้สำหรับการแปลงข้อมูล จัดการข้อมูล รวมไปถึงการนำเสนอข้อมูลด้วยกราฟ และสามารถจัดการกับข้อมูลประเภท date ได้
    • library(patchwork) ไว้ใช้สำหรับการแสดงผลหลายๆ กราฟ ให้อยู่ใน 1 หน้า
    • library(hms) แปลงประเภทข้อมูลให้อยู่ในประเภทของ time

    การดาวน์โหลดไฟล์ และ Clean data เล็กน้อย

    ดาวน์โหลดไฟล์ excel ชุดข้อมูล “Data Model – Pizza Sales.xlsx” แล้วเก็บข้อมูลไว้ที่ตัวแปรที่ชื่อว่า df

    **เพิ่มเติมอีกนิด เนื่องจากข้อมูลคอลัมภ์ order time นั้น ประกอบด้วย date และ time ซึ่งในส่วนของ date นั้นในทุกๆแถวข้อมูลชุดนี้คือ วันที่ “1899-12-31” ซึ่งน่าจะเป็นข้อผิดพลาด

    ข้อมูล date ของทั้งสองคอลัมภ์ไม่ตรงกัน

    จึงทำการแปลงคอลัมภ์นี้ด้วยการเปลี่ยนประเภทข้อมูลให้อยู่ในประเภทของ time (แสดงเฉพาะเวลา) ดังต่อไปนี้

    ข้อมูลที่ถูกแปลงโดยใช้ format ประเภทข้อมูลที่ได้คือ character สามารถเปลี่ยนประเภทข้อมูลเป็น time ด้วย as_hms

    คอลัมภ์ order time ที่ถูกอัพเดตจะเป็นดังรูปต่อไปนี้

    order time ล่าสุด

    วิเคราะห์และนำเสนอข้อมูล

    วิเคราะห์และนำเสนอข้อมูลทีละส่วนแบบละเอียดกันนะครับ

    ความนิยมของเมนูและขนาดของพิซซ่า

    1. เมนูที่ได้รับความนิยมสูงสุด 5 อันดับแรก ตามปริมาณที่ขายได้ คือเมนูอะไร? และเมนูที่สร้างรายได้รวมสูงสุด 5 อันดับแรก ไดแก่เมนูอะไรบ้าง

    กราฟที่ 1.1 กราฟแท่งแสดงปริมาณการขายรวม (ซ้ายมือ) และ กราฟแท่งแสดงยอดขายรวม (ขวามือ) จำแนกตามเมนูพิซซ่า
    กราฟที่ 1.2 กราฟแท่งแสดงยอดขายรวมโดยจำแนกตามชนิดของพิซซ๋า

    จากกราฟที่ 1.2 แสดงให้เห็นว่าพิซซ่าชนิด Classic เป็นชนิดที่ทำรายได้รวมสูงสุดเมื่อเทียบกับพิซซ่าชนิดอื่นๆ ยอดขายจากพิซซ่า Classic จึงเป็นเหมือนรายได้หลักของร้าน ดังนั้นควรรักษาคุณภาพการทำพิซซ่าชนิดนี้ไว้ให้มาก และจัดเตรียมวัตถุดิบที่เกี่ยวข้องต่อการทำพิซซ่าชนิดนี้ให้เพียงพอต่อทุกคำสั่งซื้อ

    พิซซ่าชนิด Chicken ที่ดูเหมือนว่ายอดขายรวมอยู่อันดับสาม แต่ถ้าดูจากกราฟที่ 1.1 ยอดขายพิซซ่าจำแนกตามเมนูจะพบว่า มีพิซซ่าชนิด Chicken ถึง 3 เมนูที่ทำยอดขายได้ติด Top 5 ของเมนูที่ทำยอดขายได้ดีที่สุด และมีพิซซ่า Chicken จำนวน 2 เมนูที่ติด Top 5 ที่มีปริมาณสั่งซื้อมากสุด ข้อเสนอแนะคือ ฝึกพนักงานภายในร้านให้แนะนำพิซซ่าเมนูชนิด Chicken ให้มากขึ้น เพื่อเพิ่มมูลค่าเฉลี่ยต่อคำสั่งซื้อ รวมถึงจัดเตรียมส่วนผสมของพิซซ่าแต่ละเมนูชนิดดังกล่าวให้มากๆ เพื่อเพียงพอต่อทุกคำสั่งซื้อ

    พิซซ่าเมนู The Barbecue Chicken และ The Thai Chicken ที่เป็นพิซซ่าชนิด Chicken และ The Classic Deluxe ที่เป็นพิซซ่าชนิด Classic นั้น ติด Top 5 ทั้งเรื่องของปริมาณการสั่งซื้อและยอดขายรวมตลอดช่วงปี 2015 ดังนั้นทางร้านควรลงทุนกับการจัดเตรียมวัตถุดิบของทั้ง 3 เมนูเป็นพิเศษ ให้พร้อมเสมอเพื่อไม่พลาดโอกาสในการสร้างกำไรจากยอดขาย

    พิซซ่าชนิด Veggle นั้น อาจจะลดการทำลงเนื่องจากทำยอดขายรวมอันดับสุดท้าย และไม่มีเมนูไหนเลยที่ติด Top 5 ของยอดปริมาณสั่งซื้อและยอดขายรวม เพื่อจะได้ลดต้นทุนในการเตรียมวัตถุดิบและการทำเมนูชนิดนี้

    และพิซซ่าชนิด Supreme ควรรักษามาตรฐานไว้ให้ดีเพื่อไม่ให้ยอดขายในอนาคตตกลงไปนั่นเองครับ

    ปิดท้ายข้อ 1 ด้วยวิธีโค้ดภาษา R ครับ

    2. สัดส่วนความถี่ในการสั่งพิซซ่าแต่ละ ขนาด (S, M, L, XL, XXL) มีการกระจายตัวเป็นอย่างไร? และสัดส่วนของรายได้รวมที่มาจากพิซซ่าในแต่ละ ขนาด แตกต่างกันอย่างไร?

    กราฟที่ 2 สัดส่วนปริมาณการสั่งซื้อพิซซ่าตามกราฟวงกลมทางซ้าย และ สัดส่วนยอดขายพิซซ่าตามกราฟวงกลมด้านขวา โดยที่จำแนกตามขนาดพิซซ่า

    จากกราฟที่ 2 ทั้งกราฟที่บอกสัดส่วนปริมาณการสั่งซื้อของพิซซ่ารวม และกราฟที่บอกสัดส่วนยอดขาย โดยทั้งสองกราฟแยกตามขนาดพิซซ่านั้น กล่าวได้ว่า ถ้าพิจารณาโดยรวมแล้ว ปริมาณการสั่งซื้อรวม มีความสัมพันธ์ทิศเดียวกับ ยอดขายของพิซซ่า

    จะสังเกตเห็นได้ว่า ขนาดของพิซซ่าที่ถูกสั่งซื้อมาก มีอยู่ 3 ขนาดได้แก่ L, M และ S อีกสองขนาดได้แก่ XL และ XXL ถูกสั่งซื้อน้อยมากๆ นั่นแปลว่าลูกค้าส่วนมากนั้นไม่ได้ต้องการขนาดพิซซ่าขนาดใหญ่โตขนาดนั้น เพราะการซื้อพิซซ่าขนาดใหญ่เกินไปก็อาจจะรับประทานไม่หมด หรืออาจจะรวมไปถึงพิซซ่าที่มีขนาดใหญ่กว่านั้นจะมีราคาแพงกว่าพิซซ่าไซต์เล็กกว่า เป็นต้น

    แนวทาง คือ ควรจัดเตรียมถาดพิซซ่าขนาด L ไว้ในสต๊อกให้มากเป็นพิเศษ รวมไปถึงถาดขนาด M,S ปริมาณพอเหมาะ เพื่อรองรับคำสั่งซื้อของลูกค้าทั้งหมดได้อย่างเพียงพอ เพื่อไม่พลาดโอกาสในการสร้างรายได้ และในทางตรงกันข้าม ควรลดการจัดเตรียมถาดไซต์ใหญ่อย่าง XL และ XXL เพื่อลดต้นทุนสำหรับถาดพิซซ่าขนาดใหญ่ได้

    ปิดท้ายข้อ 2 ด้วยวิธีโค้ดภาษา R ครับ

    ประสิทธิภาพและราคา (Performance & Pricing)

    3. ราคาต่อหน่วยเฉลี่ยของเมนูทั้งหมดคือเท่าไหร่?

    ราคาต่อหน่วยเฉลี่ยของเมนูทั้งหมด ประมาณ 16.49 $

    4. ปริมาณการสั่งซื้อต่อหนึ่งรายการสั่งซื้อโดยเฉลี่ยเป็นเท่าไหร่?

    ปริมาณที่สั่งซื้อต่อหนึ่งออเดอร์โดยเฉลี่ย เท่ากับ 2.32 หรือประมาณ 2 ถาดพิซซ่า

    ลองดูตารางความถี่ของออเดอร์แต่ละปริมาณการสั่งซื้อ ดังต่อไปนี้

    ตารางจำนวนออเดอร์แต่ละปริมาณการสั่งซื้อ

    จะเห็นได้ว่าแต่ละออเดอร์นั้น ส่วนมากสั่งซื้อไม่เกิน 4 ถาด (โดยมีจำนวนออเดอร์ที่สั่งเพียง 1 ถาดมากที่สุด)

    5. กลุ่มของเมนูที่มีส่วนผสมมากที่สุดและน้อยที่สุดมีความแตกต่างกันในด้านยอดขายรวมหรือไม่?

    อธิบายก่อนว่า 1 เมนูพิซซ่า (pizza_name) จะมีเพียง 1 ชุดส่วนผสม (pizza_ingredient) ใน 1 ชุดส่วนผสมก็จะมีวัตถุดิบต่างๆ

    ตารางต่อไปนี้จะพิจารณาความแตกของปริมาณการสั่งซื้อรวมโดยเฉลี่ยของทุกเมนู และ ยอดขายรวมเฉลี่ยของทุกเมนู ของเมนูที่มีจำนวนวัตถุดิบน้อยที่สุด (2 อย่าง) และของเมนูที่มีจำนวนวัตถุดิบมากที่สุด (8 อย่าง)

    ตารางแสดงปริมาณสั่งซื้อรวมเฉลี่ย และ ยอดขายรวมเฉลี่ยของเมนูที่มีจำนวนส่วนผสมน้อยและมากสุด

    จากตารางจะเห็นได้ว่า เมนูที่มีจำนวนวัตถุดิบน้อยที่สุด กลับสามารถสร้างยอดขายได้มากกว่าเมนูที่มีจำนวนวัตถุดิบมากที่สุด

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

    ปิดท้ายส่วนที่ 2 ของข้อ 3 , 4 , 5 ด้วยภาษา R

    แนวโน้มตามช่วงเวลา (Temporal Trends)

    6. การขายรวมรายวันของสัปดาห์ (วันจันทร์ถึงวันอาทิตย์) มีความแตกต่างกันอย่างไร?

    กราฟที่ 3 แสดงปริมาณการสั่งซื้อรวม(กราฟทางซ้าย) และ แสดงยอดขายรวม (กราฟทางขวา) โดยจำแนกตามวันของสัปดาห์

    จากรูปกราฟที่ 3 นั้นจะเห็นได้ว่าวันพฤหัส ศุกร์และเสาร์ มีปริมาณการสั่งซื้อโดยรวมมากกว่า 7000 ถาด และยอดขายรวมมากกว่าวันอื่นๆ โดยวันศุกร์มีปริมาณการสั่งซื้อ และมียอดขายมากเป็นพิเศษ แสดงว่าโดยเฉลี่ยวันศุกร์น่าจะมีจำนวนคนเข้ามาที่ร้านพิซซ่าแห่งนี้มากกว่าวันอื่นๆ

    แนวทางคือ อาจจะงดโปรโมชั่นส่วนลดบางส่วน (ถ้าจากเดิมทางร้านมีส่วนลดของเมนู)และพิจารณาเรื่องของ โปรโมชั่น Upselling เพื่อเพิ่มมูลค่าต่อคำสั่งซื้อในช่วงวันพฤหัส ศุกร์ เสาร์(โดยเฉพาะวันศุกร์)

    ปิดท้ายข้อ 6 ด้วยการเขียนภาษา R ครับเพื่อวิเคราะห์ข้อมูลดังกล่าวครับ

    7. กราฟแสดงแนวโน้มของยอดขายรวมรายชั่วโมงเป็นอย่างไร?

    กราฟที่ 4 แสดงยอดขายรวมของๆทุกวันจำแนกตามเวลา(ชั่วโมง)

    จากกราฟที่ 4 อธิบายได้ว่า ช่วง 12-13 นาฬิกามียอดขายสูงกว่า 1 แสนดอลลาร์สหรัฐ ซึ่งมากกว่าช่วงเวลาอื่นมาก อาจจะเพราะว่าช่วงเวลาดังกล่าวนั้น เป็นช่วงที่คนส่วนใหญ่พักกลางวัน หาอาหารหลัก หรือของว่างรับประทานก่อนเริ่มงานช่วงบ่าย เลยอาจจะทำให้ช่วงนี้มีคนสั่งซื้อพิซซ่ามากกว่าเวลาอื่นๆ

    อีกช่วงหนึ่งที่มียอดขายมากรองจากช่วง 12-13 นาฬิกาคือช่วงเย็นประมาณ 17-18 นาฬิกา มียอดขายกว่า 8 หมื่นดอลลาร์สหรัฐ ซึ่งเป็นช่วงเลิกงานของใครหลายๆคนด้วย อาจจะเป็นอีกช่วงเวลาที่มีคนเข้ามาสั่งพิซซ่าที่ร้านจำนวนมาก

    ปิดท้ายข้อ 7 ด้วยโค้ดดิ้งภาษา R ครับ

    8.เปรียบเทียบการกระจายตัวของปริมาณการสั่งซื้อระหว่างช่วงเวลาของแต่ละวัน (เช่น เช้า , กลางวัน, เย็น, ค่ำ)

    กราฟที่ 5 แสดงการกระจายตัวของยอดขายรวมของแต่ละวัน จำแนกตามช่วงเวลา โดยที่กราฟทางซ้าย แสดงด้วย Box-plot ส่วนกราฟทางขวาแสดงด้วย Histogram

    จากกราฟที่ 5 กราฟ Box-plot เห็นได้เลยว่า ช่วงบ่ายและช่วงเย็นการกระจายตัวของยอดขายรวมนั้นใกล้เคียงกันมากและ ยอดขายรวมของสองช่วงเวลาดังกล่าวของแต่ละวัน ส่วนมากสูงกว่าทั้งช่วงเช้าและช่วงกลางคืน

    ช่วงเช้าของทุกวันส่วนมากทำยอดขายได้น้อย

    จากข้อ 7 -8 สิ่งที่ควรทำในสองช่วงเวลาดังกล่าว คือ ช่วงบ่ายโดยเฉพาะช่วงเวลา 12-13 นาฬิกา และช่วงเย็นโดยเฉพาะช่วง 17-18 นาฬิกา ควรลงทุนกับการเตรียมวัตถุดิบให้พร้อมมากเป็นพิเศษ เพื่อที่ลูกค้าจะได้เมนูตามที่ต้องการและเพิ่มโอกาสในการสร้างมูลค่าต่อคำสั่งซื้อ รวมถึง การจัดตารางงานของพนักงานให้ดีเพื่อที่ลูกค้าจะได้ไม่รอคอยนานเกินไป โดยเฉพาะตอนเที่ยงที่เป็นช่วงเวลาเร่งด่วน

    9. พิจารณาแนวโน้มของยอดขายรายเดือน ตลอดช่วงปี 2015

    กราฟที่ 6 กราฟเส้นแสดงแนวโน้มยอดขายรายเดือนของปี 2015

    จากกราฟที่ 6 จะเห็นได้ว่าแนวโน้มยอดขายรวมของปี 2015 ขึ้นๆลง แต่ถ้าดูจากภาพรวมแล้ว ช่วงของยอดขายตลอดปีค่อนข้างคงที่ คือยอดขายแต่ละเดือนส่วนมากอยู่ในช่วง 64000 – 72000 ดอลลาร์สหรัฐ (ยกเว้นเดือนกรกฎาคมที่มียอดขายรวมมากกว่า 72000 ดอลลาร์สหรัฐซึ่งเป็นยอดขายสูงสุดของปี 2015) แสดงว่าร้านพิซซ่ามีความมั่นคงเรื่องการสร้างยอดขาย นั่นคือสามารถรักษาลูกค้าส่วนใหญ่ที่มาร้านพิซซ่าแห่งนี้บ่อยได้

    สรุปผลข้อมูล

    ตลอดช่วงปี 2015 นั้น แนวโน้มยอดขายโดยรวมเกือบคงที่ (มีขึ้นมีลงบ้าง) ส่วนมากยอดขายแต่ละเดือนอยู่ในช่วง 64000 – 72000 ดอลลาร์สหรัฐ แสดงว่าร้านนี้น่าจะรักษาฐานลูกค้าหลักได้อย่างต่อเนื่อง ส่วนยอดขายหลักตลอดช่วงปี 2015 นั้น มาจากการขายพิซซ่าชนิด Classic ส่วนพิซซ่าชนิดที่มาแรงเป็นชนิด Chicken เนื่องจากมีถึง 3 เมนูที่ติด Top 5 ของยอดขายรวมตลอดช่วงปี 2015 ที่สูงที่สุด ดังนั้นควรรักษาประสิทธิภาพของการทำพิซซ่าชนิด Classic และควรให้พนักงานแนะนำพิซซ่าชนิด Chicken แก่ลูกค้าให้มากๆ รวมไปถึงให้ความสำคัญกับการจัดเตรียมวัตถุดิบของพิซซ่าชนิด Classic และ Chicken มากกว่าชนิดอื่น โดยเฉพาะเมนูที่ติด Top 5 เพื่อเพิ่มมูลค่าต่อคำสั่งซื้อที่มากยิ่งขึ้น และควรลงทุนมากๆกับการเตรียมวัตถุดิบของเมนูที่ต้องมีจำนวนวัตถุไม่มาก ลดการทำเมนูที่ต้องมีวัตถุดิบเยอะ เพื่อลดต้นทุนการเตรียมวัตถุดิบ และจัดตารางเวลาพนักงานให้ดีที่สุดในช่วงกลางวัน โดยเฉพาะเวลา 12-13 นาฬิกา และ ช่วงเย็น 17-18 นาฬิกา เพื่อให้ภายในร้านทำงานได้รวดเร็วและเพื่อที่ลูกค้าไม่ต้องรอนานในช่วงที่คนในร้านเยอะ และมีวัตถุดิบมากพอในการทำเมนูเพื่อไม่พลาดโอกาสในการสร้างยอดขาย ส่วนเรื่องถาดพิซซ่านั้นควรเน้นลงทุนการจัดเตรียมถาดขนาด S,M และ L เป็นพิเศษ เพื่อให้เพียงพอต่อทุกคำสั่งซื้อ