r vs python data science

Python vs R เรียนภาษาไหนดี สำหรับงาน Data Science

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

มาทำความรู้จักกับพระเอก นางเอกของเรากันค่ะ

R คืออะไร

Screenshot knitr RStudio
R Code [ขอขอบคุณรูปจาก Wikimedia]

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 Code
Python Code [ขอขอบคุณรูปจาก Unsplash]

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

Pros

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

Cons

  • การทำงานที่ช้า
  • มีความเฉพาะเจาะจงสูง

ข้อดี ของ R

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

ข้อเสีย ของ R

  • ถึงแม้ว่า R จะช่วยให้การทำงานการคิดวิเคราะห์ง่ายขึ้น แต่ก็ไม่ได้หมายความว่าคอมพิวเตอร์จะทำงานสะดวกขึ้นด้วย แต่เราก็สามารถเพิ่มประสิทธิภาพและความเร็วในการทำงานได้โดยใช้แพคเกจเสริม เช่น pqR, renjin, FastR และ Riposte
  • R เป็นภาษาที่มีความเฉพาะเจาะจงสูงเมื่อเทียบกับภาษามาตรฐานอื่นๆ เช่น การที่ index เริ่มจาก 1 แทนที่จะเป็น 0 เหมือน Python และภาษาอื่น

สำหรับใครที่เริ่มอยากเรียน R แล้ว เรามีหนังสือแจกฟรีพร้อมสรุปคราวๆที่นี่เลย หรือถ้าสนใจเป็นคลิปวิดีโอสอนเขียน R Programming เข้าใจง่าย ๆ ใน 20 นาทีเป็นภาษาไทยแทนก็เริ่มได้เลยค่า

ข้อดีและข้อเสียของ Python

Pros

  • เป็นภาษาสากลอเนกประสงค์
  • มีการพัฒนาอยู่ตลอดเวลา

Cons

  • ขาด repository สามัญและ libraries ที่สามารถแทนกันได้
  • ความซับซ้อนในการตรวจสอบข้อผิดพลาด

ข้อดี ของ Python

  • เรียกได้ว่าเป็นภาษาสากลอเนกประสงค์ (Universal multipurpose language) สามารถทำได้ตั้งแต่การประมวลผลข้อมูล จนถึงสร้างแอปพลิเคชั่น
  • Python เป็นภาษาที่มีความรวดเร็วและหนักหน่วงในการพัฒนา แต่ละเวอร์ชั่น ประสิทธิภาพก็จะเพิ่มขึ้น และ syntax ก็จะใช้งานง่ายขึ้น

ข้อเสีย ของ Python

  • ไม่มี repository สามัญ หรือ folder ที่ใช้เก็บข้อมูลทั่วไป และ ไม่มี libraries ทางเลือกมากนักเหมือนกับ R
  • ถึงแม้ว่าจะเป็นภาษาที่มีการพัฒนาต่อเนื่องก็ตาม แต่ก็มีความซับซ้อนในการตรวจสอบข้อผิดพลาด เช่นการกำหนดข้อมูลคนละชุดให้ ตัวแปรตัวเดียวกัน

แต่ถ้าสนใจ Python มากกว่า เราก็มีหนังสือ Python for Data Science แจกฟรีเช่นกัน

ความแตกต่างในการใช้งานของ R และ Python

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

python vs r data science compare table
ตารางเปรียบเทียบ Python vs R
PythonR
การใช้งานเป็นการเขียนโปรแกรมเชิงวัตถุ ซึ่งทำให้โปรแกรมเมอร์รันโปรแกรมได้อย่างมีเสถียรภาพ เป็นสัดส่วนและง่ายต่อการอ่านมากขึ้นจุดประสงค์หลักของภาษา คือการที่เน้นวิธีการง่ายๆ สำหรับการวิเคราะห์ข้อมูล สถิติ และการแสดงโมเดล
การวิเคราะห์เชิงสถิติ (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 และ word2VecR ไม่ได้มีแพคเกจในการจัด 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 ServerR สามารถใช้ SQL Server, Postgres, Teradata และ Oracle
ระบบกระแสงานอัตโนมัติ (Workflow Automation)Python มีเครื่องมือสองอันในการใช้งานคือ Airflow และ LuigiR ไม่มีเครื่องมือที่มาช่วยในการทำ automation
บริการ Cloud-MLPython ใช้ได้ทุกบริการ ตั้งแต่ AWS, Azure ML, Sagemaker และ Google CloudR ใช้เครื่องมือในการทำ Machine Learning บน Cloud Computing base ได้หลายบริการเช่น Azure ML และ Google CloudML
ความแตกต่างในการใช้งานของ R และ Python

สรุป เรียน R หรือ Python ดีกว่ากัน

R และ Python มีความแตกต่างมากมายหลายแง่มุม แต่ทั้งนี้ทั้งนั้นก็เป็นภาษาที่ดีในการใช้วิเคราะห์ข้อมูล และใช้งานด้าน data science

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

สำหรับใครที่ตื่นเต้น และอยากลองเรียนทั้งสองภาษาเลย ก็สามารถเข้าไปเรียนทั้ง R และ Python ตามลิงค์ข้างล่างนี้ได้

แล้วภาษาโปรแกรมมิ่งอื่น ๆ ล่ะ

สำหรับคนที่อยากรู้เพิ่มเติมเกี่ยวกับภาษาโปรแกรมมิ่งอื่น ๆ เช่น SQL, Scala, JavaScript ฯลฯ ว่าภาษาเหล่านี้เกี่ยวกับงาน Data อย่างไรบ้าง สามารถอ่านได้ในบลอคนี้เลยนะคะ

ถ้าชอบเนื้อหาแนวนี้ ติดตามบทความดี ๆ ด้าน Data และวีดิโอสนุก ๆ ดูชิล ๆ แล้วได้ความรู้กันได้ที่ Facebook Page: DataTH และ Youtube Channel: Data Science ชิลชิล แล้วเจอกันนะคะ

แล้วพบกันใหม่บทความหน้าค่ะ

บทความแนะนำอื่น ๆ