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

R เป็นภาษาที่สร้างขึ้นโดยนักสถิติจากมหาลัยโอ๊คแลนด์ ในประเทศนิวซีแลนด์ ที่ชื่อขึ้นต้นด้วย R ทั้งสองคู่ นั้นก็คือ Ross Ihaka และ Robert Gentleman ทั้งสองสร้าง R ขึ้นมาในปี 1995 และปล่อยบีต้าเวอร์ชั่น (เวอร์ชั่นที่เปิดให้ผู้ใช้ทั่วไปดาวน์โหลดไปใช้งานเพื่อทดสอบการใช้งานจริง ก่อนที่จะเปิดตัวอย่างเป็นทางการ) ใน 5 ปีถัดมา
นอกจากนี้ R ยังเป็นภาษาโปรแกรมที่ ประมวลผลเชิงสถิติ และแสดงผลในรูปแบบกราฟ อีกทั้งยังเป็นโปรแกรมแบบ Open Source ซึ่งสามารถติดตั้ง ใช้งานได้อย่างไม่มีข้อจำกัด ไม่มีค่าใช้จ่ายใดๆ (ฟรีนั่นเอง) และมี community ที่คอยช่วยใหญ่พอสมควร
เหตุผลที่ R เป็นเครื่องมือด้าน Data Science ขวัญใจหลายๆคนคือ
- มีแพคเกจที่สามารถรองรับการใช้งานกระบวนการทางสถิติ ซึ่งตอนนี้มีแพคเกจมากกว่า 14,000 แพคเกจอยู่ใน CRAN ซึ่งเป็นที่เก็บโค้ดและเอกสารประกอบ R
- มี library สำหรับการทำ Data Visualization ที่ยอดเยี่ยม เช่น ggplot2
- สามารถทำงานแบบ offline ได้
- ถูกออกแบบมา เพื่อให้ง่ายต่อการใช้งานทั้งสัญลักษณ์ และสูตรต่างๆทางคณิตศาสตร์
- เป็นเครื่องมือสำคัญในการทำงานวิจัยด้านสถิติ
- มีความคล้ายคลึงกับภาษาโปรแกรม S
- สามารถทำงานได้หลากหลายระบบปฏิบัติการ เช่น UNIX, Linux, Mac และ Windows
ส่วนด้านการใช้งานนั้น R อาจจะไม่ใช่เครื่องมือที่ทาง Data Science ที่เร็วที่สุด เนื่องจากต้องใช้หน่วยความจำค่อนข้างมากในการทำงานกับข้อมูลชุดใหญ่
Python คืออะไร
Python นั้นถูกสร้างขึ้นมาก่อน R ช่วงระยะเวลาหนึ่งในปี 1991 โดย Guido van Rossum โปรแกรมเมอร์ชาวดัตช์ ประเทศเนเธอร์แลนด์ ในตอนแรก Guido อยากจะพัฒนาโปรแกรมหนึ่ง ซึ่งภาษาที่ใช้ในการพัฒนานั้นไม่ตอบโจทย์ และค่อนข้างซับซ้อน ทำให้ตัดสินใจสร้างภาษาโปรแกรมใหม่ที่ง่ายต่อการเรียนรู้ และช่วยในการแปลงความคิดของการแก้ปัญหาออกมาเป็นลำดับขั้นตอน
Python นั้นเป็นหนึ่งในภาษาโปรแกรมคอมพิวเตอร์ระดับสูง (High-level programming language) ซึ่งใกล้เคียงภาษามนุษย์มากกว่าภาษาของคอมพิวเตอร์
เหตุผลที่ Python เป็นเครื่องมือด้าน Data Science ที่ยอดนิยมมากที่สุดคือ
- เป็นการเขียนโปรแกรมเชิงวัตถุ (object-oriented language) หรือ หนึ่งในรูปแบบการเขียนโปรแกรมที่ให้ความสำคัญกับ “วัตถุ” ซึ่งสามารถนำมาประกอบและทำงานรวมกันได้
- นำไปใช้ในการเขียนโปรแกรมได้หลากหลายประเภท โดยไม่ได้จำกัดอยู่ที่งานเฉพาะทางใดทางหนึ่ง (General-purpose language)
- มี libraries มากมาย และมี community ที่เข้มแข็งคอยช่วยเหลือ
- เข้าใจได้ง่าย และสามารถเรียนรู้ได้เร็ว
- มี libraries ยอดนิยมอย่าง Pandas, NumPy และ scikit-learn ที่ทำให้การสร้างโมเดล Machine Learning สะดวกขึ้น
- สามารถทำงานได้หลากหลายระบบปฏิบัติการเหมือนกัน เช่น UNIX, Linux, Mac และ Windows
ปกติแล้วจำนวนคนที่ใช้งาน R และ Python ในงาน data science หรือ data analysis นั้นมีพอๆกัน โดยที่คนที่มีพื้นฐานด้านเลขและสถิติดี มักจะชอบใช้ R ในขณะที่คนที่มีพื้นฐานด้านการเขียนโปรแกรมภาษาอื่นๆมาก่อน มักชอบใช้ Python
ความแตกต่างระหว่าง R และ Python
ความแตกต่างหลักของสองภาษานี้ในวิธีการใช้งาน Data Science คือ ทั้งคู่ต่างก็เป็นเครื่องมือแบบ opensource มี community ขนาดใหญ่คอยรองรับ และมี libraries มาให้ใช้มากขึ้นเรื่อยๆ แต่ R นั้นเน้นการวิเคราะห์ทางสถิติ ส่วน Python สามารถเขียนโปรแกรมได้หลากหลายตั้งแต่ทั่วไปจนถึงการพัฒนาซอฟแวร์
Python เป็นภาษาอเนกประสงค์ คล้ายกับ C ++ และ Java มี Syntax ที่เรียนรู้ได้ง่าย เราสามารถใช้วิเคราะห์ข้อมูล สร้างโมเดลในระบบที่สามารถเพิ่มเติมแก้ไขในอนาคตได้ (scalable production environments) ตัวอย่างเช่น ใช้ Python สร้าง face recognition ใน mobile API หรือสร้างแอพสำหรับ Machine Learning
ขณะที่ R นั้นสร้างโดยนักสถิติ ก็จะเน้นไปทาง โมเดลทางสถิติ และการวิเคราะห์แบบพิเศษเชิงสถิติ เรามักจะใช้ R ในการวิเคราะห์สถิติเชิงลึก โดยเขียนโค้ดไม่กี่บรรทัด ก็จะได้กราฟออกมาด้วย ตัวอย่างเช่น ใช้ในการวิเคราะห์พฤติกรรมของลูกค้า หรือ การศึกษาค้นคว้าหากลุ่มยีน
ข้อดีและข้อเสียของ R
ข้อดี ของ R
- R เป็นภาษาที่เกิดมาเพื่อวิเคราะห์ข้อมูลมีฟังก์ชั่นมากมาย การตรวจสอบวิธีการทางสถิติอย่างสมมติฐานทางสถิติ สามารถทำได้โดยโค้ดไม่กี่บรรทัด
- โครงสร้างของภาษา นั้นเข้าใจได้ง่ายสำหรับผู้เชี่ยวชาญจากหลายหลากอาชีพ จึงเป็นเครื่องมือที่คนทั่วไปสามารถใช้ได้ แม้ว่าจะไม่ได้เป็นโปรแกรมเมอร์ก็ตาม
ข้อเสีย ของ R
- ถึงแม้ว่า R จะช่วยให้การทำงานการคิดวิเคราะห์ง่ายขึ้น แต่ก็ไม่ได้หมายความว่าคอมพิวเตอร์จะทำงานสะดวกขึ้นด้วย แต่เราก็สามารถเพิ่มประสิทธิภาพและความเร็วในการทำงานได้โดยใช้แพคเกจเสริม เช่น pqR, renjin, FastR และ Riposte
- R เป็นภาษาที่มีความเฉพาะเจาะจงสูงเมื่อเทียบกับภาษามาตรฐานอื่นๆ เช่น การที่ index เริ่มจาก 1 แทนที่จะเป็น 0 เหมือน Python และภาษาอื่น
สำหรับใครที่เริ่มอยากเรียน R แล้ว เรามีหนังสือแจกฟรีพร้อมสรุปคราวๆที่นี่เลย หรือถ้าสนใจเป็นคลิปวิดีโอสอนเขียน R Programming เข้าใจง่าย ๆ ใน 20 นาทีเป็นภาษาไทยแทนก็เริ่มได้เลยค่า
ข้อดีและข้อเสียของ Python
ข้อดี ของ Python
- เรียกได้ว่าเป็นภาษาสากลอเนกประสงค์ (Universal multipurpose language) สามารถทำได้ตั้งแต่การประมวลผลข้อมูล จนถึงสร้างแอปพลิเคชั่น
- Python เป็นภาษาที่มีความรวดเร็วในการพัฒนา แต่ละเวอร์ชั่น ประสิทธิภาพก็จะเพิ่มขึ้น และ syntax ก็จะใช้งานง่ายขึ้น
ข้อเสีย ของ Python
- ความเร็วของ Python จะรวดเร็วไม่เท่าภาษาในการเขียนโปรแกรมบางตัว เช่น C++ หรือ Java
- เนื่องจากเป็นภาษาที่เขียนได้อย่างอิสระ กฏเกณฑ์น้อย ทำให้การตรวจสอบข้อผิดพลาดมีความซับซ้อน เช่น ตัวแปร 1 ตัว สามารถใส่ข้อมูลประเภทไหนก็ได้
แต่ถ้าสนใจ Python มากกว่า เราก็มีหนังสือ Python for Data Science แจกฟรีเช่นกัน
ความแตกต่างในการใช้งานของ R และ Python
ที่นี้เราลองมาดูการใช้งานจริงๆของทั้งสองในแต่ละแบบกันบ้าง ว่าตัวไหนใช้ได้ดีในการใช้งานแบบไหน
Python | R | |
การใช้งาน | เป็นการเขียนโปรแกรมเชิงวัตถุ ซึ่งทำให้โปรแกรมเมอร์รันโปรแกรมได้อย่างมีเสถียรภาพ เป็นสัดส่วนและง่ายต่อการอ่านมากขึ้น | จุดประสงค์หลักของภาษา คือการที่เน้นวิธีการง่ายๆ สำหรับการวิเคราะห์ข้อมูล สถิติ และการแสดงโมเดล |
การวิเคราะห์เชิงสถิติ (Statistical Analysis) | Python นั้นมี libraries ที่เรียกว่า statsmodels ใช้ในการเตรียมวิธีการทางสถิต | R ถูกสร้างขึ้นมาสำหรับการวิเคราะห์เชิงสถิติ และเชิงตัวเลข สำหรับข้อมูลชุดใหญ่ ดังนั้นจึงมีหลายทางในการตรวจสอบข้อมูล |
การวิเคราะห์ข้อมูล (Data Analsis) | แพคเกจสำหรับการวิเคราะห์ข้อมูลใน Python นั้นเดิมทีทำไม่ค่อยได้ แต่เวอร์ชั่นหลังๆก็มี Numpy และ Pandas ไว้ใช้ได้ในการวิเคราะห์ข้อมูล | R มีประโยชน์มากสำหรับการวิเคราะห์ข้อมูล เพราะว่ามีแพคเกจหลายอันไว้ใช้ และได้เปรียบในการใช้คำนวณสูตรทางคณิตศาสตร์ จึงเหมาะกับการใช้วิเคราะห์ข้อมูลมากๆ |
การเรียนรู้ของเครื่อง (Machine Learning & Deep Learning) | Python จะเป็นที่นิยมมากสำหรับการสร้างโมเดล Machine Learning เช่น Scikit-learn มีหลายเครื่องมือไว้สร้างโมเดล สำหรับ Deep Learning มีแพคเกจอย่าง tensorflow, pytorch และ theano ที่สามารถใช้งานได้เสถียรและมีประสิทธิภาพมากกว่า R | สำหรับ Machine Learning ย่อสั้นๆ ML ใน R สามารถใช้ Caret และยังมีแพคเกจอื่นๆมากมาย เช่น Nnet ซึ่งสามารถใช้ในโครงข่ายประสาทเทียม (neural networks) ถ้าโมเดลต้องมีการปรับค่าตัวแปรหรือลูกเล่นต่างๆมาก R ก็อาจจะยังทำไม่ได้ดีนัก |
อนุกรมเวลา (Time series) | Python ใช้งานได้ดีกว่าใน LSTM (Long Short-Term Memory) ซึ่งเป็นโครงข่ายประสาทเทียมแบบหนึ่งที่ถูกออกแบบมาสำหรับการประมวลผลลำดับ และ โมเดล Deep Learning อื่นๆของอนุกรมเวลา | R ใช้งานได้ดีกว่าในแบบจำลองมาร์คอฟซ่อนเร้นขั้นสูง (HMM), การพยากรณ์อนุกรมเวลาลำดับชั้น (Hierarchical time series) และ โมเดลเศรษฐมิติขั้นสูง (Econometric model) |
การประมวลผลภาษาธรรมชาติหรือภาษามนุษย์ (NLP-Natural Language Processing) | Python ใช้ได้ดีสำหรับการประมวลผลภาษาธรรมชาติโดยมี NLTK สำหรับการเตรียมข้อมูล (preprocessing) และ Gensim สำหรับสร้างโมเดลทั้ง LDA และ word2Vec | R ไม่ได้มีแพคเกจในการจัด stringที่ดีนัก แต่ก็มีแพคเกจ Rword2vecs ซึ่งสามารถสร้างโมเดล word2vec หรือมเดลที่ใช้สร้าง word embedding ในขณะที่แพคเกจ MASS สร้าง LDA (Latent Dirichlet Allocation) ซึ่งเป็นอีกเทคนิคหนึ่ง |
การในการดึงข้อมูลจากเว็บเพจ (Web Scraping) | การดึงข้อมูลจากเว็บเพจโดยใช้ Python ทำได้โดยใช้ BeautifulSoup | สำหรับการในการดึงข้อมูลจากเว็บเพจใน R สามารถใช้ Rvest จาก library ที่เรียกว่า Tidyverse |
การคํานวณใน database (In-database computation) | Python มีตัวเลือกน้อยกว่า สามารถใช้ Postgres, Microsoft’s SQL Server | R สามารถใช้ SQL Server, Postgres, Teradata และ Oracle |
ระบบกระแสงานอัตโนมัติ (Workflow Automation) | Python มีเครื่องมือสองอันในการใช้งานคือ Airflow และ Luigi | R ไม่มีเครื่องมือที่มาช่วยในการทำ automation |
บริการ Cloud-ML | Python ใช้ได้ทุกบริการ ตั้งแต่ AWS, Azure ML, Sagemaker และ Google Cloud | R ใช้เครื่องมือในการทำ Machine Learning บน Cloud Computing base ได้หลายบริการเช่น Azure ML และ Google CloudML |
สรุป เรียน R หรือ Python ดีกว่ากัน
R และ Python มีความแตกต่างมากมายหลายแง่มุม แต่ทั้งนี้ทั้งนั้นก็เป็นภาษาที่ดีในการใช้วิเคราะห์ข้อมูล และใช้งานด้าน data science
การเลือกว่าจะใช้งาน R หรือ Python นั้นขึ้นอยู่กับ วัตถุประสงค์ในการใช้งาน และความถนัดส่วนบุคคล ซึ่งเราก็ต้องลองดูว่าเราจะทำอะไร แล้วเครื่องมือไหนมีข้อจำกัดอะไรบ้าง ไม่มีถูก ไม่มีผิด
สำหรับใครที่ตื่นเต้น และอยากลองเรียนทั้งสองภาษาเลย ก็สามารถเข้าไปเรียนทั้ง R และ Python ตามลิงค์ข้างล่างนี้ได้
แล้วภาษาโปรแกรมมิ่งอื่น ๆ ล่ะ
สำหรับคนที่อยากรู้เพิ่มเติมเกี่ยวกับภาษาโปรแกรมมิ่งอื่น ๆ เช่น SQL, Scala, JavaScript ฯลฯ ว่าภาษาเหล่านี้เกี่ยวกับงาน Data อย่างไรบ้าง สามารถอ่านได้ในบลอคนี้เลยนะคะ
ถ้าชอบเนื้อหาแนวนี้ ติดตามบทความดี ๆ ด้าน Data และวีดิโอสนุก ๆ ดูชิล ๆ แล้วได้ความรู้กันได้ที่ Facebook Page: DataTH และ Youtube Channel: Data Science ชิลชิล แล้วเจอกันนะคะ
แล้วพบกันใหม่บทความหน้าค่ะ