การสร้าง Series และ DataFrames ใน Pandas ภาค 2 …สร้างทีมบอลชายหาด All Star

ส่งต่อความรู้

หลังจากที่ได้เรียนรู้วิธี การสร้าง Series ใน Pandas กันไปแล้ว วันนี้มาเรียนวิธีการสร้าง DataFrame กันครับ

DataFrame ที่จะสร้างกันวันนี้ เป็นทีมฟุตบอลชายหาด All Star 5 คน

วิธีการก็คล้ายๆกับ การสร้าง series ด้วยคำสั่ง Series()  ซึ่งการสร้าง DataFrame  นั้นใช้คำสั่ง DataFrame() โดยในวงเล็บ จะประกอบไปด้วยสามส่วน

  • ส่วนแรกคือข้อมูลของผู้เล่นแต่ละคน
  • ส่วนที่สอง คือ แถว index คือ ชื่อลำดับอ้างอิง ของผู้เล่นแต่ละคน
  • ส่วนที่สาม คือ ส่วน columns คือ ชื่อหัวข้อ ของข้อมูลผู้เล่นแต่ละคน

import pandas as pdmy_team = pd.DataFrame

[[‘Messi’,’Barcelona’, ‘Forward’,’Arg’, 10],
[‘Ronaldo’,’Real Madrid’,’Forward’,’Por’,7],
[‘Pogba’,’Manchester United’,’Midfield’,’Fra’,6],
[‘Suarez’,’Barcelona’,’Forward’,’Urg’, ‘9’],
[‘David de Gea’, ‘Manchester United’, ‘Goal Keeper’, ‘Spa’, 1 ] ]
,index = [‘Player 1’, ‘Player 2’, ‘Player 3’, ‘Player 4’, ‘Player 5’]
,columns = [‘Name’, ‘Team’, ‘Position’, ‘Country’, ‘Number’]
)

จาก Code ด้านบน จริงๆแล้วมีแค่ 2 บรรทัดเท่านั้นนะครับ

บรรทัดแรกคือการ import pandas เข้ามา
ส่วนอีกบรรทัดคือการสร้าง DataFrame ซึ่งจริงๆแล้ว Code ในส่วนนี้เราสามารถพิมพ์ในบรรทัดเดียวกันได้ แต่เราสามารถกด Enter แยกบรรทัดออกมาเพื่อให้อ่านได้ง่ายขึ้น

เมื่อเราสร้างเสร็จแล้ว ลองเรียกข้อมูลมาดูกัน

 

my_team

Name Team Position Country Number
Player 1 Messi Barcelona Forward Arg 10
Player 2 Ronaldo Real Madrid Forward Por 7
Player 3 Pogba Manchester United Midfield Fra 6
Player 4 Suarez Barcelona Forward Urg 9
Player 5 David de Gea Manchester United Goal Keeper Spa 1

 

DataFrame คล้ายกับกล่องข้อมูลที่บรรจุไปด้วยข้อมูลหลากหลาย เราสามารถใช้คำสั่งเลือกข้อมูลที่เราต้องการได้หลายรูปแบบ โดยใช้ method ที่เรียกว่า .loc และ .iloc
เริ่มจาก .loc ซึ่งหมายถึงการดึงข้อมูลจากชื่อของแถว สมมุติว่าเราอยากเอาข้อมูลทั้งหมดของ Player 2 เพียงแค่คนเดียว มาเก็บไว้ในตัวแปรใหม่ที่ชื่อว่า CR7 ก็สามารถทำได้โดยเขียน Code ดังนี้

CR7 = my_team.loc[‘Player 2’]

ทีนี้ลองมาดูผลลัพท์กัน

CR7Name Ronaldo
Team Real Madrid
Position Forward
Country Por
Number 7
Name: Player 2, dtype: object

ส่วน .iloc จะต่างกับ .loc ตรงที่ว่าจะใช้ลำดับเป็นตัวเลข แทนการใช้ชื่อ(ตัวอักษร) อย่าลืมว่า ลำดับเริ่มต้นที่ 0 ไม่ใช่ 1 นะครับ ดังนั้นในกรณี Player 2  หากใช้ method .iloc สามารถเขียน code ได้ดังนี้

CR7 = my_team.iloc[1]

มาดูผลกันว่าต่างกับการใช้ .loc หรือไม่

CR7Name Ronaldo
Team Real Madrid
Position Forward
Country Por
Number 7
Name: Player 2, dtype: object

ไม่ว่าจะใช้ .loc หรือ .iloc ผลลัพท์ก็ไม่ได้ต่างกันเลย การเลือกใช้นั้นขึ้นอยู่กับว่า index ของตัว DataFrame เหมาะที่จะเรียกตามหมายเลขลำดับ หรือ ชื่อมากกว่ากัน

จากบทความก่อนหน้านี้ จำได้ไหมครับว่า


เจ้าหนึ่งแถวที่ได้ออกมา | ไม่ว่าจะแนวนอน (Row) หรือ แนวตั้ง (Column) | ใน Pandas เรียกว่า Series

เราลองมาดูกันว่า CR7 ของเราที่ได้ออกมานั้น เป็น ข้อมูลประเภทใดโดยใช้ฟังก์ชัน type()

type(CR7)<class ‘pandas.core.series.Series’>

เห็นไหมครับว่าแถวเดียวที่ได้ออกมา(ในกรณีนี้คือ Player 2) เป็น Series ไม่ได้เป็น DataFrame

หนึ่งในความสนุกของการเล่นกับ DataFrame ใน Pandas นั้น เราสามารถเลือกเอาเฉพาะข้อมูลที่เราต้องการ ไปใช้ทำงานต่อไป และ สร้าง DataFrame ขึ้นมาใหม่ โดยใช้ .iloc และ .loc ที่เราได้เรียนกันไปแล้ว วิธีการเหล่านี้เราเรียกว่า Data Slicing

มาลองดูตัวอย่างกัน

เราจะสร้าง DataFrame ใหม่ (twoPlayers) จาก DataFrame เดิม (my_team) ด้วยการดึงเอาเฉพาะข้อมูลดังต่อไปนี้

  • นักเตะสองคนได้แก่ Player 3 และ Player 5
  • ข้อมูลใน 3 column ได้แก่ Name Position และ Country
  • ใน DataFrame ใหม่นี้ จะย้าย column Country มาเป็น column แรก

มาเขียน Code กันครับ

twoPlayers = my_team.iloc[[2,4],[3,0,2,]]

สร้าง DataFrame ใหม่เสร้จแล้ว ทีนี้มาลองดูผลลัพท์ และ เช็ค type() กัน

print(twoPlayers)

Country Name Position
Player 3 Fra Pogba Midfield
Player 5 Spa David de Gea Goal Keeper

print(type(twoPlayers))

<class ‘pandas.core.frame.DataFrame>

จาก code ข้างบนจะพบว่า DataFrame ที่เราสร้างนั้น สามารถจัดเรียงลำดับของข้อมูลตาม index ที่เรากำหนดไว้ใน [] ของ method .iloc

ถ้าใครอยากฝึกฝนเพิ่มเติม แนะนำให้ลองสลับ index เล่นๆดู หรือ จะลองสร้าง DataFrame ใหม่ด้วย method.loc  หรือจะ สร้างทีมบอลในฝันของคุณเองใหม่หมดเลยก็ได้นะครับ

เมื่อเราทราบวิธีการสร้าง และ Slice Series และ DataFrame กันแล้ว ต่อไป เรียนรู้วิธีการ แก้ไขข้อมูล และ สร้างข้อมูลแบบรัวๆด้วยการ Broadcasting ใน pandas กัน… เหมือนเดิมครับ เขียนเสร็จแล้วจะมาใส่ link ให้นะครับ


กด Like กด Share กันได้นะครับ และ ยังสามารถกดติดตาม Facebook ของเราได้ที่นี่ หรือ Follow ใน Twitter เพื่อ ให้ทีมงาน AI Informatics มีกำลังใจผลิตเนื้อหาต่อไปครับ ขอบคุณครับ

One thought on “การสร้าง Series และ DataFrames ใน Pandas ภาค 2 …สร้างทีมบอลชายหาด All Star

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *