12 Python Features Every Data Scientist Should Know
23-Aug-23
คัมภีร์เทพ IT
See the original english version Click here!
สำหรับ Data Scientist คุณคงคุ้นเคยกับ Python พอสมควร เพราะมันเป็นภาษา Programming ที่ถูกใช้งานในแวดวง Data Science อย่างกว้างขวาง แต่คุณได้ใช้ประโยชน์จาก Features ทั้งหมดที่ Python มี แล้วหรือยัง ดังนั้นบทความนี้เราจะมาเจาะลึกกับ 12 Python Features ที่เหมาะกับ Data Scientist ที่จะช่วยให้คุณเขียน Code อย่างมีประสิทธิภาพ, อ่านแล้วเข้าใจและ Maintain ได้ง่าย
1. Comprehensions
Comprehensions ใน Python เป็นเครื่องมือที่มีประโยชน์สำหรับ Machine Learning และงานด้าน Data Science เนื่องจากมันช่วยให้สามารถสร้าง Data Structures ที่ซับซ้อนในลักษณะที่มีความกระชับและอ่านเข้าใจได้ง่าย
List Comprehensions สามารถใช้เพื่อ Generate Lists ของ Data ได้ เช่น การสร้าง List ของค่ายกกำลังสองจาก Range ของตัวเลข
Nested List Comprehensions สามารถใช้เพื่อทำให้ Array ที่มีหลายมิติกระจายออกเป็นมิติเดียวได้ ซึ่งเป็นงาน Preprocessing ทั่วไปใน Data Science
Dictionary และ Set Comprehensions มีประโยชน์สำหรับการสร้าง Dictionaries และ Sets ของ Data ตามลำดับ ตัวอย่างเช่น Dictionary Comprehension สามารถใช้เพื่อสร้าง Dictionary ของ Feature Names และ Feature Importance Scores ที่สอดคล้องกันใน Machine Learning Model
Generator Comprehensions มีประโยชน์อย่างยิ่งสำหรับการทำงานกับ Datasets ขนาดใหญ่ เนื่องจากมันจะ Generate ค่าได้ทันที แทนที่จะสร้าง Data Structure ขนาดใหญ่ใน Memory สิ่งนี้สามารถช่วยปรับปรุงในเรื่องประสิทธิภาพและลดการใช้ Memory ลง
2. Enumerate
Enumerate เป็น Built-in Function ที่อนุญาตให้ทำการ Iterate (วนซ้ำ) สิ่งที่เป็น Sequence (เช่น List หรือ Tuple เป็นต้น) ในขณะเดียวกันก็มีการ Track Index ของแต่ละ Element ด้วย
สิ่งนี้มีประโยชน์อย่างยิ่ง หากคุณต้องทำงานกับ Datasets เนื่องจากช่วยให้เข้าถึงและจัดการแต่ละ Element ได้อย่างง่ายดาย ในขณะที่มีการ Track แต่ละ Position ของ Index ไปด้วยเช่นกัน
ตัวอย่างนี้ เราจะใช้ Enumerate เพื่อ Iterate List ของ String และทำการ Print ค่าออกมาหาก Index เป็นเลขคู่
3. Zip
Zip เป็น Built-in Function ที่อนุญาตให้ทำการ Iterate (วนซ้ำ) หลาย ๆ Sequences (เช่น Lists หรือ Tuples เป็นต้น)) ได้พร้อม ๆ กัน
ด้านล่างนี้ เราจะใช้ Zip เพื่อ Iterate 2 Lists คือ x และ y ไปพร้อม ๆ กัน และมีการดำเนินการบางอย่างกับ Elements ที่เกี่ยวข้อง
ในกรณีนี้ จะ Print ค่าของแต่ละ Element ใน x และ y, ผลรวม และผลคูณของ Elements
4. Generators
Generators ใน Python เป็นประเภทของการ Iterate ที่ช่วยให้สร้าง Sequnce ของค่าขึ้นมาได้ทันที แทนที่จะ Generate ค่าทั้งหมดในครั้งเดียวและเก็บไว้ใน Memory
สิ่งนี้ทำให้มีประโยชน์สำหรับการทำงานกับ Datasets ขนาดใหญ่ที่ไม่พอดีกับ Memory เนื่องจาก Data ได้รับการประมวลผลเป็นชิ้นเล็ก ๆ หรือเป็น Batch แทนที่จะดำเนินการทั้งหมดในคราวเดียว
ด้านล่างนี้เราใช้ Generator Function เพื่อสร้าง n Number ตัวแรกใน Fibonacci Sequence และ yield Keyword ถูกใช้เพื่อ Generate แต่ละค่าใน Sequence ทีละรายการ แทนที่จะ Generate Sequence ทั้งหมดในคราวเดียว
5. Lambda Functions
Lambda เป็น Keyword ที่ใช้เพื่อสร้าง Anonymous Functions ซึ่งเป็น Functions ที่ไม่มีชื่อและสามารถถูก Define ได้ใน Code เพียงบรรทัดเดียว
พวกมันมีประโยชน์สำหรับการ Define Custom Functions ได้ในทันทีสำหรับ Feature Engineering, Data Preprocessing หรือ Model Evaluation
ด้านล่างนี้ เราใช้ Lambda เพื่อสร้าง Function ที่เรียบง่าย สำหรับการ Filter เลขคู่จาก List ของตัวเลข
นี่คือ Code Snippet สำหรับการใช้ Lambda Functions กับ Pandas
6. Map, Filter, Reduce
Map, Filter, Reduce เป็น 3 Built-in Functions ที่ใช้สำหรับจัดการและแปลง Data
Map ถูกใช้เพื่อนำ Function ไปประยุกต์ใช้กับแต่ละ Element ของการ Iterate
Filter ถูกใช้เพื่อเลือก Elements จากการ Iterate ตามเงื่อนไข
Reduce ถูกใช้เพื่อนำ Function ไปประยุกต์ใช้กับกับคู่ของ Elements ในการ Iterate เพื่อให้ได้ผลลัพธ์เดียว
ด้านล่างนี้ เราใช้พวกมันทั้งหมดในครั้งเดียวในการคำนวณผลรวมของ เลขคู่ที่มีการยกกำลังสอง
7. Any & All
Any และ All เป็น Built-in Functions ที่ช่วยให้สามารถตรวจสอบได้ว่า Elements ใด ๆ หรือ Elements ทั้งหมดในการ Iterate เป็นไปตามเงื่อนไขที่กำหนดหรือไม่
Any และ All จะมีประโยชน์ในการตรวจสอบว่าตรงตามเงื่อนไขบางอย่างใน Dataset หรือ Subset ของ Dataset หรือไม่ ตัวอย่างเช่น พวกมันสามารถถูกใช้เพื่อตรวจสอบว่า ค่าใด ๆ ใน Column ขาดหายไป หรือค่าทั้งหมดใน Column อยู่ใน Range ที่กำหนดหรือไม่
ด้านล่างนี้คือ ตัวอย่างง่าย ๆ ในการตรวจสอบว่า มีเลขคู่บางตัว และ มีเลขคี่ทั้งหมด หรือไม่
8. Next
Next ถูกใช้เพื่อดึง Item ตัวถัดไปจาก Iterator ซึ่ง Iterator คือ Object ที่สามารถถูก Iterate (Loop) ได้ เช่น List, Tuple, Set หรือ Dictionary
Next มักถูกใช้ใน Data Science สำหรับการ Iterate ผ่าน Iterator หรือ Generator Object มันจะช่วยให้ User สามารถดึง Item ตัวถัดไปจากการ Iterate และมีประโยชน์อย่างยิ่งสำหรับการจัดการ Datasets ขนาดใหญ่หรือ Streaming Data
ด้านล่างนี้ เราจะกำหนด Generator Random_numbers() ที่ให้ Random Numbers ระหว่าง 0 ถึง 1 จากนั้นเราใช้ next() Function เพื่อค้นหาตัวเลขตัวแรกใน Generator ที่มีค่ามากกว่า 0.9
9. Defaultdict
Defaultdict เป็น Subclass ของ Built-in dict Class ที่อนุญาตให้สามารถระบุค่า Default สำหรับ Keys ที่ขาดหายไป
Defaultdict อาจมีประโยชน์สำหรับการจัดการ Data ที่ขาดหายไปหรือไม่สมบูรณ์ เช่น เมื่อทำงานกับ Sparse Matrices หรือ Feature Vectors นอกจากนี้ยังสามารถถูกใช้สำหรับการนับความถี่ของ Categorical Variable (ตัวแปรเชิงกลุ่ม)
ตัวอย่างนี้ เป็นการนับความถี่ของ Items ใน List โดยที่ int ถูกใช้เป็นค่า Default Factory สำหรับ Defaultdict ซึ่งจะเป็นการเริ่มต้น Keys ที่ขาดหายไป เป็น 0
10. Partial
Partial เป็น Function ใน Functools Module ที่อนุญาตให้สร้าง Function ใหม่จาก Function ที่มีอยู่ด้วย Arguments Pre-filled
Partial อาจมีประโยชน์สำหรับการสร้าง Custom Functions หรือ Data Transformations ด้วย Parameters หรือ Arguments Pre-filled สิ่งนี้สามารถช่วยลดจำนวนของ Boilerplate Code ที่จำเป็นเมื่อต้อ่งมีการ Define และเรียกใช้ Functions
ในที่นี้เราใช้ Partial เพื่อสร้าง Function Increment ใหม่ที่เพิ่มขึ้นจาก add Function ที่มีอยู่ โดยหนึ่งใน Arguments ถูกกำหนดค่าเป็น 1
การเรียก increment(1) โดยทั่วไปแล้วคือ การเรียก add(1, 1)
11. lru_cache
lru_cache เป็น Decorator Function ใน Functools Module ที่อนุญาตให้เก็บผลลัพธ์ของ Function ด้วย Cache ที่มีขนาดจำกัด
lru_cache มีประโยชน์สำหรับการ Optimize พวก Functions ที่ใช้การคำนวณอย่างหนัก หรือ Model Training Procedures ที่อาจถูกเรียกด้วย Argument เดียวกันหลาย ๆ ครั้ง
การ Cache สามารถช่วยเพิ่มความเร็วในการ Execute ของ Function และลด Computational Cost โดยรวมได้
ต่อไปนี้เป็นตัวอย่างของการคำนวณ Fibonacci numbers อย่างมีประสิทธิภาพด้วย Cache (หรือเรียกว่า Memoization ในแวดวง Computer Science นั่นเอง)
12. Dataclasses
@dataclass Decorator จะสร้าง Method พิเศษหลาย Methods โดยอัตโนมัติสำหรับ Class เช่น __init__, __repr__ และ __eq__ ตาม Attributes ที่ถูก Define ไว้
มันสามารถช่วยลดจำนวน Boilerplate Code ที่จำเป็นเมื่อมีการ Define Class ซึ่ง Dataclass Objects สามารถแสดง Data Points, Feature Vectors หรือ Model Parameters รวมทั้งสิ่งอื่น ๆ ด้วย
ในตัวอย่างนี้ Dataclass ถูกใช้เพื่อ Define Class Person อย่างง่ายที่มี 3 Attributes ได้แก่ name, age และ city
ที่มา: https://medium.com/
รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert
อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ
บทความล่าสุด