ในตอนที่แล้วเราได้เรียนรู้เรื่องของการแสดงผลด้วย print การใช้ตัวแปร การใส่ comment ไปแล้ว ซึ่งยังเป็นเรื่องที่พื้นฐานมากๆ คราวนี้เราก็ยังคงอยู่ที่เรื่องพื้นฐานที่สำคัญอีกเรื่องคือ ประเภทของข้อมูลใน Python นั่นเอง
ประเภทข้อมูลใน Python จริงๆ นั้นมีหลายแบบมากๆ ดูในนี้ได้ แต่ผมจะขอพูดถึงตัวที่ผมคิดว่าสำคัญและใช้บ่อยๆ เท่านั้นก่อนนะครับ
สารบัญ
ประเภทข้อมูลพื้นฐาน (เทียบกับใน Excel)
มีลักษณะเป็นค่าเดี่ยวๆ ตัวเดียว
- ตัวเลข : int (จำนวนเต็ม), float (ทศนิยม)
- ข้อความ : str (ซึ่งต้องใส่ในเครื่องหมายคำพูด ตามที่อธิบายไว้ในตอนแรก)
- ตรรกะ : bool คือค่า True / False
เราสามารถตรวจสอบประเภทข้อมูลได้ด้วย ฟังก์ชัน type() ดังนี้
x=5 #เป็น int
y=5.0 #เป็น float เพราะมีทศนิยม แม้จะเป็น 0 ก็ตาม
z="5" #เป็น str แม้หน้าตาจะเหมือนตัวเลขก็ตาม
print(type(x))
print(type(y))
print(type(z))
เครื่องหมาย Operator พื้นฐาน
เครื่องหมายคำนวณทางคณิตศาสตร์
นั้นคล้าย Excel มากเช่น +, -, *, / นั้นเหมือนกับ Excel เลย อย่างไรก็ตามก็มีตัวที่ต่างกัน คือ
- % คือ Modulus หาเศษเหลือจากการหาร (ใน Excel จะใช้ฟังก์ชัน MOD)
- ** คือ ยกกำลัง (ใน Excel จะใช้ ^)
เครื่องหมายเปรียบเทียบ / ตัวตรรกะ
เวลาใช้จะให้ผลเป็น Boolean คือ True/False เช่นเดียวกับใน Excel เลย
- ตัวที่เหมือน Excel คือ >, <, >=, <=
- ตัวที่ต่างจาก Excel มีดังนี้
- == คือ การเทียบว่าเท่ากันหรือไม่ (ใน Excel ใช้ = ตัวเดียว)
- != คือ เครื่องหมายไม่เท่ากับ (ใน Excel ใช้ <>)
- in สามารถเช็คได้ว่าอยู่ในกลุ่มที่สนใจหรือไม่ (ใน excel อาจต้องใช้ MATCH ช่วย)
- ตัวตรรกะ and, or, not ใช้เป็นตัวเชื่อมตรงกลาง (ใน Excel ใช้เป็นฟังก์ชัน) เช่น
- myVar1>10 and myVar2<=30 (ใน excel ใช้ว่า =AND(myVar1>10, myVar2<=30)
เครื่องหมายเชื่อมข้อความ
ใน Excel จะใช้เครื่องหมาย & ในการเชื่อมข้อความ แต่ใน Python จะใช้เครื่องหมาย + ได้เลยครับ เช่น
title="นาย"
first="ศิระ"
last="เอกบุตร"
print(title+first) #ได้ นายศิระ
print(title+first+" "+last) #ได้ นายศิระ เอกบุตร
ถ้าข้อมูลเป็นคนละประเภท Python จะงงทันที เช่น แบบนี้จะ Error เพราะ var1 เป็นตัวเลข ส่วน var2 เป็น text คำว่า 3
ตกลงว่าจะให้บวกกัน หรือ จะให้เชื่อมข้อความกันแน่???
var1=5
var2="3"
print(var1+var2)
การแปลงประเภทข้อมูล (Casting)
เดิมที่เราเอาตัวเลขกับข้อความบวกกันไม่ได้ เราต้องแปลงให้เหมือนกันก่อน โดยใช้ฟังก์ชันที่ชื่อเดียวกับประเภทข้อมูลที่ต้องการ เช่น
var1=5
var2="3"
var2num=int(var2) #แปลงให้เป็นเลขจำนวนเต็ม
var1str=str(var1) #แปลงให้เป็นข้อความ
print(var1+var2num)
print(var1str+var2)
ประเภทข้อมูลที่เป็นโครงสร้าง
มีลักษณะที่สามารถเก็บข้อมูลพื้นฐานหลายๆ ตัวเป็นชุดข้อมูลได้ ซึ่ง Concept นี้ จะคล้ายๆ Array ใน Excel
ใน Excel ถ้าเราอ้างอิงข้อมูลเป็นช่วงเมื่อไหร่จะได้ข้อมูลแบบ Array ทันที (เช็คได้โดยการ Highlight สูตรแล้วกด F9) ซึ่งจะแสดงเป็นข้อมูลในเครื่องหมายปีกกา คั่นด้วย Comma (ขึ้นคอลัมน์ใหม่) กับ Semicolon (ขึ้นแถวใหม่) เช่น
แต่ใน Python นั้นมีข้อมูลเชิงโครงสร้างที่หลากหลายแบบมากๆ และมีลูกเล่นในการจัดการข้อมูลที่ง่ายกว่า Array ของ Excel พอสมควรซึ่งจะคล้ายกับข้อมูลเชิงโครงสร้างของ ภาษา M ใน Power Query มากกว่า (เช่น List, Record, Table)
ข้อมูลเชิงโครงสร้างใน Python ที่สำคัญๆ มีดังนี้
list
- เก็บข้อมูลหลายๆ ตัวอยู่ในวงเล็บเหลี่ยม เก็บค่าซ้ำได้ เช่น
- myList = [“Eren”, “Eren”, “Mikasa”, “Armin”, “Armin”]
- คล้ายๆ กับ List ของ Power Query
- ลำดับข้อมูลมีความสำคัญ อ้างอิงข้อมูลได้ด้วยเลข index เช่น
- myList[0] คือ item ตัวแรกสุด ซึ่งคือ “Eren”
- myList[-1] คือ item ตัวสุดท้าย ซึ่งคือ “Armin”
- สามารถดึงข้อมูลมาหลายๆ ตัวเป็นช่วงที่เรียกว่า Slice ได้ ในรูปแบบ myList[ตั้งแต่index : แต่ไม่รวม index]
- ถ้าตอน slice เว้นตัวเริ่มต้นไว้ จะได้ตั้งแต่ตัวแรก, ถ้าเว้นตัวจบ จะได้จนถึงตัวสุดท้าย
- เปลี่ยนค่า item ต่างๆ หลังจากถูกสร้างไปแล้วได้ (Mutable) เช่น
- myList[1]=”Attack Titan” #เปลี่ยนค่า item ที่ 2 (index1) เป็น Attack Titan
myList = ["Eren", "Eren", "Mikasa", "Armin", "Armin"]
print(myList[0]) #ได้ตัวแรก
print(myList[-1]) #ได้ตัวสุดท้าย
#เปลี่ยนค่า item ที่ 2 (index1) เป็น Attack Titan
myList[1]="Attack Titan"
print(myList)
#ได้ตั้งแต่ index 0 แต่ไม่รวมตัว index3 ซึ่งคือ ตัวแรกถึงตัวที่ 3 ได้ ['Eren', 'Attack Titan', 'Mikasa']
print(myList[0:3])
#ได้ตั้งแต่ index 1 แต่ไม่รวมตัว index3 ซึ่งคือ ตัวที่ 2 ถึงตัวที่ 3 ได้ ['Attack Titan', 'Mikasa']
print(myList[1:3])
#ได้ตั้งแต่ index 1 ถึง ตัวสุดท้าย ได้ ['Attack Titan', 'Mikasa', 'Armin', 'Armin']
print(myList[1:])
#ได้ตั้งแต่ตัวแรก แต่ไม่รวมตัว index2 ซึ่งคือ ตัวแรก ถึงตัวที่ 2 ได้ ['Eren', 'Attack Titan']
print(myList[:2])
tuple
- เก็บข้อมูลหลายๆ ตัวอยู่ในวงเล็บปกติ (หรือไม่ใส่วงเล็บเลยก็ได้) เก็บค่าซ้ำได้ เช่น
- myTuple = (“Eren”, “Eren”, “Mikasa”, “Armin”, “Armin”)
- myTuple = “Eren”, “Eren”, “Mikasa”, “Armin”, “Armin”
- ลำดับข้อมูลมีความสำคัญ อ้างอิงข้อมูลได้ด้วยเลข index (เช่นเดียวกับ List) เช่น
- myTuple[0] คือ item ตัวแรกสุด ซึ่งคือ “Eren”
- เปลี่ยนข้อมูลภายหลังจากสร้างไปแล้วไม่ได้ (unchangeable/immutable) เช่น
- myTuple[1]=”Attack Titan” แบบนี้จะ Error ทันที
- ประโยชน์คือ สามารถทำงานได้เร็วกว่า List และเหมาะกับอะไรที่มีโครงสร้างคงที่ไม่เพิ่มไม่ลด ไม่เปลี่ยนค่า
- Tuple คือ ประเภทข้อมูล Default ของผลลัพธ์ที่ได้จากฟังก์ชัน กรณีได้ค่ากลับมาหลายค่า
myTuple = ("Eren", "Eren", "Mikasa", "Armin", "Armin")
print(myTuple[0]) #ได้ตัวแรก
print(myTuple[-1]) #ได้ตัวสุดท้าย
myTuple[1]="Attack Titan" #เปลี่ยนค่า item ที่ 2 (index1) เป็น Attack Titan
print(myTuple) #error ไปตั้งแต่ก่อนหน้าแล้ว
print(myTuple[0:3]) #error ไปตั้งแต่ก่อนหน้าแล้ว
print(myTuple[1:3]) #error ไปตั้งแต่ก่อนหน้าแล้ว
dict
- เป็นการเก็บข้อมูลเป็นคู่ Key : Value อยู่ในวงเล็บปีกกา เช่น
- myDict = {“name” : “Sira”, “age” : 37}
- ถ้าใส่ Key ซ้ำกันหลายรอบจะได้อันสุดท้าย
- คล้ายๆ กับสิ่งที่เรียกว่า Record ของ Power Query ซึ่งคล้ายการเก็บข้อมูลแต่ละบรรทัดของตารางเอาไว้ แล้วบอกว่าแต่ละ Field (Column) มีค่าเป็นอะไร
- อ้างอิงข้อมูลได้โดยใช้ Key มาช่วย เช่น
- myDict[“name”] จะได้คำว่า “Sira”
- myDict[“age”] จะได้เลข 37
myDict = {"name" : "Eren", "age" : 37, "name" : "Sira"} #ถ้าใส่ Key ซ้ำกันจะได้อันสุดท้าย
print(myDict)
print(myDict["name"]) # ได้สิ่งที่คู่กับ Key ที่เป็นคำว่า name
myDict["name"]="ThepExcel" #เปลี่ยนค่าใน item ได้
print(myDict)
set
- ใส่รายการข้อมูลอยู่ในวงเล็บปีกกา และเก็บค่าซ้ำไม่ได้ เช่น
- mySet={“Eren”, “Eren”, “Mikasa”, “Armin”, “Armin”}
- สุดท้ายจะเหลือแค่ {“Eren”, “Mikasa”, “Armin”} อยู่ดี (ตัดตัวซ้ำออกให้)
- ลำดับข้อมูลไม่มีความสำคัญ ทำให้ไม่สามารถอ้างอิงข้อมูลด้วย index หรือ key ได้
- ทำได้แค่วน Loop ใน set หรือเช็คว่ามีข้อมูลที่ต้องการหรือไม่
mySet={"Eren", "Eren", "Mikasa", "Armin", "Armin"}
print(mySet) #เหลือเฉพาะตัวที่ไม่ซ้ำ
print("Armin" in mySet) #เช็คว่าใน set มีคำว่า Armin รึเปล่า
print("Levi" in mySet) #เช็คว่าใน set มีคำว่า Levi รึเปล่า
print(mySet[0]) #อ้างอิงด้วย index ไม่ได้
จบตอนที่ 2
ในตอนต่อๆ ไปเราจะมาดูเรื่องของการวน Loop การเขียน if รวมถึงเจาะลึกข้อมูลประเภท List ซึ่งมีลูกเล่นเยอะมากๆ ในการทำงานจริง และมีความเกี่ยวข้องกับข้อมูลที่เป็นข้อความด้วยเช่นกัน รอติดตามได้เลย!
สารบัญ Series Python
- หัดเขียนโปรแกรม Python สำหรับคนเป็น Excel มาก่อน : ตอนที่ 1
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 2 – ประเภทข้อมูล (Data Types)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 5 – การสร้างฟังก์ชันขึ้นมาใช้เอง (Function)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 6 – การเรียกใช้ Module / Packages เจ๋งๆ ที่มีคนสร้างไว้แล้ว
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 7 – Web Scraping ด้วย Beautiful Soup
- แนวทางการใช้ Python ใน Power BI
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 8 – การสร้างกราฟด้วย Matplotlib
- รวม Link สอน Python / Programming / AI/ Machine Learning แบบฟรีๆ
- สอนใช้ Python ใน Excel ตอนที่ 1 : ลองใช้ครั้งแรก
- สอนใช้ Python ใน Excel ตอนที่ 2 : List, Loop, Condition
- สอนใช้ Python ใน Excel ตอนที่ 3 : Regular Expression (RegEx)
- สอนใช้ Python ใน Excel ตอนที่ 4 : สร้างฟังก์ชันใช้เอง
- สอนใช้ Python ใน Excel ตอนที่ 5 : สร้างกราฟ Visualization เบื้องต้นด้วย Matplotlib
- การวิเคราะห์ข้อมูลเบื้องต้นด้วย Python: เริ่มต้นด้วย Pandas และ Matplotlib
- เพิ่มยอดขายด้วย Market Basket Analysis : วิเคราะห์คู่สินค้าขายดีด้วย Python