Cup E Analysis Using Rfacebook
สวัสดีค้าบผู้อ่าน เนื่องจาก Facebook เปิดให้ดึง API เพื่อดึงข้อมูลในเพจต่างๆ มาใช้ได้ฟรี เพียงแค่ลงชื่อใช้งานเป็น Facebook Developer ก็สามารถดึงมาใช้เพื่อวิเคราะห์เพจต่างๆ ได้เรยย เมื่อรู้ว่าทำได้ผมก็ไม่รอช้าเข้าไปดึงเพจที่คิดว่า ผช ไทยหลายคนน่าจะกด Follow กันอยู่ นั่นคือ Cup E 😏
สิ่งที่ผมทำคือดึงข้อมูลแล้วมาทำ Analysis ใน R เพื่อตอบคำถามต่อไปนี้ครับ :
- ใครกลับมาเป็นนางแบบซ้ำให้กับ Page มากที่สุด
- ใครคือนางแบบที่มียอด Likes, Shares, Comments มากที่สุด
- ใครคือช่างกล้องที่กลับมาฝากผลงานมากที่สุด
- ช่วงความถี่ของจำนวน Likes, Shares, Comments ที่สาวๆ ได้รับกัน
- นางแบบคนไหนทำงานกับช่างกล้องหลากหลายที่สุด
Data ที่ผมดึงมาใช้ตั้งแต่วันที่ 1 มกราคม 2561–10 มีนาคม 2561 ครับ โดยขึ้นตอนการทำประกอบด้วย : การดึงข้อมูล > การ Clean ข้อมูล > การทำ Visualisation
เรามาเริ่มกันเลยครับ :’)
#ดึงข้อมูลจาก Page Cup E
ลำดับแรกเราต้องลงทะเบียนเป็น Facebook Developer ได้ที่ลิ้งค์นี้ครับ :
หลังจากนั้นให้เราไปที่ Add Products แล้วกด + เลยครับ
หลังจากนั้นใต้ Product Facebook Login ให้เลือก Settings แล้วทำการ Add Site URL : ตามรูปครับ
คราวนี้เราต้องมาทำให้ R มันคุยกับ Facebook API รู้เรื่องครับโดย Download Packages Rfacebook และ RCurl เหล่านี้ (ส่วน tidyverse ผมใช้ในการ Clean และ Visualise ครับ)
ต่อมาให้กลับไปยังที่ Facebook Developer เพื่อเอาเลข App ID และ App Secret ตามรูปครับ :
หลังจากได้เลขแล้วให้เราเอามาใส่ใน Script เพื่อยืนยันตัวใน R Script ครับ โดยใช้ Code ดังรูปข้างล่าง
หลังจากกด Run ไปแล้วจะขึ้นหน้าตาฝั่ง Console ตามรูปล่างครับ
หลังจากกด Enter แล้วเราจะเด้งไปยัง Browser เพื่อรับแจ้งว่าเราได้ทำการยืนยันและเชื่อมต่อเรียบร้อยตามรูปครับ
ต่อมาให้เราทำการ Get Data มาจาก Page ครับ โดยเป้าหมายของเราคือ Cup E โดยใช้ Script ด้านล่างนี้ครับ
เมื่อใช้คำสั่ง View(Data)
เราจะเห็นว่ามันถูกเก็บให้อยู่ในรูปของ Table เรียบร้อยครับ
#Clean Data
ผมเริ่มจากการเปลี่ยนชื่อ Column ก่อนครับ โดยใช้ dplyr
ซึ่งเป็น Package ย่อยในตัวแม่ tidyverse
หลังจากนั้นผมจัดการไอ้การเว้นบรรทัดที่ R มันอ่านเป็น \n ครับ
ต่อมาผมจะ Extract เอาชื่อนางแบบออกมาโดยใช้ tidyr
ซึ่งเป็น Package ย่อยใน tidyverse
ครับ
ดังนั้นผมจะ Split ชื่อช่างภาพไปอยู่อีก Column นึงครับ โดยใช้ Regex เข้ามาช่วย
เรายังไม่ได้ชื่อช่างภาพมานะครับ เราต้องตัดพวก Chunks หรือ Text ที่ไม่เกี่ยวข้องออกไปด้วย ซึ่งผมใช้ Regex ในการตัด ที่ยกมาเป็นส่วนหนึ่งของการตัดคำนะครับ แต่ไม่ใช่ทั้งหมดนะ ตามรูปด้านล่างเรยย
ต่อมาก็ถึงขั้นตอนทำความสะอาดน้องๆ กันนะครับ (หมายถึง Clean Data นะ อิอิ) โดยหลังจาก Clean ตากล้องเสร็จผมก็ฝากไว้ใน Object ใหม่ ที่ชื่อว่า CupE.extNames3
** หลังจาก Cleaned Data เสร็จแล้วให้เรา Export ออกมาเป็น .csv
ใน Directory ก่อนนะครับ ไม่งั้นถ้า Restart คอมพ์ใหม่ Object หายหมด เพราะเราต้องไป Fetch Data จาก Facebook ใหม่นั่นเองครับ (โดนมากับตัวเลยครับ 😲) **
#Visualisation
#ใครกลับมาเป็นนางแบบซ้ำให้กับ Page มากที่สุด
ผมเริ่มจากการ Subset ข้อมูลโดยใช้ Count การนับ Row ที่เจอชื่อนางแบบซ้ำ ก่อนทำ Chart ครับ
ต่อมาก็เป็นหน้าตาหลังจาก Visualise โดยใช้ ggplot2
ซึ่งเป็นหนึ่งใน Package ย่อยของ tidyverse
น้อง Pichana Yoosuk
#ช่างกล้องที่กลับมาฝากผลงานบ่อยที่สุด
Visualise ออกมาได้ …
#แล้วน้องคนไหนได้ Likes, Shares, Comments เยอะสุด
Visualise ออกมาเป็น …
มาดูกันว่าถ้าเปลี่ยนมาเป็นแชร์เป็นน้องคนเดิมป่าวน๊าา 😕
น้อง Jajah Wantrana
แล้วใครน๊าาได้ Comments เยอะสุดจากพี่ๆ ใน Page
น้อง สุกัญญา กออิน
#ช่วงความถี่ของจำนวน Likes, Shares, Comments ที่สาวๆ ได้รับกันในแต่ละโพสต์
คราวนี้มาดูกันว่าแต่ละโพสต์ของน้องๆ นั้นไปกองกันที่จำนวน Likes, Shares, Comments ที่จำนวนเท่าไรกัน
Distribution Code Template
Likes Distribution
Shares Distribution
Comments Distribution
เมื่อทำ Shapito Test เพื่อเช็คว่ามันไม่เป็น Bell Curve จริงๆ นะ ผมเลยเขียน function shapiro.test + format adjust p-value ทีเดียวเลยครับ ได้เป็นรูปด้านล่าง
Findings คือ ทั้ง Likes, Shares, Comments นั้นวิ่งไม่เป็น Normal Distribution โดยทั้งสามตัวให้ P-value < 0.05 หมดเลยครับ ล้ม Null Hypothesis ที่ว่าแต่ละตัวนั้น Normally Distributed
เมื่อ Distribution มันเอียงไปทางขวามากผมจึงเลือก Trim ข้อมูลที่ 20% เพื่อหาค่าเฉลี่ย โดยเขียน Function ขึ้นมาตามรูปล่างครับ
Average Likes ที่สาวๆ ได้รับต่อโพสต์ = 5,756
Average Shares ที่สาวๆ ได้รับต่อโพสต์ = 423
Average Comments ที่สาวๆ ได้รับต่อโพสต์ = 79
#นางแบบคนไหนทำงานกับช่างกล้องหลากหลายที่สุด
เริ่มแรกผมทำการสร้าง Table เพื่อจับคู่น้องๆ กับช่างกล้องด้วย Script ด้านล่างครับ
หลังจากนั้นมาดูว่าใครทำงานกับช่างกล้องหลายคนที่สุด
สรุป
การดึง API เพียงแค่คุณเป็นคนเล่น Facebook ก็สามารถทำได้ครับ และเรื่องการเขียน Code เป็นเรื่องที่ฝึกทีหลังได้ แต่สิ่งที่สำคัญกว่าคือ ความรู้พื้นฐานทางสถิติ และความรู้ในสายอาชีพคุณ ยิ่งคุณรู้สิ่งเหล่านี้เยอะ คุณก็จะสามารถตั้งคำถามสำคัญได้อีกมากมาย และค่อยใช้ Tool ไม่ว่าจะเป็น Python, R ในการหาคำตอบครับ ผมก็เป็นในหนึ่งคนที่จบไม่ตรงสาย (ภาษาศาสตร์) แต่ผมเชื่อว่าถ้าคุณตั้งใจแล้วล่ะก็ ฝึกและเก่งได้แน่นอนครับ สู้ๆ ครับทุกคล 👊 🔥
Answer the questions that make an impact on the business, and don’t make things complicated — Jonathan Ma, Ex-facebook Data Scientist