
pandas 3.1.0 มาแล้ว อ่าน CSV เร็วขึ้น แต่ต้องเช็กเลขศูนย์และวันเวลา
อัปเดต 27 ต.ค. 2026: ยังไม่มีรุ่นแก้ใหม่ บน PyPI รุ่นล่าสุดยังเป็น 3.1.0 ผมเพิ่มสองเรื่องจากบันทึกทางการ คือเรื่องเลขศูนย์หน้ารหัสหายในรุ่นนี้เกิดเฉพาะคอลัมน์ที่อ่านด้วย
dtype="category"และ pandas เลิกใช้ numexpr 2.14.1 เร่งการคำนวณแล้ว ดูวิธีเช็กและแก้ทีละขั้นใน คู่มือเช็กและแก้แพตช์สายเดฟ
pandas 3.1.0 ระบุว่าอ่านไฟล์ CSV แบบใช้เธรดเดียวได้เร็วขึ้นโดยทั่วไป 2–3 เท่าเมื่อเทียบกับรุ่น 3.0 โดยเป็นตัวเลขจากบันทึกการเปลี่ยนแปลงของโครงการเพียงแหล่งเดียว และยังมีการอ่านแบบขนานเพิ่มเข้ามาอีกเมื่อเข้าเงื่อนไข (pandas) สำหรับคนทำรายงานยอดขาย สรุปค่าใช้จ่าย หรือเตรียมตารางส่งต่อให้เพื่อนร่วมงาน ข่าวนี้น่าลองครับ แต่ก่อนหวังว่าจะรอไฟล์สั้นลง ผมอยากให้เช็กด้วยว่าเลขรหัสกับวันเวลาในผลลัพธ์ยังตรงกับที่งานต้องการ
รุ่นจริงออกวันที่ 22 ตุลาคม 2026 ตามหัวข้อบันทึกการเปลี่ยนแปลง และ GitHub มีประกาศ pandas 3.1.0 แล้ว ส่วน PyPI มีไฟล์ของรุ่นนี้พร้อมหลักฐานการเผยแพร่ที่ตรวจสอบวันที่เดียวกัน (pandas, GitHub, PyPI) นี่จึงเป็นจังหวะเตรียมอัปเกรดงานจริงอย่างมีขั้นตอน โดยเฉพาะงานที่ผลลัพธ์ผิดนิดเดียวแล้วต้องย้อนแก้ทั้งรายงาน
สรุป 30 วินาที: เกิดอะไรขึ้น
pandas คือชุดเครื่องมือเสริมของ Python สำหรับจัดการและวิเคราะห์ข้อมูล มีความสามารถอ่านเขียนตารางจาก CSV, Excel และฐานข้อมูล รวมถึงรวมตารางและจัดการข้อมูลที่ขาดหาย ส่วน DataFrame คือโครงสร้างข้อมูลแบบตารางที่มีชื่อแถวและคอลัมน์ (PyPI) คนที่ไม่ได้เขียน Python เองอาจใช้บทความนี้เป็นรายการคุยกับคนดูแลรายงานได้ โดยไม่ต้องจำชื่อคำสั่งทุกตัว
จุดเด่นของรุ่นนี้คือ DataFrame.select() สำหรับเลือกคอลัมน์พร้อมสร้างคอลัมน์คำนวณ และ DataFrame.filter() ที่เพิ่มการกรองตามเงื่อนไขค่าจริงในตาราง อีกด้านคือ read_csv() ซึ่งเป็นคำสั่งอ่านไฟล์ข้อความตาราง CSV ทำงานเร็วขึ้นและอ่านไฟล์ใหญ่หลายส่วนพร้อมกันได้ (pandas)
ทีมโครงการแนะนำให้ผู้ใช้อัปเกรด แต่บันทึกฉบับละเอียดระบุทั้งการแก้ข้อผิดพลาดและการเปลี่ยนพฤติกรรมที่เข้ากับโค้ดเดิมไม่ได้ทั้งหมด ผมจึงแนะนำให้แยกคำว่า “รุ่นจริงพร้อมใช้” ออกจาก “งานของเราทดสอบผ่านแล้ว” ก่อนกดเปลี่ยนสภาพแวดล้อมหลัก (GitHub, pandas)
ทำไมเรื่องนี้เกี่ยวกับคุณ
ถ้าคุณรับไฟล์จาก Excel แล้วให้ Python ช่วยรวมยอด จุดที่เกี่ยวข้องโดยตรงคือการอ่านข้อมูล เพราะรุ่นนี้เปลี่ยนการตีความคอลัมน์แบบ category หรือข้อมูลที่เก็บค่าเป็นหมวดหมู่ ทั้งในตัวอ่าน CSV และตัวอ่านอื่นที่ใช้ส่วนแปลข้อความร่วมกัน ซึ่งรวม read_excel() ด้วย (pandas) คำแนะนำของผมคืออย่าตรวจแค่ว่ายอดรวมเท่าเดิม ให้เปิดดูคอลัมน์รหัสที่ต้องเก็บรูปแบบเดิมด้วย
สำหรับนักเรียน นักศึกษา หรือคนทำงานที่ใช้ Jupyter ซึ่งในที่นี้หมายถึงสมุดงานที่สลับข้อความกับโค้ด ผมแนะนำให้เก็บชุดโปรแกรมเดิมไว้ก่อน แล้วทดลองกับสำเนาสมุดงาน เหตุผลที่ต้องเทียบผลจริงคือรุ่นนี้เปลี่ยนทั้งชนิดข้อมูลวันเวลาและผลลัพธ์บางกรณีที่มีค่าขาดหาย ไม่ได้มีเฉพาะคำสั่งใหม่ให้ลองเล่น (pandas)
ถ้าคุณเป็นเจ้าของกิจการหรือรับผิดชอบรายงาน แต่มีคนอื่นดูแลโค้ด ให้ขอผลเปรียบเทียบก่อนและหลังอัปเกรด โดยเน้นรหัส วันที่ จำนวนแถว และยอดที่ใช้ตัดสินใจ นี่เป็นข้อเสนอในการตรวจงานของผม ไม่ใช่ข้อกล่าวอ้างว่าธุรกิจในไทยได้รับผลกระทบแล้ว แหล่งข้อมูลที่ให้มาไม่ได้ระบุองค์กรไทยหรือจำนวนผู้ใช้ที่เจอปัญหา
ทำงานยังไง
นึกถึง ตู้กับข้าวที่จัดชั้นใหม่ — ของเดิมยังอยู่แต่บางอย่างย้ายที่ ครับ ก่อนใช้งานต่อ เราควรรู้ว่าจะหยิบอะไรจากตรงไหน ใน pandas รอบนี้ การเลือกคอลัมน์กับการกรองข้อมูลมีหน้าที่ชัดขึ้น ขณะเดียวกันวิธีตีความข้อมูลบางชนิดก็เปลี่ยน จึงควรตรวจสิ่งที่ได้ออกมา ไม่ใช่อาศัยความคุ้นเคยกับชื่อคำสั่งอย่างเดียว (pandas)
select() คืนตารางใหม่ที่มีคอลัมน์ตามที่ระบุ จะเลือกชื่อคอลัมน์เดิม หรือสร้างคอลัมน์ด้วย pandas.col() ซึ่งเป็นวิธีเขียนนิพจน์อ้างถึงคอลัมน์ก็ได้ อีกทางคือส่งฟังก์ชันคำนวณเข้าไปพร้อมชื่อคอลัมน์ใหม่ ที่สะดวกคือส่วนคำนวณที่เขียนทีหลังอ้างถึงคอลัมน์ที่เพิ่งสร้างก่อนหน้าในการเรียกครั้งเดียวกันได้ (pandas) ถ้าจะลองใช้ ผมแนะนำให้เริ่มจากขั้นเตรียมตารางส่งออกที่มีคอลัมน์ไม่มาก จะตรวจลำดับและความหมายได้ง่าย
ส่วน filter() เพิ่ม cond สำหรับรับชุดค่า True/False ที่บอกว่าจะเก็บรายการใดไว้ เรียกว่า boolean mask หรือชุดเงื่อนไขผ่านกับไม่ผ่าน โดยปกติจะคัดแถว และใช้ axis=1 เมื่อต้องการคัดคอลัมน์ ทั้ง DataFrame.filter() และ Series.filter() รองรับความสามารถนี้ โดย Series หมายถึงข้อมูลหนึ่งชุดที่มีป้ายกำกับ (pandas)
ความต่างที่ควรจำคือ select() เน้นว่าจะให้ตารางผลลัพธ์มีคอลัมน์อะไรและคำนวณอะไรเพิ่ม ส่วน filter(cond=...) เน้นว่าจะเก็บแถวหรือคอลัมน์ใดตามเงื่อนไข ถ้าชุดเงื่อนไขเป็น Series ระบบจะจัดให้ตรงตามป้ายกำกับของแกนที่กรอง แต่ชุดเงื่อนไขชนิดอื่นต้องมีความยาวเท่ากับแกนนั้น (pandas) ผมแนะนำให้ตั้งชื่อชุดเงื่อนไขให้บอกความหมาย เพื่อให้คนอ่านต่อเห็นว่ากำลังคัดอะไร
ค่าที่ขาดหายในชุดเงื่อนไขจะถูกถือเป็น False โดยปริยาย จึงไม่เก็บรายการนั้นไว้ หากต้องการเก็บให้ใช้ na=True หรือเลือก na="raise" เพื่อให้แจ้งข้อผิดพลาดเมื่อเจอค่าขาดหายได้ ขณะที่รูปแบบฟังก์ชันคำนวณเงื่อนไขและนิพจน์ pandas.col() ส่งเป็นอาร์กิวเมนต์ตามตำแหน่งได้ด้วย (pandas) สำหรับรายงานที่ห้ามข้อมูลหลุดโดยไม่รู้ตัว ผมแนะนำให้ตัดสินใจเรื่องค่าขาดหายอย่างชัดเจนก่อนใช้ค่าเริ่มต้น
ด้านความเร็ว read_csv() ใช้ตัวแปลไฟล์เริ่มต้น engine="c" และรุ่นนี้ปรับทั้งการแยกข้อความ การเดาชนิดข้อมูล และการแปลงคอลัมน์ตัวเลข ข้อความกับวันเวลา การอ่านขนานเปิดไว้โดยปริยายสำหรับไฟล์ในเครื่องที่ไม่บีบอัด ขนาดอย่างน้อย 5 MB และไม่มีตัวเลือกที่บังคับให้แปลทั้งไฟล์ร่วมกัน เอกสารระบุว่าผลลัพธ์เหมือนการอ่านตามลำดับปกติ (pandas)
ตัวควบคุมใหม่ชื่อ mode.max_threads กำหนดจำนวนเธรด หรือหน่วยงานประมวลผลที่ทำงานพร้อมกัน ค่าเริ่มต้นเท่ากับจำนวน CPU ที่กระบวนการนั้นใช้ได้ แต่จำกัดสูงสุดที่ 6 และตั้งเป็น 1 เพื่ออ่านแบบลำดับเดียวได้ เอกสารยกกรณีใช้ pandas ภายในแอปที่แบ่งงานพร้อมกันอยู่แล้วเป็นเหตุผลหนึ่งในการปรับค่านี้ (pandas) ดังนั้นผมแนะนำให้ทีมระบบทดสอบทั้งเวลาอ่านและการทำงานรวมของแอปด้วย
จุดสังเกต: อ่านสำเร็จไม่ได้แปลว่ารหัสยังเหมือนเดิม
จุดที่ผมอยากให้วงไว้คือ read_csv() เมื่อระบุ dtype="category" เดิมตัวแปล c และ python เก็บหมวดหมู่ที่ดูเป็นตัวเลขหรือค่าจริงเท็จเป็นข้อความ แต่รุ่นนี้จะอนุมานเป็นตัวเลขและค่าจริงเท็จให้สอดคล้องกับตัวแปล pyarrow ซึ่งเป็นอีกทางเลือกในการอ่านข้อมูล ผลคือรหัสที่เติมศูนย์ด้านหน้าอาจเสียศูนย์เหล่านั้นเมื่อถูกตีความเป็นจำนวนเต็ม (pandas)
เอกสารแนะนำว่าถ้าต้องการเก็บหมวดหมู่เป็นข้อความเหมือนเดิม ให้ระบุอ่านเป็น str ซึ่งหมายถึงข้อความ แล้วค่อยแปลงเป็น category ภายหลัง ขณะเดียวกันคอลัมน์ที่ไม่ได้แปลงเป็นตัวเลขหรือค่าจริงเท็จได้ครบทุกค่า ยังเก็บเป็นหมวดหมู่ข้อความตามเงื่อนไขที่เอกสารอธิบายไว้ (pandas) ผมจึงแนะนำให้ทดลองกับข้อมูลที่มีศูนย์นำหน้าจริง อย่าใช้เพียงไฟล์ตัวอย่างที่มีแต่จำนวนธรรมดา
ขอบเขตของเรื่องนี้ควรจำให้แม่นครับ การเปลี่ยนในรุ่นนี้กระทบเฉพาะคอลัมน์ที่อ่านด้วย dtype="category" ผ่านตัวแปล c หรือ python รวมถึง read_table(), read_fwf() และ read_excel() ส่วน read_csv() แบบไม่ระบุชนิดก็ตัดศูนย์นำหน้าของคอลัมน์ที่ดูเป็นตัวเลขอยู่แล้วตั้งแต่ก่อน 3.1.0 เอกสารระบุว่าการตัดศูนย์ครั้งนี้เป็นแบบเดียวกับตอนไม่ระบุ dtype="category" (pandas) ถ้าเจอรหัสไปรษณีย์หรือเลขบัญชีศูนย์หายหลังอัปเกรด จึงควรดูก่อนว่าคอลัมน์นั้นอ่านเป็น category หรือไม่ และวิธีเก็บรหัสให้ครบคืออ่านเป็น str เสมอ ตัวอย่างในเอกสารใช้ dtype="str" กับทั้งตาราง ส่วนการระบุรายคอลัมน์อย่าง dtype={"zip": "str"} เป็นตัวอย่างของผมที่ใช้ความสามารถ dtype แบบ dict ที่มีมานาน เอกสารหน้านี้ไม่ได้ยกรูปแบบนี้ไว้
เรื่องนี้เป็นตัวอย่างของการเปลี่ยนที่โค้ดอาจยังรันจนจบ แต่ความหมายที่งานต้องการรักษาอาจต่างออกไป คำแนะนำของผมคือกำหนดให้ชัดว่าคอลัมน์ใดเป็น “รหัสที่ต้องคงข้อความ” แล้วตรวจทั้งค่าที่อ่านเข้าและค่าที่ส่งออก ความเร็วที่เพิ่มขึ้นไม่ช่วยตัดสินเรื่องนี้แทนเจ้าของข้อมูลครับ
เรื่องเงิน / ผลกระทบ
ตัวเลขความเร็ว 2–3 เท่าที่กล่าวข้างต้นมาจากเอกสาร pandas เพียงแหล่งเดียว และอธิบายการอ่านเธรดเดียวโดยทั่วไปเทียบกับ 3.0 ไม่ใช่คำรับรองว่าเวลารันรายงานทั้งงานจะลดลงในอัตราเดียวกัน การอ่านขนานยังมีเงื่อนไขไฟล์และตัวเลือกของมันเอง (pandas) ผมแนะนำให้จับเวลากับไฟล์ที่ใช้จริงและขั้นตอนทั้งหมดก่อนนำไปประเมินเวลาที่ทีมจะประหยัดได้
สำหรับต้นทุนอัปเกรด ให้ตรวจ dependency หรือแพ็กเกจอื่นที่ pandas ต้องใช้ร่วมกัน หน้า Installation ระบุขั้นต่ำ NumPy 2.0.2 ซึ่งช่วยงานคำนวณข้อมูล และ python-dateutil 2.9.0 ซึ่งช่วยจัดการวันเวลา ส่วน tzdata ซึ่งเป็นข้อมูลเขตเวลา จำเป็นเฉพาะ Windows และ Pyodide บน Emscripten ตามเอกสารนี้ (pandas, PyPI) แหล่งข้อมูลไม่ได้ให้ตารางเทียบขั้นต่ำเดิมครบ จึงยังสรุปไม่ได้ว่าทุกรายการเพิ่งถูกยกขั้นต่ำในรุ่นนี้
คนทำ Excel ควรตรวจแพ็กเกจเสริมที่ตัวเองใช้งานด้วย เอกสารระบุ openpyxl ขั้นต่ำ 3.1.5, xlsxwriter 3.2.5 และ python-calamine 0.4.0 พร้อมระบุว่า xlrd และ pyxlsb อยู่ในสถานะเลิกแนะนำให้ใช้ต่อและเสนอ python-calamine เป็นทางเลือก โดยไม่ได้บอกในข้อความที่ให้มาว่าถอดทั้งสองตัวออกแล้ว (pandas) ข้อเสนอของผมคือทดสอบเปิดและส่งออกไฟล์จริงก่อนย้ายเครื่องมืออ่าน Excel ที่ใช้อยู่
แหล่งข่าวไม่ได้ให้ตัวเลขเงินที่ประหยัดได้ ค่าแรงที่ลดลง หรือค่าใช้จ่ายขององค์กรไทย จึงยังตีเป็นเงินบาทไม่ได้ สำหรับการวางแผน ผมแนะนำให้นับทั้งเวลาทดสอบและเวลาตรวจรายงานกลับเข้าไปด้วย ไม่ใช่คำนวณจากความเร็วอ่านไฟล์เพียงอย่างเดียว
ข้อมูลที่ยังไม่ชัด และจุดที่แหล่งข่าวพูดไม่ตรงกัน
เรื่องวันที่ต้องแยกข้อมูลกำกับออกจากเนื้อหา Source ของหน้า What’s new มีวันที่กำกับ 17 กันยายน 2026 แต่หัวข้อหน้าเขียน 22 ตุลาคม 2026 ส่วน GitHub มีวันที่กำกับ 22 ตุลาคม และ PyPI ระบุการตรวจสอบหลักฐานเผยแพร่วันที่ 22 ตุลาคม 2026 จึงใช้วันที่ 22 ตุลาคมเป็นวันออกรุ่นตามหัวข้อและหลักฐานประกอบ โดยยังอธิบายไม่ได้จากข้อความที่มีว่าทำไมวันที่กำกับหน้าแรกจึงเก่ากว่า (pandas, GitHub, PyPI) ไม่มีเวลาเผยแพร่พร้อมเขตเวลาให้แปลงเป็นเวลาไทย
เรื่อง Python ต้องระวังการเหมารวม หน้า Installation ที่ให้มามีหัวข้อ Python version support แต่ไม่มีรายละเอียดตามหลัง ส่วน GitHub ระบุชัดว่า pandas 3.0 รองรับ Python 3.11 ขึ้นไป และ 3.0.6 เป็นรุ่นแรกที่รองรับ Python 3.15 นั่นเป็นข้อความของสาย 3.0 ไม่ใช่ประโยคประกาศช่วงรองรับทั้งหมดของ 3.1.0 (pandas, GitHub)
สิ่งที่ยืนยันได้สำหรับ 3.1.0 คือรายการไฟล์ติดตั้งสำเร็จรูปบน PyPI มี CPython 3.11, 3.12, 3.13, 3.14 และ 3.15 รวมถึงไฟล์แบบ free-threading สำหรับ 3.14 และ 3.15 ตามรายการที่ให้มา แต่การเห็นไฟล์เหล่านี้ยังไม่แทนเอกสารนโยบายรองรับทุกสภาพแวดล้อม จึงไม่ขยายความเป็นการรองรับ Python ทุกรุ่นหลังจากนั้น (PyPI)
ส่วนรุ่นทดสอบก่อนหน้า GitHub มีประกาศ 3.1.0rc0 โดย rc คือ release candidate หรือรุ่นเตรียมออกจริง จึงยืนยันได้ว่ามีรุ่นสำหรับทดสอบมาก่อน แต่ข้อความไม่ได้บอกวันทดสอบ ผลทดสอบ หรือว่าผู้เขียนและผู้อ่านเคยทดสอบเองแล้ว (GitHub) และบันทึกการเปลี่ยนแปลงที่ได้รับจบกลางรายการหนึ่ง บทความนี้จึงไม่อ้างว่าแจกแจงการเปลี่ยนแปลงครบทุกข้อ
แล้วเราควรทำอะไร
นักวิเคราะห์ที่ใช้ Jupyter และรับส่งไฟล์ Excel
- ผมแนะนำให้จดและตรึงเวอร์ชันเดิมของงานไว้ก่อน เพื่อมีชุดอ้างอิงระหว่างทดลองรุ่นใหม่ แล้วใช้สภาพแวดล้อมเสมือนหรือ venv ซึ่งเป็นพื้นที่แยกชุดแพ็กเกจสำหรับงานทดลอง แนวทางติดตั้งในพื้นที่แยกนี้เป็นสิ่งที่เอกสาร pandas แนะนำ (pandas)
- รันสำเนาสมุดงานด้วยไฟล์เดิม แล้วเปรียบเทียบจำนวนแถว ยอดรวม คอลัมน์รหัส และชนิดข้อมูล โดยเน้นคอลัมน์
categoryที่อ่านจาก CSV หรือ Excel เพราะมีการอนุมานตัวเลขและค่าจริงเท็จเปลี่ยนไป (pandas) - ตรวจไฟล์ที่ส่งออกด้วย ไม่จบแค่หน้าจอแสดงผล หากงานมีวันเวลา ให้เช็กค่าที่นำไปคำนวณและชนิดข้อมูลร่วมกัน เพราะความละเอียดของวันเวลาจากข้อมูลตัวเลขเปลี่ยนในรุ่นนี้ (pandas)
วิศวกรข้อมูลและคนดูแลงานอัตโนมัติ
- ผมแนะนำให้เพิ่ม 3.1.0 ใน CI matrix หรือชุดทดสอบอัตโนมัติที่ลองหลายชุดเวอร์ชัน โดยเก็บชุดเดิมเป็นตัวเทียบ ตรวจ NumPy และตัวอ่านเขียน Excel ตามขั้นต่ำที่เอกสารกำหนดก่อนตัดสินใจเปลี่ยนระบบหลัก (pandas)
- เปิดตรวจคำเตือน โดยเฉพาะการส่งรายการ True/False ตามตำแหน่งให้
filter()ซึ่งรุ่นนี้ออกUserWarningให้ใช้condหากตั้งใจกรองเงื่อนไข หรือitemsหากตั้งใจเลือกป้ายชื่อ เอกสารยังบอกว่าการเลือกป้ายชื่อผ่านitems,like,regexจะถูกประกาศเลิกใช้ในรุ่นอนาคต ไม่ได้บอกว่าถอดออกใน 3.1.0 แล้ว (pandas) - ทดสอบงานอ่าน CSV ภายในกระบวนการจริง หากแอปแบ่งงานพร้อมกันอยู่แล้ว ให้เปรียบเทียบค่าเริ่มต้นกับ
mode.max_threadsเท่ากับ 1 ตามกรณีที่เอกสารยกไว้ แล้วเลือกค่าจากผลทดสอบของระบบตัวเอง (pandas) - เช็กรุ่น numexpr ด้วย pandas 3.1.0 เลิกใช้ numexpr 2.14.1 เร่งการคำนวณและการเปรียบเทียบแล้ว เพราะบาง build ของรุ่นนั้นคืนผลผิดแบบเงียบๆ เป็นครั้งคราว เช่นได้คอลัมน์เป็นศูนย์ทั้งหมดกับข้อมูลขนาดใหญ่ pandas จะกลับไปใช้ NumPy และเตือนครั้งแรก ส่วน
eval(),DataFrame.eval()และDataFrame.query()ที่ระบุengine="numexpr"จะแจ้งImportErrorถ้าต้องการความเร็วเดิมให้ติดตั้ง numexpr 2.14.2 ขึ้นไป (pandas)
ผู้เริ่มต้นและคนที่อยากลองคำสั่งใหม่
-
เริ่มใน venv ตามคำแนะนำติดตั้งของโครงการ แล้วใช้คำสั่งอัปเกรดรุ่นปกติด้านล่าง ซึ่ง GitHub ระบุไว้สำหรับรุ่นจริง ไม่ต้องใช้ตัวเลือกรุ่นทดสอบของ rc0 (pandas, GitHub)
ใช้คำสั่ง
python -m pip install --upgrade pandas -
หากต้องอ่าน Excel เอกสารมีชุดแพ็กเกจเสริม
pandas[excel]ให้ติดตั้งได้ ลองกับสำเนาข้อมูลก่อน และตรวจว่าตัวอ่านไฟล์ที่ต้องการอยู่ครบ อย่าเพิ่งย้ายงานส่งจริงทั้งหมดในครั้งแรก (pandas) -
เริ่มฝึกโดยแยกงานเลือกคอลัมน์ด้วย
select()กับงานกรองเงื่อนไขด้วยfilter(cond=...)ให้เข้าใจก่อน แล้วค่อยต่อการคำนวณหลายขั้น ความสามารถทั้งสองมีรายละเอียดใหม่ตามบันทึกของรุ่นนี้ (pandas)
อีกห้าจุดที่ควรเทียบกับผลลัพธ์เดิม
นอกเหนือจากการอ่าน category ที่อธิบายไปแล้ว ผมเลือกอีกห้าจุดสำหรับคนดูแลรายงานและโค้ดเดิม โดยเน้นสิ่งที่ควรมีในชุดทดสอบ มากกว่าการจำรายการเปลี่ยนแปลงทั้งหมด
- หน่วยความละเอียดวันเวลาจากตัวเลข —
to_datetime(),to_timedelta(),TimestampและTimedeltaยังใช้unitตีความค่าที่รับเข้า แต่ไม่ใช้หน่วยนั้นกำหนดชนิดผลลัพธ์อีกแล้ว ค่าเริ่มต้นเป็นไมโครวินาที หรือหนึ่งในล้านวินาที และเป็นนาโนวินาทีเมื่อความละเอียดข้อมูลจำเป็นต้องใช้ หากต้องการหน่วยเฉพาะ เอกสารแนะนำas_unit()หรือSeries.dt.as_unit()หลังสร้างข้อมูล ผมแนะนำให้ทดสอบโค้ดที่ตรวจชนิดข้อมูลแบบตรงตัวด้วย (pandas) - การสร้าง Timestamp ที่ผสมวิธีส่งส่วนประกอบ — Timestamp คือค่าจุดเวลา การส่งค่าที่ต้องการแปลงพร้อมส่วนประกอบวันเวลาเพิ่ม หรือผสมส่วนประกอบตามตำแหน่งกับตามชื่อในกรณีที่เอกสารยกไว้ เคยทำให้บางส่วนถูกละเลยหรือไปผิดช่อง ตอนนี้แจ้ง
ValueErrorแทน เอกสารแนะนำให้ใส่ส่วนประกอบในค่าต้นทางหรือส่งส่วนประกอบทั้งหมดตามชื่อให้ชัดเจน (pandas) - ผลรวมวินาทีที่ละเอียดมาก —
Timedelta.total_seconds()ซึ่งแปลงระยะเวลาเป็นจำนวนวินาที รวมเศษระดับนาโนวินาทีแล้ว แทนการทิ้งเศษที่เล็กกว่าไมโครวินาที และทำให้ผลของค่าเดี่ยวตรงกับการคำนวณทั้งชุดตามที่เอกสารอธิบาย ผมแนะนำให้ตรวจงานที่เปรียบเทียบผลตัวเลขละเอียดแบบตรงกันทุกหลัก (pandas) - การแก้ข้อมูลจาก Index โดยตรง — Index คือป้ายกำกับที่ใช้ระบุรายการในข้อมูล ตอนนี้
Index.valuesและIndex.arrayคืนอาร์เรย์หรือชุดข้อมูลแบบอ่านอย่างเดียวสำหรับทุกชนิดข้อมูล เพื่อป้องกันการแก้ค่าตรงนั้นแล้วทำให้ค่าที่แสดงกับการค้นหาไม่ตรงกัน โค้ดที่เคยแก้ชุดข้อมูลที่คืนมาทันทีจึงเป็นจุดควรทดสอบ (pandas) - ผลเปรียบเทียบเมื่อมีค่าขาดหาย — การคำนวณ เปรียบเทียบ และตรรกะของ DataFrame กับ Series, Index หรืออาร์เรย์ชนิดเสริมตามแกนคอลัมน์เริ่มต้น จะทำตามกฎแบบระหว่าง Series และรักษาชนิดข้อมูลเสริมไว้ ผลเปรียบเทียบที่มีค่าขาดหายจึงอาจเป็น
NAซึ่งหมายถึงไม่ทราบค่า แทน True หรือ False ผมแนะนำให้ทดสอบกฎคัดข้อมูลและการนับผลลัพธ์ที่อาศัยค่าจริงเท็จเหล่านี้ (pandas)
ผมมองว่า…
ผมมองว่า ในความเห็นส่วนตัว สิ่งสำคัญของการอัปเกรดครั้งนี้ ไม่ใช่การได้คำสั่งใหม่ แต่คือการยืนยันว่าข้อมูลยังมีความหมายเดิมตามงานของเรา การอ่านเร็วขึ้นน่าลองมาก ทว่ารหัสที่ศูนย์หายหรือค่าขาดหายที่ถูกตัดออก ควรเป็นเรื่องที่เราตัดสินใจไว้ ไม่ใช่เพิ่งเห็นตอนเปิดรายงานปลายทาง
ผมจะเริ่มจากสำเนางานเล็กที่มีข้อมูลตัวแทนครบ ทั้งรหัส วันเวลา และค่าขาดหาย เมื่อผลตรงตามที่ตั้งใจแล้วค่อยขยายไปงานอื่น นี่เป็นข้อเสนอในการทำงานของผม ไม่ใช่ผลทดสอบ pandas ของบทความนี้ เพราะเราไม่มีผลทดลองบนเครื่องหรือไฟล์ของผู้อ่าน
ปิดท้าย: สิ่งที่ต้องจับตา
สิ่งที่ควรตามต่อคือรายละเอียดการเลิกใช้การเลือกป้ายชื่อผ่าน filter() ในรุ่นอนาคต และเงื่อนไขอ่าน CSV แบบขนานฉบับเต็ม เพราะข้อความที่ให้มาระบุเงื่อนไขหลักและชี้ว่ามีรายการเพิ่มเติม แต่ไม่ได้แนบรายละเอียดทั้งหมดมา (pandas) ระหว่างนี้ผมแนะนำให้ใช้ผลจากไฟล์และงานจริงของตัวเองเป็นเกณฑ์ตัดสินการย้ายรุ่น
หากพบปัญหาจากรุ่นจริง ประกาศ GitHub ขอให้รายงานผ่านระบบติดตามปัญหาของ pandas ผมแนะนำให้เตรียมเวอร์ชันที่ใช้และตัวอย่างข้อมูลที่ตัดข้อมูลส่วนตัวออกแล้ว เพื่ออธิบายความต่างที่พบให้ตรวจสอบต่อได้ (GitHub)
Recap
- แยกสภาพแวดล้อมทดลองและจดเวอร์ชันเดิมก่อนอัปเกรด
- ทดสอบสมุดงานและไฟล์ส่งออกก่อนเปลี่ยนงานหลัก
- แยกหน้าที่เลือกคอลัมน์กับกรองเงื่อนไขให้ชัด
- ตรวจรหัสที่มีศูนย์นำหน้าและคอลัมน์หมวดหมู่
- เปรียบเทียบวันเวลา หน่วยความละเอียด และค่าขาดหาย
- ตรวจแพ็กเกจขั้นต่ำกับเครื่องมืออ่านเขียน Excel ที่ใช้อยู่
- อ่านคำเตือนและเทียบผลในชุดทดสอบอัตโนมัติ
- วัดความเร็วกับไฟล์จริงก่อนประเมินเวลาหรือเงินที่ประหยัดได้