สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial AI

AI001 The brief history of AI AI101 Jupyter Notebook on AWS AI102 Pandas Tutorials AI103 Animated Drawings AI104 Video to BVH AI105 Hand Landmarks Detection Using MediaPipe AI106 Object Detection Using MediaPipe AI107 Image Segmentation Using MediaPipe AI108 Pose Landmarks Detection Using MediaPipe

AI102 - Pandas Tutorials

วิเคราะห์ข้อมูลด้วย Pandas

 

ในการเขียนโปรแกรมเกี่ยวกับ Machine Learning หรือ Data Science นั้น หลาย ๆ อาจจะคิดว่าส่วนที่ต้องใช้เวลามากที่สุดคือการเทรนหรือวิเคราะห์ข้อมูล แต่แท้จริงแล้ว จากประสบการณ์ของผมสำหรับโปรแกรมเมอร์แล้ว สิ่งที่น่าปวดหัวและกินเวลามากที่สุดคือการจัดการข้อมูลดิบให้สวยงามเพื่อให้สามารถเอาไปใช้ในการวิเคราะห์หรือคำนวณค่าต่าง ๆ ได้ครับ ยกตัวอย่างชุดข้อมูลต่อไปนี้ ผู้เรียนคิดว่ามีจุดที่ผิดปกติตรงไหนบ้าง? (ลองคิดดูก่อนค่อยดูเฉลยท้ายบทความนะครับ*)

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

Pandas เป็น open source, BSD-licensed library สำหรับการเขียนโปรแกรมภาษาไพทอนที่ช่วยให้เราสามารถจัดการข้อมูลทั้งเรื่องโครงสร้างของข้อมูลและการวิเคราห์ข้อมูลได้ง่ายขึ้น มีวิธีการใช้งานง่ายไม่ยุ่งยาก และมี Document ที่เขียนวิธีใช้งานของแต่ละฟังก์ชันค่อนข้างดี โดยผู้เรียนสามารถอ่าน Document ได้จากหน้าเว็บ และดูตัวอย่างการใช้งานที่มีอีกมากมายได้โดยค้นจากอินเตอร์เน็ต

สำหรับในบทความนี้ ผู้เรียนจะได้ทดลองใช้ฟังก์ชันเด่น ๆ ของไลบรารี Pandas ในการจัดการกับข้อมูลรูปแบบต่าง ๆ แบบง่าย ๆ กันครับ ให้ดาวน์โหลดไฟล์ dataset ที่จะใช้ในบทความนี้จากที่นี่ 

สำหรับใครที่สนใจคอร์สเรียน AI ขอแนะนำคอร์ส Machine Learning (AI701) หรือหากยังไม่มีพื้นฐานเขียนโปรแกรมมาก่อนสามารถลงคอร์ส Python + Web Programming + Machine Learning (PY203) ของทาง EPT ที่สอนแบบจัดเต็มตั้งแต่พื้นฐาน Python จนลงลึกถึงทฤษฎี AI ซึ่งเป็นคอร์สที่มีหลักสูตรเทียบเท่าเรียนในมหาวิทยาลัยชั้นนำ 2-3 ปีเลยครับ

 

Pandas Library Installation

เราสามารถติดตั้งไลบรารี Pandas ได้โดยใช้คำสั่ง pip โดยพิมพ์คำสั่งต่อไปนี้ในโปรแกรม Command Prompt หรือ Terminal หรือ Anaconda Prompt ขึ้นอยู่กับว่าเราต้องการพิมพ์ Code เพื่อทดสอบที่ไหน

pip install pandas

 

สำหรับผู้ที่ต้องการใช้ Anaconda บน Windows ให้ดาวน์โหลดและติดตั้ง Anaconda ตามขั้นตอนในเว็บนี้ 

สำหรับผู้ที่ต้องการใช้งานผ่าน Jupyter Notebook บน AWS ให้ติดตั้ง Jupyter Notebook ตามบทความ AI101 - Jupyter Notebook on AWS และติดตั้ง Pandas ผ่าน Jupyter Notebook โดยพิมพ์คำสั่งต่อไปนี้ใน Jupyter Notebook แล้วกดปุ่มรัน

!pip install pandas

 

Import Library

เราสามารถใช้งาน pandas ได้โดยการ import pandas ทั้งนี้ในบทความนี้จะมีการใช้งาน numpy ด้วย ดังนั้นจึง import numpy เตรียมไว้ 

หมายเหตุ: ในขั้นตอนนี้ ถ้าพิมพ์ถูกต้องหมดแต่ยังขึ้น Error แสดงว่ายังไม่ได้ติดตั้งไลบรารี pandas หรือ numpy ใน Environment ที่ใช้ วิธีแก้คือ ให้ปิด Spyder หรืออะไรก็ตามที่ใช้อยู่แล้วทำการติดตั้งไลบรารีที่ขาดไปก่อน จากนั้นค่อยเปิดโปรแกรมนั้น ๆ ขึ้นมาใหม่ (กรณีใช้ Jupyter Notebook แล้วเกิน Error ก็ให้ทำการติดตั้งไลบรารีผ่าน Jupyter Notebook ก่อนเช่นกัน)

 

Object Creation

Object ของ Pandas แบ่งออกเป็น 2 ชนิดได้แก่ Series และ DataFrame ซึ่งมีลักษณะดังนี้

1. Series is a one-dimensional labeled array capable of holding any data type (integers, strings, floating point numbers, Python objects, etc.). The axis labels are collectively referred to as the index.

ตัวอย่างการสร้าง Series โดยใส่ list ของข้อมูล

2. DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table, or a dict of Series objects. It is generally the most commonly used pandas object. Like Series, DataFrame accepts many different kinds of input:

  • Dict of 1D ndarrays, lists, dicts, or Series
  • 2-D numpy.ndarray
  • Structured or record ndarray
  • A Series
  • Another DataFrame

ตัวอย่างการสร้าง DataFrame จาก numpy โดยให้ datetime เป็น index และ A B C D เป็นชื่อ column 

ตัวอย่างการสร้าง DataFrame จากไฟล์ csv ซึ่งเป็นสิ่งที่เราจะได้ใช้บ่อยที่สุดในการเรียนคอร์ส Machine Learning (AI701)

 

Viewing Data

หลังจาก Import ชุดข้อมูลเข้ามาแล้ว เราสามารถดูรายละเอียดของข้อมูลเราได้จากฟังก์ชันของคลาส DataFrame เพื่อตรวจสอบว่าชุดข้อมูลของเรามีปัญหาหรือไม่ ในตัวอย่างนี้เราจะดูข้อมูลของตัวแปร df2 และ df ซึ่งได้สร้างไว้แล้วด้านบน

- ดูข้อมูล 5 แถวแรก ของตัวแปร df2

- ดูข้อมูล 3 แถวสุดท้าย ของตัวแปร df2

- ดู index และ column ของตัวแปร df2

- ดูชนิดของข้อมูลแต่ละ column ของตัวแปร df2

- ดู correlation ของตัวแปร df2 แบบตัวเลขธรรมดา และแบบตัวเลขพร้อมสี


- ดูข้อมูลสรุปเชิงสถิติของตัวแปร df

 

Play with Data

- Transpose ตัวแปร df

- Sort ตัวแปร df จาก axis

- Sort ตัวแปร df จาก values

 

Select Data

- Select จากชื่อ column

- Select โดย Slices the row

- Select จาก Label

- Select แบบหลาย column หลาย row

- Getting a scalar value

- Select แบบกำหนดเงื่อนไข

 

Setting Data

- เพิ่ม column ใหม่ตาม index

- Set ค่าจาก label

- Set ค่าจากตำแหน่ง

- Set ค่าทั้ง column

- Set ค่าจากเงื่อนไข

 

Delete Data

สร้างตัวแปรใหม่ชื่อ df3 ขนาด 4x4 โดยให้ชื่อคอลัมน์เป็น A, B, C, D และสุ่มข้อมูลใส่ทุกช่อง

- Delete column

- Delete row การ delete row จะต้องกำหนดด้วย index และเมื่อลบแล้ว index จะไม่ใช่เลขต่อเนื่องกัน ดังนั้นจึงควร reset ค่า index ให้เป็นเลขเรียงกันใหม่ด้วย

 

Plot Data

การพล็อตกราฟเป็นวิธีที่ช่วยให้เราเห็นภาพรวมของข้อมูลได้อย่างรวดเร็ว ซึ่งสามารถทำได้โดยใช้ฟังก์ชัน plot()
ในตัวอย่างนี้จะทำการสุ่มข้อมูลจำนวน 50 แถว 2 คอลัมน์ (A, B) และกำหนด index ของข้อมูลเป็นวันที่ตั้งแต่ 1 ม.ค. ปี 2000 ไป 50 วัน เพื่อสร้างตัวแปร df3 ซึ่งเป็น DataFrame (กรณีที่ถ้ากราฟไม่ขึ้นให้กดรันโค้ดช่องสุดท้ายอีกที)

 

Data with Missing Value

หลายครั้งที่ชุดข้อมูลที่เราได้มาอาจจะมีข้อมูลไม่ครบ ในตัวอย่างนี้จะสร้างตัวแปรใหม่ชื่อ df6 ขนาด 4x4 โดยให้ชื่อคอลัมน์เป็น C1, C2, C3, C4 และ index ของแถวเป็น R1, R2, R3, R4 และสุ่มข้อมูลใส่บางช่อง เมื่อพิมพ์ค่าออกมาดูจะเห็นว่าช่องที่ไม่มีข้อมูลจะขึ้นคำว่า NaN

- ดูว่ามี Missing Value ไหมด้วยฟังก์ชัน isna() ถ้ามีจะตอบ True

- ดูว่ามี Missing Value ไหมด้วยฟังก์ชัน notna() ถ้ามีจะตอบ False

- จัดการโดยการลบแถวที่มี Missing Value ซึ่งโดยปกติจะไม่ค่อยแนะนำวิธีนี้ ดังเช่นในตัวอย่างนี้ทำให้ข้อมูลหายไปเกือบหมด

- จัดการโดยแทนค่า Missing Value ด้วยค่าเฉลี่ย เป็นวิธีที่นิยมมากกว่าการลบทิ้งทั้งแถว

 

Using Pandas to Write and Read .csv Files

Dataset Name: pandas_test.csv

- อ่านไฟล์: เราสามารถอ่านไฟล์ .csv ได้ด้วยฟังก์ชัน read_csv() เหมือนดังตัวอย่างที่ได้ทำไปก่อนหน้านี้ ในตัวอย่างนี้จะทดลองอ่านไฟล์ pandas_test.csv ใส่ตัวแปร df_csv
หมายเหตุ: สำหรับคนที่ขึ้น Error ให้ดูว่าใส่ path ถูกไหมโดยจะต้องใส่ path ของเครื่องผู้เรียนเองนะครับ


 
- เขียนไฟล์: เราสามารถบันทึก Dataframe เป็นไฟล์ .csv ได้ด้วยฟังก์ชัน to_csv() ในตัวอย่างนี้จะบันทึกค่าจากตัวแปร df_csv ลงไฟล์ pandas_test_write.csv 

จะเห็นว่าหลังจากรันคำสั่งบรรทัดนี้แล้วจะมีไฟล์ pandas_test_write.csv เพิ่มขึ้นมา

และเมื่อลองเปิดไฟล์เทียบกับไฟล์ pandas_test.csv ดู จะเห็นว่าต่างกันอยู่นิดหน่อย คือ ในไฟล์ pandas_test_write.csv จะมีคอลัมน์ index ของ DataFrame เพิ่มเข้ามาด้วยนั่นเอง

 

Using Pandas to Write and Read .txt Files

Dataset Name: thaiword.txt

- อ่านไฟล์: เราสามารถอ่านไฟล์ .txt ได้ด้วยฟังก์ชัน read_csv() มาใส่ใน DataFrame ได้เช่นกัน ในตัวอย่างนี้จะทดลองอ่านไฟล์ thaiword.txt ใส่ตัวแปร df_txt ซึ่งจะเห็นว่าผลลัพธ์ที่ได้จะถือว่าคำในบรรทัดแรกเป็นชื่อคอลัมน์และมี index เพิ่มขึ้นมาเนื่องจากเป็น DataFrame 
หมายเหตุ: สำหรับคนที่ขึ้น Error ให้ดูว่าใส่ path ถูกไหมโดยจะต้องใส่ path ของเครื่องผู้เรียนเองนะครับ

- เขียนไฟล์: เราสามารถเขียน DataFrame ลงไฟล์ .txt ได้โดยใช้ฟังก์ชัน to_csv()

 

Using Pandas to Write and Read Excel Files

Dataset Name: global_temperature.xlsx

การเขียนอ่านไฟล์ Excel จะต้องติดตั้ง Python package ที่ Environment ของ Anaconda ก่อนโดยปิดโปรแกรม Spyder หรือ Jupyter Notebook แล้วทำการติดตั้งไลบรารีที่ขาดไปผ่าน Anaconda Prompt ก่อนโดยใช้คำสั่งต่อไปนี้ จากนั้นค่อยเปิดโปรแกรม Spyder หรือ Jupyter Notebook ขึ้นมาใหม่

pip install xlwt openpyxl xlsxwriter xlrd




ซึ่งแต่ละ package มีรายละเอียดดังนี้

  • xlwt ใช้สำหรับเขียนไฟล์ .xls
  • openpyxl or XlsxWriter ใช้สำหรับเขียนไฟล์ .xlsx
  • xlrd ใช้สำหรับอ่านไฟล์ Excel

หลังจากติดตั้งเรียบร้อยแล้ว ต่อไปจะทดลองอ่าน/เขียนไฟล์ Excel ให้เปิดโปรแกรม Spyder หรือ Jupyter Notebook ขึ้นมา

- อ่านไฟล์: เราสามารถอ่านไฟล์ Excel ได้ด้วยฟังก์ชัน read_excel() ในตัวอย่างนี้จะทดลองอ่านไฟล์ global_temperature.xlsx ใส่ตัวแปร df_excel ซึ่งจะได้ผลลัพธ์เป็น DataFrame
หมายเหตุ: สำหรับคนที่ขึ้น Error ให้ดูว่าใส่ path ถูกไหมโดยจะต้องใส่ path ของเครื่องผู้เรียนเองนะครับ ถ้าใส่ถูกแล้วให้ดูว่าติดตั้ง package เรียบร้อยแล้วหรือยัง

- เขียนไฟล์: เราสามารถเขียน DataFrame ลงไฟล์ Excel ได้โดยใช้ฟังก์ชัน to_excel()

 

ในบทความต่อไป เราจะมาใช้ AI สร้างแอนิเมชันจากตัวการ์ตูนที่เราวาดเองด้วย Code 2 บรรทัดกัน แล้วพบกันใหม่บทความหน้านะครับ

 

ที่มาและเว็บไซต์อ้างอิง

[1] https://pandas.pydata.org/pandas-docs/stable/
[2] https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html
[3] https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html
[4] https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html
[5] https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html

 

* เฉลยเกมจับผิด จากชุดข้อมูลด้านบนจะเห็นว่ามีข้อมูลที่ดูแล้วไม่น่าจะถูกต้องดังนี้

  • แถวที่ 1 ช่อง Age คนกรอกข้อมูลน่าจะกรอกอายุผิดโดยเลข 0 เกินมา ที่ถูกต้องควรจะเป็น 20
  • แถวที่ 3 ช่อง Gender คนกรอกข้อมูลกรอกเพศโดยใช้รูปแบบไม่เหมือนแถวอื่น ที่ถูกต้องควรจะเป็น F
  • แถวที่ 4 ช่อง Birthday คนกรอกข้อมูลกรอกปีพ.ศ. แทนที่จะเป็น ค.ศ. ที่ถูกต้องควรจะเป็น 1994-09-26

 



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา