Review

รีวิว DataSpell ของดีสำหรับงาน Data Scientist ที่ทำให้ชีวิตง่ายขึ้นเยอะ

By Arnon Puitrakul - 22 เมษายน 2022 - 1 min read min(s)

รีวิว DataSpell ของดีสำหรับงาน Data Scientist ที่ทำให้ชีวิตง่ายขึ้นเยอะ

ปกติเวลาเราทำงานกับ Python เราก็อาจจะเลือกพวก Software อย่าง Text Editor ที่ใช้ไม่เหมือนกัน สำหรับเราเอง เราก็ใช้ Vim กับ Tmux ในการทำงานแบบบ้าน ๆ เลย พอระบบใหญ่ขึ้นมาหน่อย เราก็อาจจะกระโดดไปใช้พวก IDE ที่ช่วยเราเยอะหน่อย เช่นพวก Pycharm อะไรก็ว่าไป แล้วฝั่ง Data Science ละ เราจะใช้อะไรดี วันนี้เราเอาโปรแกรมฝั่ง Jetbrains ที่ออกแบบมาเพื่องานทาง Data Science มาป้ายยากันกับ DataSpell

ปัญหาที่เจอกับ Jupyter

ปัญหาเรื่องใหญ่ ๆ ที่เราจะเจอกับ Jupyter ตัวปกติเลยก็คือ การที่เราจะต้องมานั่งเปิด Jupyter ขึ้นมาก่อนที่เราจะใช้งานได้ ถ้าเราบอกว่า เราลงอยู่ใน Docker Container ตอนนั้น เราก็อาจจะเขียนออกมาเป็น Docker Compose ก็ได้ หรือ ถ้าเราบอกว่า เราทำมาเป็นแค่ Single Image เราจะใช้ที เราก็จะต้องเรียกคำสั่งจาก Command Line เพื่อเปิดและปิดการใช้ Jupyter อีกหลายเรื่องเลยละ

หรืออีกปัญหา อันนี้ไม่ได้เกิดกับเรา แต่เกิดกับคนที่พึ่งเรียนรู้ใหม่ คือมันไม่มีพวก Linter หรือตัวช่วยอื่น ๆ เลย ทำให้เวลามือใหม่เขียน หรือ เอาจริง ๆ เราเขียนเอง บางทีมันก็พลาดกันได้ เขียนออกมา มันก็พัง เพราะตัวสะกดเล็ก ๆ น้อย ทำให้การแก้ไขที่ทำกันจริง ๆ คือ เราก็อาจจะเอาไปก๊อปแปะใน Code Editor ของเราเพื่อให้มันช่วย Lint ให้เราเลย

หลัก ๆ ที่เราเจอก็น่าจะประมาณนี้แหละ เลยทำให้เราไม่ค่อยชอบใช้ในการสอนเท่าไหร่ หรือกระทั่งใช้เองก็ด้วยเหมือนกัน ถ้าเราจะใช้จริง ๆ ก็อยู่ในระดับของพวก Google Colab นั่นมันเจ๋งมาก ๆ ที่ Google เปิดให้เราใช้ Python Notebook กับการใช้งานพวก GPU รวมไปถึง TPU ได้แบบฟรี ๆ อีกด้วย (จริง ๆ มีแบบเสียเงินด้วย) ทำให้กลุ่มที่เรียน ML หรือ DL ใหม่ ๆ เข้าถึงได้ง่ายขึ้นเยอะมาก ๆ แต่มันก็จะยังมี Gap ว่า ถ้าเรารันในเครื่องเราเองละ ถ้าไม่ได้รัน Jupyter ขึ้นมาเอง มันจะมีตัวเลือกอะไรบ้าง หนึ่งในนั้นที่เราจะเอามาเล่าก็คือ DataSpell

Powerful Linter

เริ่มที่ Feature ที่สำคัญมาก ๆ กันก่อน และเป็นอีกหนึ่งเหตุที่เรารัก Jetbrains มาก ๆ คือพวก Linter ของมันที่ทำงานได้โคตรเก่งเลย แน่นอนว่าความเก่งทั้งหมดนั้น ก็โผล่เข้ามาใน DataSpell ทั้งหมด ทำให้มันกลายเป็น Jupyter Notebook Client ที่โคตรเก่ง ช่วยงานเราได้เยอะมาก ๆ ตัวอย่างเช่น เรากำลังจะ Import คำสั่งชื่อ make_regression เข้ามา แต่เราจำคำสั่งไม่ได้ จริง ๆ เราพิมพ์แค่ regress เราว่ามันน่าจะมี make_regression ขึ้นมาให้เราแล้ว

หรือจะเป็นเวลาเราเขียนคำสั่งลงไปแล้ว และ จะใส่ Argument ลงไป ถามว่ามันมีอะไรบ้างละ เราใส่อะไรบ้างละ มันบอกให้เรารู้หมดเลย หรือจะเป็นการการตรวจสอบความผิดพลาดในการเขียนอีกด้วยนะ อันนี้เราถือว่าเฉย ๆ นะ เพราะเป็น Feature ที่ VS Code ก็มีเหมือนกัน ถ้าเราติดตั้งพวก Extension ที่เกี่ยวข้องเข้าไป

Visualisation Outputs

เรื่องนึงที่เรามองว่า การทำงานพวก Data Science ทั้งหลายเหมาะกับการทำงานผ่าน Notebook มากกว่า เพราะเราจะได้เห็น Output ออกมาเรื่อย ๆ เลย ทำให้เรารู้ว่า เราควรจะจัดการยังไงกับมันต่อ มันจะดีมาก ๆ ถ้ามัน Output ออกมาในรูปแบบที่เราดู และ เข้าใจได้ง่าย ไม่ต้องไปนั่งทำอะไรให้ยุ่งยาก

แน่นอนว่าใน DataSpell มันทำมาให้ง่ายมาก ๆ เลยละ ตัวอย่างด้านบน เราทำการ Print Pandas DataFrame ออกมา ปกติมันจะเป็นตารางโง่ ๆ ที่เราไม่สามารถทำอะไรได้เลย แต่อันนี้ทำอออกมาได้ดี เราสามารถ Scroll มันลงไปดูได้เรื่อย ๆ เลย เมื่อเทียบกับแบบปกติที่เรา Print ออกมาด้านล่าง เราจะเห็นเลยว่ามันก็ออกมาเป็น Text โง่ ๆ เท่านั้นแหละ มันจะยิ่งเห็นผลเลย เวลาเราทำงานกับพวก Data Frame ที่มี Columns เยอะ ๆ ถ้าเราใช้ DataSpell เราจะสามารถ Scroll เห็นข้อมูลทั้งหมดได้เลย แต่ถ้าเป็น Print ปกติมันก็อย่างที่เรารู้กันเลย

หรือถ้าเราเปิดพวก CSV File อะไรพวกนั้น ถ้าเราเปิดใน DataSpell มันก็จะ Format เป็นตารางสวยงามมาให้เราเลย ต่างจากถ้าเราเปิดในโปรแกรม Text Editor อื่น ๆ มันก็จะออกมาเป็น Text โง่ ๆ ตามชื่อโปรแกรมของมันแหละ ฮ่า ๆ ซึ่งปกติ เราก็จะต้องเอาไปเปิดใน Number ไม่ก็ Excel เพื่อให้เราเห็นเป็นตาราง ไหนจะเรื่องว่า ถ้า CSV มันใหญ่มาก ๆ ก็คือเกมเลย แต่ DataSpell มันจัดการได้เลย

Database Tools

ตอนเห็น Feature นี้ครั้งแรกคือ ฮูรี่ชิททททททท โซไนส์ !! แบบสุดจริง ๆ เพราะปกติแล้วเวลาเราทำงานกับ Database หรือพวก Data Source อื่น ๆ อะ เราจะต้องไปเปิดอีกโปรแกรมนึงขึ้นมาสำหรับการเข้าถึง Data Source ต่าง ๆ ซึ่งแน่นอนว่าโปรแกรมที่เราใช้ก็จะเป็น DataGrip ของ Jetbrains เองนี่แหละ มันก็ยุ่งยากอยู่เหมือนกัน เพราะเราจะต้องสลับหน้าต่างไป ๆ มา ๆ เพื่อที่จะทำงานกับมัน ถามว่ามันทำงานได้มั้ยก็ได้แหละ แต่ก็ไม่สะดวกเฉย ๆ

ในเมื่อมันเป็น Jetbrains ด้วยกันแล้ว ทำไมเราจะเอา Feature ใน DataGrip ไม่ใส่ไม่ได้ ใช่แล้วฮ่ะ ใน DataSpell มันยัดออกมาเป็น Tab นึงเลยคือ Database Tools ตอนแรก เราเข้าใจว่ามันจะทำอะไรได้เยอะกว่านี้เช่น การต่อ Database แล้วอาจจะสามารถยิงออกมาเป็น Snippet เพื่อต่อออกมาเป็น Cell

สิ่งที่มันทำได้จริง ๆ เอาเท่าที่เราเจอจากมันเลยนะคือ การมี Console สำหรับรัน SQL Commands ทั้งหลาย แล้วถ้าเราอยากจะให้ Notebook Interact อะไรกับข้อมูลตรงนั้น ก็จะไปใช้วิธีเก่าของเราง่าย ๆ เลยคือ การที่เรา Export ออกมาเป็น CSV แล้วให้ Notebook ไป Import CSV File เข้าผ่าน Pandas อะไรก็ว่าไปก็ได้ ไม่งั้นเราก็จะต้องเขียนพวก Database Adapter ในการเชื่อมต่ออีก เรามองว่าในเคสส่วนใหญ่ เราไม่ได้ต้องการอะไรขนาดนั้น

สรุป

เอาจริง ๆ เลยนะ เรามองว่า DataSpell มันเข้ามาแก้ปัญหาให้เราเยอะมาก ๆ โดยเฉพาะ เรื่องหลักที่ทำให้เราไม่ชอบการใช้ Jupyter Notebook ในเครื่องของเราเองเลยนั่นคือ การเปิด และ ปิด Service ของมัน บางคนอาจจะบอกว่าชินแล้ว แต่เรามองว่า มันควรจะโปรแกรมขึ้นมาทำงานได้เลย เหมือนกับ Google Colab อะไรแบบนั้น และอีกส่วนที่เรา Hype มาก ๆ คือ การที่เราสามารถใช้พวก Linter และ Recommendation ที่โคตรโหดของ Jetbrains อยู่แล้วภายใน Notebook ได้เลย มันทำให้เราทำงานได้เร็วขึ้นเยอะมาก ๆ อาจจะไม่ได้ใช้พวก Feature อย่างการทำ Refactoring แต่พวก Suggestion เราได้ใช้เยอะมาก ส่วนของ Feature อื่น ๆ ที่เราไม่ได้เล่าก็จะมีพวก Debugging ที่ลดเวลาในการลองผิดลองถูกภายใน Notebook สักที เพราะเราสามารถเรียก Debugger ได้เหมือนกับ Source Code แบบปกติได้สักที ฮ่า ๆ นั่นแหละฮ่ะ ก็คือ DataSpell ถ้าใครที่ทำงานพวก Data Science เยอะ ๆ เราว่าเป็น Tool ที่น่าลองตัวนึงเลยละ