5 สคริปต์ AutoHotkey ช่วยนักวิทยาศาสตร์ข้อมูลจัดการงานซ้ำซาก

สมุดโน้ตบุ๊กพร้อมแล้วแต่ยังไม่ได้เริ่มงานจริง เพราะคุณต้องเสียเวลาเปิดโฟลเดอร์โปรเจกต์ รันเอดิเตอร์ เปิดเทอร์มินัล และหาแท็บเอกสารประกอบ ไหนจะต้องแปลงรายการ ID ลูกค้าจากสเปรดชีตให้เป็นรูปแบบที่ Python หรือ SQL อ่านได้ ซึ่งมักจบลงด้วยการพึ่งพาเว็บฟอร์แมตเตอร์ที่ไม่รู้จัก
นอกจากนี้ พาธไฟล์ที่คัดลอกมายังต้องคอยลบ backslash ออก และต้องลากหน้าต่างต่างๆ ไปวางตำแหน่งเดิมเหมือนเมื่อวาน สิ่งเหล่านี้ไม่ใช่การวิเคราะห์ข้อมูล แต่เป็นภาระที่เกิดขึ้นแทบทุกวันบน Windows ซึ่ง AutoHotkey ถูกสร้างมาเพื่อขจัดขั้นตอนจุกจิกเหล่านี้โดยเฉพาะ
สคริปต์ทั้งห้าจะช่วยจัดการงานจุกจิกบนเดสก์ท็อป โดยใช้ฟีเจอร์เด่นของ AutoHotkey ภายใต้ข้อควรระวังที่เหมาะสม คำอธิบายรูปภาพ: ตารางอ้างอิงแสดงตัวเรียกใช้พื้นที่ทำงาน, ตัวแปลงคลิปบอร์ด, hotstring, ตัวจัดรูปแบบพาธ และคีย์ลัดจัดเลย์เอาต์หน้าต่าง เครดิต: อิงตามเอกสารประกอบ AutoHotkey v2
ก่อนเริ่มสคริปต์: ให้ AutoHotkey อยู่ในขอบเขตที่เหมาะสม
AutoHotkey เป็นเครื่องมือโอเพนซอร์สฟรีสำหรับ Windows ที่มีหลักการง่ายๆ คือ ปุ่มลัดคีย์บอร์ดสามารถสั่งรันโค้ดอะไรก็ได้ที่คุณต้องการ เครื่องมือนี้รองรับเฉพาะ Windows เท่านั้น หากเป็น Mac หรือ Linux ต้องใช้ทางเลือกอื่นอย่าง Hammerspoon หรือ AutoKey
เนื้อหาในที่นี้จะใช้ AutoHotkey v2 ทั้งหมด เนื่องจาก v1 ไม่ได้รับการดูแลแล้ว และโค้ดส่วนใหญ่จะไม่สามารถรันข้ามเวอร์ชันกันได้ การใส่บรรทัด #Requires AutoHotkey v2.0 ไว้บนสุดของไฟล์จะช่วยป้องกันความผิดพลาดได้ดีที่สุด
ขอบเขตการใช้งานที่เหมาะสมของ AutoHotkey คือการจัดการเหตุการณ์บนเดสก์ท็อป เช่น การเปิดโปรแกรม, การปรับเปลี่ยนสิ่งที่อยู่ในคลิปบอร์ด หรือการขยายข้อความสั้นๆ แต่ไม่ควรนำไปใช้กับงานที่ต้องการความแม่นยำและตรวจสอบย้อนหลังได้ (reproducible) เช่น การแปลงข้อมูลสำคัญ ซึ่งควรทำใน Python, R หรือ SQL ภายใต้ระบบ version control มากกว่า
1. การเปิดพื้นที่ทำงานวิเคราะห์ทั้งหมด
แทนที่จะต้องไล่เปิดโปรแกรมเดิมๆ ทุกครั้ง การใช้ hotkey เพียงชุดเดียวสามารถสั่งเปิดทุกอย่างพร้อมกันได้ทันที
#Requires AutoHotkey v2.0
#SingleInstance Force
project := "C:\work\churn-model"
^!w:: { ; Ctrl+Alt+W
Run 'explorer.exe "' project '"'
Run 'code "' project '"'
Run 'wt -d "' project '"' ; Windows Terminal ในโฟลเดอร์โปรเจกต์
Run "http://localhost:8888/lab" ; เซิร์ฟเวอร์โน้ตบุ๊ก หากกำลังรันอยู่
}คำสั่ง Run สามารถเปิดได้ทั้งไฟล์, โฟลเดอร์ และ URL ช่วยให้ชุดโปรแกรมเปิดขึ้นมาพร้อมกันในโฟลเดอร์โปรเจกต์ที่กำหนด ข้อควรระวังคือควรวางพาธไว้ด้านบนสุดเพื่อให้แก้ไขง่าย และห้ามใส่ API key หรือข้อมูลส่วนตัวลงในสคริปต์ เพราะไฟล์เหล่านี้เป็นข้อความธรรมดาที่อาจรั่วไหลได้ง่าย
2. การเปลี่ยน ID ที่คัดลอกมาให้เป็นรายการ Python หรือ SQL
บ่อยครั้งที่เราคัดลอก ID มาจากสเปรดชีต แต่ต้องการนำไปใช้ในรูปแบบ ['a', 'b', 'c'] สำหรับ Python หรือ IN ('a', 'b', 'c') สำหรับ SQL สคริปต์นี้จะช่วยแปลงรูปแบบให้ทันทีจากคลิปบอร์ด
^!l::PasteList("[", "]") ; รายการ Python
^!+l::PasteList("(", ")") ; SQL IN (...)
PasteList(open, close) {
items := []
for line in StrSplit(A_Clipboard, "`n", "`r ")
if line != ""
items.Push("'" line "'")
out := open
for i, item in items
out .= (i > 1 ? ", " : "") item
A_Clipboard := out close
SendText A_Clipboard
}A_Clipboard ช่วยให้เราอ่านและแก้ไขคลิปบอร์ดได้เหมือนตัวแปรทั่วไป การใช้ SendText จะเป็นการวางข้อความตามตัวอักษรเพื่อป้องกันความผิดพลาดจากอักขระพิเศษ วิธีนี้ปลอดภัยกว่าการนำข้อมูลลูกค้าไปแปะในเว็บฟอร์แมตเตอร์ออนไลน์ที่ไม่น่าไว้วางใจ
3. การขยายข้อความพื้นฐานการวิเคราะห์ด้วย Hotstrings
Hotstrings ช่วยแทนที่คำย่อด้วยข้อความยาวๆ เหมาะสำหรับคำสั่งที่ต้องพิมพ์บ่อยอย่างการ import library หรือ EDA checklist
:*:;;imp::
{
SendText "import pandas as pd`nimport numpy as np`nimport matplotlib.pyplot as plt`n"
}
:*:;;eda::
{
SendText "## EDA checklist`n- shape and dtypes`n- missing values per column`n- target balance`n- duplicates`n"
}การใช้คำนำหน้า ;; จะช่วยป้องกันไม่ให้สคริปต์ทำงานโดยไม่ตั้งใจขณะพิมพ์ข้อความปกติ และควรใช้ SendText เพื่อให้แน่ใจว่าเครื่องหมายอย่าง # หรือ { } จะถูกพิมพ์ออกมาอย่างถูกต้อง
4. การทำพาธของ Windows ให้เป็นมิตรกับโน้ตบุ๊ก
เมื่อใช้คำสั่ง "Copy as path" ใน Windows คุณจะได้เครื่องหมาย backslash ซึ่ง Python มักจะอ่านผิดเป็น escape character สคริปต์นี้จะช่วยแปลงพาธให้ใช้งานได้ทันที
^!p:: { ; raw string: r'C:\Users\nd\data\raw.csv'
A_Clipboard := "r'" Trim(A_Clipboard, '"') "'"
SendText A_Clipboard
}
^!+p:: { ; forward slashes: C:/Users/nd/data/raw.csv
A_Clipboard := StrReplace(Trim(A_Clipboard, '"'), "\", "/")
SendText A_Clipboard
}คุณสามารถเลือกได้ว่าจะห่อหุ้มด้วย r'' หรือจะเปลี่ยนเป็น forward slash ทั้งหมด เพื่อให้สอดคล้องกับมาตรฐานของโปรเจกต์หรือการใช้ pathlib ใน Python
5. การจัดหน้าต่างโน้ตบุ๊ก เทอร์มินัล และเอกสารให้เข้าที่
การต้องมานั่งจัดวางตำแหน่งหน้าต่างทุกเช้าเป็นเรื่องเสียเวลา สคริปต์นี้จะช่วยจัดตำแหน่งและขนาดหน้าต่างให้เข้าที่ตามพิกัดที่กำหนดไว้
^!1:: {
Place("ahk_exe WindowsTerminal.exe", 0, 720, 1280, 720)
Place("JupyterLab", 0, 0, 1280, 720)
Place("ahk_exe Code.exe", 1280, 0, 1280, 1440)
}
Place(title, x, y, w, h) {
if WinExist(title) {
WinActivate
WinMove x, y, w, h
}
}คำสั่ง WinMove จะกำหนดพิกัดหน้าต่างเป็นพิกเซล ช่วยให้หน้าต่างโปรแกรมต่างๆ กลับมาอยู่ในเลย์เอาต์ที่คุณถนัดได้ในปุ่มเดียว
ให้ AutoHotkey เป็นตัวเชื่อม ไม่ใช่ไปป์ไลน์
AutoHotkey มีหน้าที่ช่วยให้สภาพแวดล้อมบนเดสก์ท็อปลื่นไหลขึ้น แต่หัวใจสำคัญของการวิเคราะห์ข้อมูลยังคงต้องอยู่ในโน้ตบุ๊กหรือสคริปต์ที่ควบคุมเวอร์ชันได้
สำหรับขั้นตอนที่ต้องทำซ้ำและรวดเร็ว การฝึกใช้ บรรทัดคำสั่ง (command line) อาจเป็นทางเลือกที่ยั่งยืนกว่าในระยะยาว จงใช้ AutoHotkey เพื่อลดภาระการกดแป้นพิมพ์ และปรับเปลี่ยนมันอยู่เสมอตามเวิร์กโฟลว์ที่เปลี่ยนไป
Nahla Davies เป็นนักพัฒนาซอฟต์แวร์และนักเขียนด้านเทคนิคที่มีประสบการณ์บริหารงานในองค์กรชั้นนำที่ดูแลลูกค้าอย่าง Samsung, Netflix และ Sony
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
