Pandas คือ library สำหรับจัดการ dataframe ของภาษา Python ที่ได้รับความนิยมสูงสุด ถ้าใครอยากจะทำ data science ต้องเขียนเป็นทุกคน 555+ สร้างและพัฒนาโดย Wes McKinney อีกหนึ่งตำนานของวงการ Python เราใช้ pandas ร่วมกับ numpy, matplotlib, seaborn ตลอดเลย

Wes McKinney ผู้สร้างและพัฒนา Pandas

บทความนี้จะครอบคลุมการใช้งานพื้นฐานของ pandas ดาวน์โหลดไฟล์ penguins.csv แล้วลองทำตามได้เลยบน Google Colab นี้นะครับ แถมชี้เป้าคอร์สเรียนออนไลน์ฟรีตอนท้ายของบทความนี้ 👏

Prerequisite ก่อนอ่านต่อ ต้องประกาศตัวแปรใน Python เป็นแล้วนะ

สำหรับ tutorial ในบทความนี้ ถ้าเพื่อนๆเขียน Basic Python เป็นแล้ว ลองทำตามได้สบายเลย

  • Load CSV file
  • Preview dataframe
  • Dataframe information
  • Dataframe statistics
  • Drop missing values
  • Select columns
  • Rename columns
  • Drop columns
  • Slice rows
  • Filter rows
  • Sort dataframe
  • Write CSV file

Getting Started

สำหรับเพื่อนๆที่อยากทำตาม tutorial นี้ให้เปิด Google Colab ขึ้นมาแล้วอัพโหลดไฟล์ penguins.csv ขึ้นไปก่อน (ไฟล์นี้จะถูกลบเมื่อเราหลุดจาก session หรือปิดเบราเซอร์)

Google Colab Interface

เริ่มที่การ import pandas ตั้งชื่อว่า pd เวลาเรียกใช้งานฟังก์ชันจะได้เขียนง่ายๆ เช่น pd.read_csv() โดยฟังก์ชันนี้จะโหลดข้อมูล csv ของเราเข้าสู่ python เป็น dataframe

import pandas as pd
penguins = pd.read_csv("penguins.csv")

เราสามารถ preview 5 แถวบนสุดและ 5 แถวล่างสุดของ dataframe ด้วยฟังก์ชัน head และ tail ตามลำดับ เราสามารถกำหนดจำนวนแถวที่ต้องการแสดงผลได้เอง เช่น penguins.head(10)

penguins.head()
penguins.tail()
แสดง DataFrame 5 แถวบนสุด

Inspect DataFrame

ถ้าเราต้องการดู dimension ของ dataframe ว่ามีจำนวน columns, rows เท่าไหร่ เราสามารถเรียกดู attribute .shape ของ object สังเกตว่า .shape จะไม่มี ()

ถ้าต้องการเรียกดู information แบบเต็มๆของ dataframe ให้ใช้ฟังก์ชัน .info()

penguins.shape
penguins.info()

ด้านล่างคือ output ของ .info() ที่ list รายชื่อคอลัมน์ทั้งหมดของ penguins dataframe จำนวน complete values (และ missing values) และ Dtype คือประเภทข้อมูล

  • object คือคอลัมน์ที่เป็น text, string
  • float64 คือคอลัมน์ที่เป็นตัวเลข numeric แบบมีทศนิยมได้ (ถ้าเป็นตัวเลขจำนวนเต็มจะเรียกว่า int)
  • ขนาดไฟล์ 18.9 KB ไม่ใหญ่มาก pandas เก็บข้อมูลใน memory ทำให้ประมวลผลได้เร็ว
DataFrame Information จำนวนคอลัมน์ และแถว รวมถึงประเภทข้อมูล

จากรูปจะเห็นว่า dataframe เรามีคอลัมน์ที่สมบูรณ์ไม่มี null (missing values) เพียงสองคอลัมน์คือ species และ island => 344 non-null เท่ากับ 344 entries (rows) ของ dataframe พอดีเป๊ะ

Note – สำหรับ data.info() ในเชิงเทคนิคเราเรียก .info() ว่า method แปลว่าฟังก์ชันที่ถูกสร้างขึ้นมาสำหรับ object นั้นๆ (ในที่นี้คือ dataframe) ถ้าใครเคยเรียน OOP คอนเซ็ปต์นี้น่าจะคุ้นเคยอยู่แล้ว แต่ถ้าใครยังไม่เคย ก็ไม่เป็นไรครับ 55+ บทความนี้เน้นตัวอย่างง่ายๆเลย

อีกฟังก์ชันนึงที่ใช้บ่อยมากคือ .describe() ที่ใช้หาค่าสถิติเบื้องต้นของทุกคอลัมน์ใน dataframe

penguins.describe()

ก่อนจะจบ section นี้ เราสามารถลบทุก rows ที่มีค่า null หรือ missing values ได้ง่ายๆด้วยฟังก์ชัน .dropna() เสร็จแล้วลองดู shape ของ dataframe อีกทีนะครับ

clean_penguins = penguins.dropna()
clean_penguins.shape

ตอนนี้ penguins เราจะเหลือแค่ 333 rows แล้ว เราลบไปทั้งหมด 11 rows ที่มีค่า null

Columns and Rows

Section นี้เรามาลองดูวิธีการจัดการ columns, rows กันบ้าง วิธีการเลือกคอลัมน์ dataframe ทำได้ง่ายๆแค่พิมพ์ชื่อ dataframe ตามด้วย [column_name] แบบนี้

clean_penguins['species']
clean_penguins[['species', 'island', 'sex']]

ถ้าต้องการดึงหลายๆคอลัมน์ให้ใส่ชื่อคอลัมน์ที่ต้องการใน list

เราใช้ .head() เพื่อแสดงข้อมูล 5 แถวบนสุด

เราใช้ .rename() เพื่อเปลี่ยนชื่อคอลัมน์ได้ โดย object ที่เราใส่ในฟังก์ชันจะเป็น dictionary ที่มี key = old_name และ value = new_name ตัวอย่างนี้ แอดจะลองเปลี่ยนชื่อคอลัมน์ sex -> gender

clean_penguins = clean_pengiuns.rename(columns = {'sex': 'gender'})
อย่าลืม assign ค่ากลับไปที่ clean_penguins ด้วยนะครับ หรือใช้ inplace=True

ถ้าต้องการ drop columns ก็ทำได้ง่ายๆด้วยฟังก์ชัน .drop() ตัวอย่างนี้แอด drop สามคอลัมน์ [gender, body_mass_g, island] และ assign ค่าไปที่ dataframe ใหม่

small_penguins = clean_pengiuns.drop(columns = ['gender', 'body_mass_g', 'island'])
small_penguins เหลือเพียง 4 คอลัมน์แล้ว

วิธีการฟิลเตอร์ dataframe ของ pandas ทำได้หลายวิธีมาก ที่นิยมใช้กันจะมีสามแบบคือ

  • iloc[]
  • loc[]
  • query()

วิธีที่หนึ่ง iloc[] ย่อมาจาก integer location based คือใส่เลข index เพื่อเลือกข้อมูลแถวที่ต้องการได้เลย ตัวอย่างนี้แอด slice rows 0-5 โดย index ใน python จะเริ่มที่เลขศูนย์

small_penguins.iloc[0:5]
index ใน python เริ่มที่เลข 0

Note – สังเกตว่าเลข index ในรูป output ด้านบนมันกระโดดข้ามเลข 3 เพราะ step ก่อนหน้านี้เรามี .dropna() ไป เราสามารถ reset index ใหม่ด้วยฟังก์ชัน .reset_index()

วิธีที่สอง loc[] ใช้ฟิลเตอร์ข้อมูลด้วยเงื่อนไขที่เราต้องการ ตัวอย่างนี้เราต้องการฟิลเตอร์เฉพาะ penguins ที่มี bill length ยาวกว่า 55 มม. ขึ้นไป ศึกษา syntax ได้ที่ code block นี้

small_penguins.loc[ small_penguins['bill_length_mm'] >= 55 ]
code ค่อนข้างยาวเลย แอดแนะนำลองเขียนวิธีที่สามดีกว่า

สังเกตว่า code ของ loc[] จะค่อนข้างยาว เพราะเราต้องเขียนชื่อ dataframe small_penguins ซ้ำสองรอบ เวลาฟิลเตอร์ dataframe แอดจะชอบใช้ฟังก์ชัน .query() มากกว่า เพราะมัน intuitive และก็เขียนง่ายกว่า .loc() เยอะเลย ทั้งสองแบบได้ผลลัพธ์เหมือนกัน

small_penguins.query("bill_length_mm >= 55")

และ tranformation สุดท้ายที่แอดจะสอนในบทความนี้คือการเรียงข้อมูลใน dataframe เราใช้ฟังก์ชัน .sort_values() จากน้อยไปมาก หรือ set ascending = False เพื่อเรียงจากมากไปน้อย

small_penguins.sort_values(by = 'bill_length_mm', ascending = False)
เรียงข้อมูลจากมากไปน้อยด้วยคอลัมน์ bill_length_mm

ถ้าต้องการ keep transformation นี้ อย่าลืม assign ค่ากลับไปที่ dataframe ใหม่ หรือใช้ inplace=True ตอนเขียนฟังก์ชันด้วยนะครับ

Write CSV File

หลังจากที่ทำ data transformation เสร็จแล้ว เราสามารถ write csv ด้วยฟังก์ชัน .to_csv() ดาวน์โหลดและนำไฟล์ csv นี้ส่งต่อให้เพื่อนในทีมไปทำ analysis/ report ต่อได้เลย จบแล้ว ทำไมมันง่ายอย่างนี้ 55+

small_penguins.to_csv()
คลิกที่ชื่อไฟล์ small_penguins.csv เพื่อดาวน์โหลดไฟล์ออกมาได้เลย

Pandas Document

โปรแกรมเมอร์เก่งๆ นอกจากเขียนโค้ดเก่งแล้ว ยังอ่าน document เก่งด้วย อันนี้เรื่องจริงเลย 555+

ตัวอย่าง document การใช้งานฟังก์ชัน dropna()

ถ้าใครอยากเรียนรู้ pandas มากกว่านี้ เราแนะนำให้ลองฝึกอ่าน official document ดูนะครับ ลอง copy code มาเล่นใน Google Colab ก็ได้ ยิ่งเราเห็นตัวอย่างมากขึ้นเท่าไหร่ ก็จะเขียนเป็นเร็วเท่านั้น

Function เยอะมาก จำไม่ได้เลยแอด ต้องฝึกยังไงดี?

พวกนี้ไม่ต้องจำเลย do not try to remember แต่ต้องฝึกใช้บ่อยๆครับ ลองหา dataset ใหม่ๆมาลองเล่นได้ โหลดขึ้น Google Colab แล้วลุยเลย เจอฟังก์ชันใหม่ๆ เขียนไม่เป็นก็เปิด Google ค้าบ 55+

Free Online Courses

ตัวอย่าง free certificate ของ Kaggle

สำหรับเพื่อนๆที่อยากศึกษาเพิ่มเติม ลองดูคอร์สฟรีที่เราสอน หรือของ Kaggle ได้เลยครับ

  • DataRockie – Python for Non Programmers (ภาษาไทย)
  • Kaggle – Intro to Pandas (ภาษาอังกฤษ)

คอร์สของเพจเราเริ่มสอนตั้งแต่ basic Python ใช้เวลาเรียนประมาณ 3 ชั่วโมง ถ้าใครยังไม่เคยเขียน Python มาก่อน แนะนำให้เริ่มจากคอร์สเรานะครับ เรียนกันบน Google Colab แต่ไม่มีใบเซอร์เหมือน Kaggle นะ 55+ แล้วพบกันในคอร์สเรียนนะครับ 👏

PS. ตอนนี้ DataQuest มีโปรลดกระหน่ำรับ summer 50% คลิกที่แบนเนอร์ด้านล่างมีส่วนลดอีก 15 USD ถ้าใครสนใจเรียน Data Science/ Data Engineering แบบเต็มๆ ลองอ่านรีวิวคอร์ส 👉 DataQuest ได้เลย

Posted by:Kasidis Satangmongkol

Data Analyst & Market Researcher ทำเพจ เขียนบล๊อก สอนหนังสือ แชร์ความรู้ เขียนโปรแกรม พูดคุยกับเราได้ที่ m.me/datarockie

Leave a Reply