Pandas vs. PySpark เลือกเครื่องมือที่ใช่ให้เหมาะกับงานข้อมูลของคุณ?

Pandas vs. PySpark เลือกเครื่องมือที่ใช่ให้เหมาะกับงานข้อมูลของคุณ?

02 ตุลาคม 2567

Pandas และ PySpark เป็นเครื่องมือที่ใช้สำหรับการจัดการและวิเคราะห์ข้อมูลใน Python โดย Pandas เป็นไลบรารียอดนิยมที่ใช้สำหรับการทำงานกับชุดข้อมูลขนาดเล็ก ถึงขนาดกลาง ในหน่วยความจำบนเครื่องเดียว (single-node) ซึ่งมีฟังก์ชันหลากหลายสำหรับการจัดการและวิเคราะห์ข้อมูล ในทางตรงกันข้าม PySpark ซึ่งสร้างขึ้นบน Apache Spark ได้รับการออกแบบมาเพื่อการประมวลผลแบบกระจาย (distributed computing) ทำให้สามารถประมวลผลชุดข้อมูลขนาดใหญ่ได้บนหลายเครื่องใน cluster เดียว

Pandas คืออะไร

Pandas เป็นหนึ่งใน library แบบ open-source ที่ถูกใช้งานมากที่สุดใน Python สำหรับข้อมูลที่มีโครงสร้างแบบตารางเพื่อการวิเคราะห์ข้อมูลได้หลากหลาย เช่น การกรองข้อมูล การรวมข้อมูล การแปลงข้อมูล รวมถึงการทำความสะอาดและเตรียมข้อมูล จนไปถึงการทำ Machine Learning และอื่น ๆ อีกมากมาย โดยสามารถอ่านไฟล์ได้ในหลายรูปแบบ เช่น CSV, JSON, SQL และรูปแบบอื่นๆ จากนั้นจะสร้างข้อมูลในรูปแบบ DataFrame ซึ่งเป็นวัตถุที่มีโครงสร้างประกอบด้วยแถวและคอลัมน์ (คล้ายกับตาราง SQL)

ตัวอย่างการใช้งาน Pandas DataFrame

เริ่มต้นใช้งาน Pandas library โดยการ import library และสร้าง DataFrame ด้วยฟังก์ชัน pd.DataFrame โดยได้ผลลัพธ์ออกมาเป็นตารางที่มี index เริ่มที่ index 0

ตัวอย่าง Pandas Transformations

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

  • df.count()  จะให้ค่ากลับมาเป็นการนับจำนวนข้อมูลที่ไม่เป็น Null ในแต่ละ column
  • df.corr() จะให้ค่ากลับมาเป็นค่า correlation ระหว่าง column ใน data frame
  • df.head(n) จะให้ค่ากลับมาเป็นจำนวน n แถวแรก
  • df.max() จะให้ค่ากลับมาเป็นค่าสูงสุดของแต่ละ column
  • df.shape จะให้ค่ากลับมาเป็น tuple (n,m) โดยที่ n คือจำนวนแถว และ m คือจำนวน column

PySpark คืออะไร

PySpark เป็น API ของ Python สำหรับ Apache Spark ซึ่งเป็นกรอบการประมวลผลแบบกระจาย (distributed computing) ที่ออกแบบมาสำหรับการประมวลผลชุดข้อมูลขนาดใหญ่ใน cluster ของเครื่องคอมพิวเตอร์ โดยที่ PySpark ช่วยให้การประมวลผลและวิเคราะห์ข้อมูลแบบขนานเป็นไปได้โดยการกระจายการคำนวณไปยังหลาย node ใน cluster ซึ่งทำให้มีความสามารถในการขยายขนาด (scalability) และมีประสิทธิภาพสูงสำหรับงานวิเคราะห์ข้อมูลขนาดใหญ่ ซึ่ง PySpark มี API DataFrame ที่มีลักษณะคล้ายกับ Pandas ทำให้ผู้ใช้งานสามารถทำการจัดการข้อมูลได้คล้ายกัน แต่บนชุดข้อมูลที่กระจายกันอยู่ (Distributed Datasets)

ตัวอย่างการใช้งาน PySpark DataFrame

PySpark DataFrame เป็นวัตถุที่ไม่สามารถเปลี่ยนแปลงค่าได้ (immutable) ซึ่งหมายความว่าไม่สามารถเปลี่ยนแปลงได้เมื่อสร้างขึ้นแล้ว มีความสามารถในการทนต่อข้อผิดพลาด (fault-tolerant) และการทำ Transformations จะเป็น Lazy evaluation ซึ่งหมายความว่าจะไม่ถูกดำเนินการจนกว่าจะมีการเรียกใช้ Actions เช่น count(), collect(), show() เป็นต้น ซึ่ง PySpark DataFrames จะถูกกระจายอยู่ใน cluster (ซึ่งหมายถึงข้อมูลใน PySpark DataFrames จะถูกจัดเก็บในเครื่องคอมพิวเตอร์ต่าง ๆ ใน cluster เดียว) และการดำเนินการใด ๆ ใน PySpark จะถูกดำเนินการแบบขนานบนเครื่องทั้งหมดใน cluster

เริ่มต้นโดยการ import และสร้าง SparkSession และสร้าง DataFrame ด้วย spark.createDataFrame  โดยได้ผลลัพธ์ออกมาเป็นตารางที่ไม่มี index และเมื่อต้องการแสดงตาราง ให้ใช้ฟังก์ชัน show()

และสามารถอ่านไฟล์ได้ เช่น การอ่าน csv file ด้วยฟังก์ชัน spark.read.csv

ตัวอย่าง PySpark Transformations

การทำ Transformations ใน PySpark มีลักษณะเป็นแบบ Lazy evaluation ซึ่งหมายความว่าจะไม่ถูกดำเนินการจนกว่าจะมีการเรียกใช้ Actions ตัวอย่างการแปลงใน PySpark มีดังนี้

  • select() จะใช้เพื่อเลือก column ที่สนใจใน DataFrame และสามารถใช้ฟังก์ชันการคำนวณเพื่อสร้าง column ใหม่
  • filter() ใช้เพื่อเลือกแถวที่สอดคล้องกับเงื่อนไขที่กำหนด
  • groupBy() ใช้เพื่อจัดกลุ่มตามข้อมูลใน column ที่สนใจ และสามารถใช้ฟังก์ชันการคำนวณเพื่อสร้าง column ใหม่
  • dropDuplicates() ใช้เพื่อลบข้อมูลแถวที่ซ้ำกับแถวอื่นใน DataFrame
  • join() ใช้สำหรับประสานข้อมูล 2 DataFrames ซึ่งมี column เดียวกัน หรือเลือก column ที่ต้องการเป็นตัวประสาน

ตัวอย่างการใช้งาน PySpark SQL

PySpark รองรับการใช้คำสั่ง SQL เพื่อดำเนินการแปลงข้อมูล (Transformation) ซึ่งที่ต้องทำคือการสร้างตาราง (Table) หรือมุมมอง (View) จาก PySpark DataFrame

ตัวอย่าง

Note !!

  • สามารถสร้าง PySpark DataFrame จาก Pandas DataFrame โดยใช้ฟังก์ชัน spark.createDataFrame(df)
  • สามารถสร้าง Pandas DataFrame จาก PySpark DataFrame โดยใช้ฟังก์ชัน pyspark_df.toPandas()

วิธีการตัดสินใจเลือกระหว่างใช้ Pandas หรือ PySpark

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

  1. ขนาดของข้อมูล
    1. ใช้ Pandas สำหรับชุดข้อมูลขนาดเล็กถึงขนาดกลางที่สามารถจัดเก็บในหน่วยความจำและต้องการในการจัดการและวิเคราะห์ข้อมูลแบบรวดเร็วภายในหน่วยความจำนั้น ๆ
    1. ใช้ PySpark สำหรับชุดข้อมูลขนาดใหญ่ที่เกินขีดความสามารถของหน่วยความจำในเครื่องเดียว และต้องการความสามารถในการประมวลผลแบบกระจาย (distributed computing) เพื่อดำเนินการประมวลผลข้อมูลแบบขนาน
  2. ทรัพยากรการประมวลผล
    1. หากทรัพยากรในการประมวลผลมีอย่างจำกัดหรือทำงานใน Environment เครื่องเดียว การเลือกใช้ Pandas อาจเหมาะสมกว่าเนื่องจากความสามารถในการประมวลผลภายในหน่วยความจำเดียว
    1. สำหรับ Environment ในการประมวลผลแบบกระจาย (distributed computing) ที่สามารถเข้าถึง cluster ของเครื่องได้หลายเครื่องนั้น PySpark ช่วยให้การประมวลผลสามารถขยายขนาดและทำงานแบบขนานได้อย่างมีประสิทธิภาพ สำหรับการจัดการชุดข้อมูลขนาดใหญ่มากใน cluster ที่กระจาย
  3. ประสิทธิภาพ
    1. Pandas ทำงานได้ดีสำหรับชุดข้อมูลขนาดเล็กถึงขนาดกลาง แต่ถ้าข้อมูลมีขนาดใหญ่ อาจจะทำให้ประสบปัญหาเรื่องข้อจำกัดของหน่วยความจำได้
    1. PySpark จะเหมาะในการประมวลผลชุดข้อมูลขนาดใหญ่ที่ถูกแบ่งออกจากส่วนย่อย ๆ ที่กระจายไปตาม node ต่าง ๆ ใน cluster ซึ่งให้จะเพิ่มประสิทธิภาพในการขยายและการประมวลผลข้อมูลแบบขนาน (Parallelism)
  4. ระบบนิเวศและการผสานรวม
    1. ระบบนิเวศของ Pandas เป็นที่ยอมรับ โดยมีการสนับสนุนอย่างมากในส่วนของเครื่องมือในการจัดการข้อมูล การแสดงผล และการวิเคราะห์ ทำให้เหมาะสำหรับงานวิเคราะห์ข้อมูลที่หลากหลาย
    1. PySpark จะใช้ร่วมกับระบบนิเวศของ Apache Spark ซึ่งเป็นแหล่งข้อมูลต่าง ๆ ไม่ว่าจะเป็นไลบรารีการเรียนรู้ของเครื่อง (machine learning) หรือความสามารถในการประมวลผลข้อมูลที่ไหลเข้ามาอย่างต่อเนื่อง (real-time data)

References


บทความโดย ดร.ภิรมย์มาส เตชิตณัฏฐ์ศรุต

ตรวจทานและปรับปรุงโดย ดร.ขวัญศิริ ศิริมังคลา

Senior Data Scientist
Big Data institute (BDI)

แบ่งปันบทความ

กลุ่มเนื้อหา

แท็กยอดนิยม

แจ้งเรื่องที่อยากอ่าน

คุณสามารถแจ้งเรื่องที่อยากอ่านให้เราทราบได้ !
และเราจะนำไปพัฒนาบทความให้มีเนื้อหาที่น่าสนใจมากขึ้น

ไอคอน PDPA

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ “นโยบายคุ้กกี้” และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ “ตั้งค่า”

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่มีความจำเป็น (Strictly Necessary Cookies)
    เปิดใช้งานตลอด

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

  • คุกกี้เพื่อการวิเคราะห์และประเมินผลการใช้งาน (Performance Cookies)

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

  • คุกกี้เพื่อการใช้งานเว็บไซต์ (Functional Cookies)

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

  • คุกกี้เพื่อการโฆษณาไปยังกลุ่มเป้าหมาย (Targeting Cookies)

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

บันทึกการตั้งค่า
ไซต์นี้ลงทะเบียนกับ wpml.org ในฐานะไซต์พัฒนา สลับไปยังไซต์การผลิตโดยใช้รหัส remove this banner.