ลองวิเคราะห์ข้อมูล Twitter ตามสไตล์โอตะ BNK ด้วย Tweepy, Pandas และ NLP Part 2

Wasin Faengrit
5 min readMar 14, 2020

--

มีข้อมูลในตารางเยอะๆ ตัวเลข-ตัวอักษรเต็มไปหมด เอามาวิเคราะห์ยังไงดี แล้วโชว์ผลยังไงให้ดูง่ายๆ นะ

สวัสดีคุณผู้อ่านทุกท่านครับ จากที่บทความก่อนเราได้มีการพูดคุยกันถึงวิธีการดึงข้อมูลจาก Twitter กันไปเป็นที่เรียบร้อยแล้ว ในบทความนี้เราจะมาว่ากันเรื่องวิเคราะห์ข้อมูลและแสดงผลกัน โดยเป้าหมายในการวิเคราะห์ของผมมีทั้งหมด 5 อย่าง ได้แก่ 1.จำนวนการทวิตและรีทวิตในแต่ละวัน 2.ทวิตที่มีการ Retweet สูง 3.ทวิตที่มียอด Favourite สูง 4.Hashtag ที่ถูกกล่าวถึงด้วยบ่อยๆ 5.คำที่ถูกพบบ่อย และแน่นอนว่าข้อมูลทั้งหมดที่ผมหยิบมาใช้นั้นจะอยู่ใน Hashtag #JibBNK48 ซึ่งการจะได้สิ่งเหล่านี้ออกมาโชว์สวยๆ ต้องใช้อะไรบ้าง ทำยังไง เรามาดูกันเลยดีกว่าครับ

สำหรับคนที่ไม่รู้ว่าต้องดึงข้อมูล Twitter ยังไงหรือยังไม่มีข้อมูลอยู่ในมือสามารถศึกษาได้จากพาร์ทแรกของบทความชุดนี้เลยนะครับ

สิ่งที่ต้องใช้และสิ่งที่จะเกิดขึ้นในบทความนี้

ในบทความนี้เริ่มแรกผมจะมีการกล่าวถึง Library หลักๆที่ผมเลือกใช้งาน หลังจากนั้นผมจะกล่าวถึงขั้นตอนวิเคราะห์ข้อมูลเพื่อให้ได้ข้อมูลตามที่ผมตั้งเป้าหมายไว้

โดยเหล่า Library ที่จะถูกใช้งานในบทความนี้สามารถแบ่งออกตามการใช้งานได้ตามนี้เลยครับ

  • จัดการข้อมูลในรูปแบบตาราง : Pandas
  • ทำ Bag of Word เพื่อแปลงคำให้คอมพิวเตอร์สามารถเข้าใจได้ : sklearn
  • จัดการข้อมูลตัวอักษรเช่นตัดคำ ลบคำที่ไม่ใช้ออก : pythainlp, emoji, re
  • แสดงผลข้อมูล : matplotlib ,wordcloud

สำหรับใครที่อยากจะลองเอาโค้ดไปใช้งานหรือเปิด notebook ดูคู่ไปกับบทความนี้สามารถดูได้จาก Colab :

เพื่อไม่ให้เป็นการเสียเวลา ต่อไปเรามาลองใช้ Library เหล่านี้ในการทำงานดูกันครับ

โหลดข้อมูลแล้วมาดูข้อมูลเบื้องต้นกันก่อนดีกว่า

ก่อนที่เราจะเริ่มทำจะวิเคราะห์อะไรกันก็ตาม เราควรจะมาทำความรู้จักข้อมูลของเรากันก่อน เช่น ในข้อมูลเรามีหัวตารางอะไรบ้าง มีข้อมูลประเภทไหน หน้าตาข้อมูลเป็นอย่างไร ซึ่งเครื่องมือที่เราใช้ในขั้นตอนนี้ก็คือ pandas ครับ

ก่อนอื่นจะต้อง import library และอ่านไฟล์ excel ด้วยคำสั่ง read_excel() กันก่อนนะครับ ซึ่งไฟล์ที่ผมจะดึงมาใช้คือ twitterCrawler.xlsx ซึ่งผมเซฟไว้จากพาร์ทก่อนนะครับ

import pandas as pd
df = pd.read_excel("twitterCrawler.xlsx")

จากบรรทัดนี้เราจะสามารถเรียกใช้ pandas ด้วยการใช้คำว่า pd และข้อมูลตารางในไฟล์ที่เราต้องการในตัวแปรชื่อ df นะครับ

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

df.head()

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

df.info()

คำสั่งนี้จะทำให้เรารู้ว่า ข้อมูลในแต่คอลัมน์มีเป็นตัวแปรชนิดอะไร เช่น integer datetime และในแต่คอลัมน์มีจำนวนเท่าไหร่ ซึ่งในตัวอย่างที่เราเห็นว่าจำนวนข้อมูลแต่ละในคอลัมน์ไม่เท่ากันก็ทำให้เรารู้ว่ามีช่องที่ไม่มีข้อมูลอยู่ด้วย

df.describe()

คำสั่งนี้จะเป็นการสั่งให้ pandas คำนวณสถิติพื้นฐานบางตัวออกมาให้เราเลย เช่น mean ,std ,percentile

ด้วย 3 คำสั่งนี้เราก็พอจะรู้เบื้องต้นแล้วว่าข้อมูลเรามีหน้าตาเป็นอย่างไร ซึ่งจะทำให้เราสามารถวางแผนต่อได้ว่าเราจะต้องทำยังไงต่อ ซึ่งเราก็พร้อมที่จะไปขั้นตอนต่อไปแล้วครับ

จำนวนทวิตแต่ละวันมีเท่าไหร่กันนะ

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

  • โดยเริ่มแรกเลย ผมจะทำการเปลี่ยนข้อมูลในคอลัมน์ create_at ซึ่งมีข้อมูลวันที่และเวลา ให้เหลือแค่วันก่อนนะครับ
df["date"] = df['create_at'].dt.date

คำสั่งนี้ผมทำการเลือกคอลัมน์ create_at และด้วยที่ในคอลัมน์นี้เป็นตัวแปรประเภท datetime ผมจึงใช้คำสั่ง dt.date เพื่อทำการสกัดวันที่ออกมาแล้วเก็บไว้ในคอลัมน์ที่ชื่อว่า date ซึ่งพอผมสั่ง df.head()ออกมา ก็จะเจอข้อมูลที่มีคอลัมน์ date ที่เก็บข้อมูลวันที่อยู่ในนั้นตามรูปด้านล่างนี้เลยครับ

  • หลังจากได้วันที่ละ ผมก็ทำการจัดกลุ่มข้อมูลตามวันที่แล้วรวมจำนวนรีทวีตในแต่ละวัน
df.groupby(‘date’).sum()[[‘retweet_count’]]

ในคำสั่งนี้ ผมใช้ groupby(‘date’) เพื่อสั่งให้จัดกลุ่มข้อมูลตามคอลัมน์ date และสั่ง sum() ในการรวมข้อมูลในคอลัมน์อื่นๆ และสุดท้ายใช้ [[‘retweet_count’]] เพื่อเลือกแสดงเฉพาะคอลัมน์ retweet_count

ด้วยคำสั่งเพียง 2 บรรทัดนี้ผมก็ได้ผลลัพธ์ที่ผมต้องการตามด้านล่างนี้เลย

เลือก Column ที่ต้องการแล้วลองมาเรียงลำดับเพื่อดูยอดสูงสุดกัน

ในขั้นตอนนี้ผมอยากที่จะเรียงอันดับข้อมูลในคอลัมน์ retweet_count และ favourite_count เพื่อดูข้อความที่มีการรีทวิตและกด favourite สูงสุด

คำสั่งที่เราต้องใช้งานหลักมีอยู่ 4 ส่วนครับ

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

เมื่อเอาทั้ง 4 ส่วนมารวมกันจะได้โค้ดที่เราต้องกันครับ

df.drop_duplicates(“text”).sort_values(by=[‘retweet_count’], ascending=False).head(10)[[‘text’,’retweet_count’]]

ในคำสั่งนี้ผมสั่งให้ทำการลบข้อมูลที่ซ้ำกันในคอลัมน์ text ออก หลังจากนั้นก็ทำการเรียงข้อมูลด้วยคอลัมน์ retweet_count จากมากไปน้อย แล้วสั่งให้แสดงผล 10 แถวแรกเฉพาะคอลัมน์ text และ retweet_count ซึ่งผลลัพธ์ที่ได้ก็มีข้อมูลตามด้านล่างนี้เลย

และทีนี้ผมลองทำกับ favourite_count บ้าง ก็จะได้ข้อมูลหน้าตาประมาณนี้ ซึ่งบรรลุเป้าหมายในขั้นตอนนี้ครับ

ทำ Bag-of-Words แล้วมาดูกันว่าเจอคำไหนเยอะที่สุด

หลังจากเราเล่นกับข้อมูลตัวเลขไปแล้ว ในขั้นตอนนี้เราจะมาทำการเล่นแร่แปรธาตุข้อมูลตัวอักษรกันบ้าง

สมมติผมมีคำว่า “จิ๊บร้องเพลงเพราะมาก” แล้วผมอยากให้คอมพิวเตอร์สามารถเข้าใจประโยคนี้ได้ว่ามีคำว่าอะไรอยู่ในประโยคได้ สิ่งหนึ่งที่ผมทำได้คือการใช้เทคนิคที่ชื่อว่า Bag-of-Words นั่นเองครับ โดยเทคนิคนี้ทำให้คอมพิวเตอร์มองประโยคใดๆเป็นเช็ตของคำ เช่นคำว่า “จิ๊บร้องเพลงเพราะมาก” จะสามารถทำเป็นเซ็ตคำได้ว่า [จิ๊บ,ร้อง,เพลง,เพราะ,มาก] ซึ่งในขั้นตอนนี้ผมจะใช้เทคนิคนี้เพื่อสร้างเซ็ตของคำทั้งหมดแล้วจึงมารวมจำนวนครั้งที่เจอครับ

ในบทความนี้ผมขอเสนอเครื่องมือหนึ่งที่คุณจะสามารถทำ Bag-of-Words ได้ง่ายขึ้นนั้นก็คือ CountVectorizer ของ Sklearn ครับ โดยตัวอย่างโค้ดที่ใช้สร้าง Bag-of-Words และนับจำนวนแต่ละคำ สามารถดูได้ด้านล่างนี้เลยครับ

from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
vectorizer = CountVectorizer(tokenizer=tokenize_function)
transformed_data = vectorizer.fit_transform(data)
count_df= pd.DataFrame(columns = ['word', 'count'])
count_df['word'] = vectorizer.get_feature_names()
count_df['count'] = np.ravel(transformed_data.sum(axis=0))

ในการทำงานของโค้ดชุดนี้สามารถแบ่งได้เป็น 2 ส่วน ดังนี้ครับ

  • การสร้าง Bag-of-Words: ในส่วนนี้ผมเรียกใช้งาน CountVectorizer ในชื่อ vectorizer โดยกำหนดตัวตัดคำ(tokenizer) เป็นฟังค์ชั่นที่ชื่อว่า tokenize_function โดยการสร้างฟังค์ชั่นผมจะกล่าวถึงในข้างล่างต่อไปนะครับ หลังจากนั้นผมก็ใช้คำสั่ง fit_transform เพื่อสอน vectorizer ว่ามีคำอะไรบ้างใน data และแปลงข้อมูล data ให้อยู่ในรูปแบบเดียวกับเราสอนให้ vectorizer โดยผมจะเก็บข้อมูลที่แปลงเสร็จในตัวแปรชื่อว่า transformed_data
  • นับคำแล้วเก็บข้อมูลลง Dataframe : เริ่มแรกผมสร้าง Dataframe ที่มีคอลัมน์ word และ count เพื่อเก็บคำและจำนวนครั้งที่เจอ ส่วนข้อมูลที่ผมจะนำมาใส่ใน Dataframe ผมได้มาจากการใช้คำสั่ง vectorizer.get_feature_names() เพื่อให้ได้ข้อมูลคำทั้งหมดที่ผมสอน vectorizer ไป และนับจำนวนคำที่แปลงแล้วด้วย transformed_data.sum(axis=0) แล้วใช้คำสั่ง ravel ของ numpy เพื่อแปลงให้ข้อมูลนับคำเป็น array มิติเดียว เพื่อให้ข้อมูลอยู่ในรูปเหมาะสมกับการเอาไปใส่ในคอลัมน์ Dataframe

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

  • นับจำนวน Hashtag ที่พบบ่อย

ในข้อมูล insight นี้ผมได้เตรียมข้อมูล Hashtag ไว้โดยการคั่นด้วย / อยู่แล้ว เพราะงั้นวิธีตัดคำของผมจะใช้การแบ่งคำด้วย / ครับ

def slash_tokenize(d):  
result = d.split("/")
return result
hastag_data = df["hashtag"].dropna()
vectorizer = CountVectorizer(tokenizer=slash_tokenize)
transformed_data = vectorizer.fit_transform(hastag_data)
hash_tag_cnt_df = pd.DataFrame(columns = ['word', 'count'])
hash_tag_cnt_df['word'] = vectorizer.get_feature_names()
hash_tag_cnt_df['count'] = np.ravel(transformed_data.sum(axis=0))
hash_tag_cnt_df.sort_values(by=['count'], ascending=False).head(10)

โดยโค้ดนี้ผมสร้าง function ชื่อ slash_tokenize ขึ้นเพื่อแยกคำด้วย / และใช้ข้อมูลจากคอลัมน์ชื่อ hashtag ซึ่งผมลบข้อมูลที่ว่างออกด้วยคำสั่ง dropna() สุดท้ายผมจะเรียงข้อมูลจากมากไปน้อยได้ผลลัพธ์ตามด้านล่างนี้เลยครับ

  • นับจำนวนคำที่พบบ่อยในทวิต

ต่อไปเรามาดูข้อมูลทวิตกันบ้างครับ คราวนี้จะเริ่มมมีความยากมากขึ้นแล้ว เพราะมีตัวอักษรที่เพิ่มเข้ามาเช่น emoji หรือสัญลักษณ์ต่างๆและยังมี link ภาพ youtube และอื่นๆ อีกมากมาย รวมถึงภาษาไทยจะไม่มีการเว้นวรรคหรือ . เหมือนภาษาอังกฤษทำให้มีความยากในการตัดคำอีก เพราะงั้นผมขอนำเสนอเครื่องมือ 3 อย่างในการลบคำที่เราไม่ต้องการออก และอีก 1 เครื่องมือสำหรับใช้ตัดคำภาษาไทย

  1. ลบคำที่ไม่ต้องการออกด้วย .replace()

แรกสุดเลยผมขอกล่าวถึง build in library ที่มาพร้อมกับตัวแปร string ของ python วิธีใช้ก็ง่ายๆ ถ้าผมอยากแทนที่ ! ออกจาก text ก็ใช้งานโค้ดด้านล่างได้เลย

text = text.replace("!","")

3. ลบ emoji ออกด้วย library emoji

emoji เป็น library ที่รวบรวม unicode ของ emoji ไว้ เราสามารถที่จะนำเอา library ดังกล่าวมาใช้ในการลบ emoji ออกจากข้อความได้ด้วยตัวอย่างโค้ดด้านล่างนี้เลยครับ

import emoji
emoji_list = [c for c in allchars if c in emoji.UNICODE_EMOJI]
text = ' '.join([str for str in text.split() if not any(i in str for i in emoji_list)])

3. ลบ pattern ของคำที่ไม่ต้องการออกด้วย regular expression

สมมุติว่าเรารู้ว่า pattern ของคำที่เราไม่ต้องการ เช่น link ต่างๆ ที่จะต้องขึ้นด้วย http หรือต้องการลบภาษาอื่นที่ไม่ใช่ภาษาไทยออกเราก็สามารถที่จะใช้คำสั่ง re.sub() ในการนำคำเหล่านั้นออกได้ ตัวอย่างข้างล่างนี้จะเป็นการใช้ regular expression ในการนำ link ต่างๆออกนะครับ

import re
text = re.sub(r'https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)

4. ตัดคำและนำ stopwords ออกด้วย pythainlp

ในปัจจุบันมีการพัฒนา pythainlp สำหรับทำ Natural Languge Processing ภาษาไทยขึ้น ซึ่งความสามารถของมันก็มากมายเลยครับ แต่ในบทความนี้ผมได้นำความสามารถในการตัดคำและคลังคำศัพท์ stopword ซึ่งเป็นคำประเภท ครับ ค่ะ มาใช้ครับ โดยวิธีใช้ก็ตามด้านล่างเลยนี้

from pythainlp.corpus import thai_stopwords
from pythainlp.tokenize import word_tokenize
stop_word = list(thai_stopwords())
word_list = word_tokenize(sentence)
result = [word for word in word_list if word not in stop_word and " " not in word]

คุณผู้อ่านสามารถเลือกที่จะใช้วิธีการลบคำที่ไม่ต้องการและการตัดคำตามที่สะดวกกับข้อมูลของผู้อ่านได้เลยนะครับ โดยผมเลือกที่จะคลีนข้อมูล 2 แบบคือมีทั้งภาษาอังกฤษและภาษาไทย และมีแต่ภาษาไทย แต่ใน medium นี้ผมจะพูดถึงการคลีนแบบเลือกเฉพาะภาษาไทยเท่านั้น หากต้องการดูอีกแบบ คุณผู้อ่านสามารถดูใน Colab ได้เลยครับ

def cleanText(text):
text = str(text)
text = re.sub('[^ก-๙]','',text)
stop_word = list(thai_stopwords())
sentence = word_tokenize(text)
result = [word for word in sentence if word not in stop_word and " " not in word]
return " /".join(result)

def tokenize(d):
result = d.split("/")
result = list(filter(None, result))
return result
new_text = []
for txt in df["text"]:
new_text.append(cleanText(txt))
vectorizer = CountVectorizer(tokenizer=tokenize)
transformed_data = vectorizer.fit_transform(new_text)
count_data = zip(vectorizer.get_feature_names(), np.ravel(transformed_data.sum(axis=0)))
keyword_df2 = pd.DataFrame(columns = ['word', 'count'])
keyword_df2['word'] = vectorizer.get_feature_names()
keyword_df2['count'] = np.ravel(transformed_data.sum(axis=0))
keyword_df2.sort_values(by=['count'], ascending=False).head(10)

มาทำData visualization กันดีกว่า

สุดท้ายเมื่อได้ข้อมูลทั้งหมดกันแล้ว ในการดูข้อมูลในรูปแบบตารางบางครั้งอาจจะมีการตกหล่นแล้วดูไม่ค่อยน่าสนใจนัก เราจึงมาหาทางทำ data visualize แสดงผลให้น่าดูกันดีกว่า โดยในขั้นตอนนี้เราจะมาทำ histogram และ word cloud กันครับ

  • Histogram

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

df.groupby('date').sum()[['retweet_count']].plot(kind="bar",figsize=(12, 6))

และต่อมาผมลองทำเหมือนกันกับข้อมูล Hashtag ที่พบบ่อยบ้าง ซึ่งได้ผลตามนี้

hash_tag_cnt_df.sort_values(by=['count'], ascending=False).set_index('word').head(10).plot(kind="bar",figsize=(12, 6))

จะเห็นว่าสามารถดูข้อมูล Hashtag และจำนวนของมันได้อย่างเข้าใจง่ายและชัดเจน แต่ทีนี้ผมอยากลองเพิ่มความน่าสนใจให้กับการ Visualization กับข้อมูลที่เป็นประเภทคำ เลยลองทำสิ่งที่เรียกว่า Word Cloud ขึ้น

  • Word Cloud

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

เครื่องมือที่เราต้องใช้เพิ่มเติมมี 2 อย่างคือ wordcloud และ mathplotlib โดยสิ่งที่เราต้องทำคือเปลี่ยนข้อมูลใน DataFrame ให้เป็นประเภท Dictionary และสั่งให้ wordcloud สร้างรูปให้ สุดท้ายเราก็ใช้ mathplotlib ในการแสดงผลภาพนั้น

เริ่มแรกผมลองกับข้อมูล Hashtag ก่อน

from wordcloud import WordCloud
import matplotlib.pyplot as plt
word_dict = {}
for i in range(0,len(keyword_df1)):
try:
word_dict[hash_tag_cnt_df.word[i]]= hash_tag_cnt_df['count'][i]
except:
pass
wordcloud = WordCloud(font_path='/content/THSarabunNew.ttf',background_color ='white',max_words=100).fit_words(word_dict)
fig, ax = plt.subplots(1, 1, figsize=(16, 12))
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis("off")
fig.show()

และผมก็ลองทำกับคำในทวิตอีกที

from wordcloud import WordCloud
import matplotlib.pyplot as plt
word_dict = {}
for i in range(0,len(keyword_df2)):
word_dict[keyword_df2.word[i]]= keyword_df2['count'][i]
wordcloud = WordCloud(font_path='/content/THSarabunNew.ttf',background_color ='white',max_words=100).fit_words(word_dict)
fig, ax = plt.subplots(1, 1, figsize=(16, 12))
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis("off")
fig.show()

ทีนี้เราก็จะได้วิธีการโชว์ผลแบบน่าสนใจขึ้นแล้ว~

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

สุดท้ายนี้ผมขอฝากบุคคลที่เป็นที่มาของชุดข้อมูลนี้ด้วยครับ สามารถติดตามจิ๊บ BNK48 ได้ที่ https://www.facebook.com/bnk48official.jib/

และสำหรับใครที่สนใจข้อมูลและ Community เกี่ยวกับด้าน Data science สามารถติดตามได้ที่ช่องทาง > Botnoi Classroom

ไว้พบกันใหม่บทความถัดไป ขอบคุณครับ :)

--

--

Wasin Faengrit

Data Scientist & Project Manager @ iBotnoi ,Biomedical Engineering #9 @ Mahidol University