ในโลกปัจจุบัน การจัดการและวิเคราะห์ข้อมูลมีความสำคัญต่อการทำความเข้าใจปรากฏการณ์ต่างๆ และตัดสินใจอย่างรอบรู้ งานทั่วไปอย่างหนึ่งในการวิเคราะห์ข้อมูลคือการสุ่มตัวอย่างข้อมูลอนุกรมเวลาใหม่ ซึ่งเกี่ยวข้องกับการเปลี่ยนความถี่ของข้อมูล ไม่ว่าจะโดยการสุ่มตัวอย่างเพิ่ม (เพิ่มความถี่) หรือการสุ่มตัวอย่างลง (ลดความถี่) ในบทความนี้ เราจะพูดถึงกระบวนการเติมข้อมูลย้อนหลังในขณะที่อัปแซมปลิงข้อมูลอนุกรมเวลาโดยใช้ไลบรารี Python อันทรงพลังอย่าง Pandas
กรอกข้อมูลอนุกรมเวลาย้อนหลัง
เมื่อเราสุ่มตัวอย่างข้อมูลอนุกรมเวลา เราจะเพิ่มความถี่ของจุดข้อมูล ซึ่งโดยปกติจะส่งผลให้ค่าของจุดข้อมูลที่สร้างขึ้นใหม่ขาดหายไป เพื่อเติมค่าที่ขาดหายไปเหล่านี้ เราสามารถใช้หลายวิธีได้ วิธีหนึ่งที่เรียกว่า เติมย้อนหลัง, ที่รู้จักกันว่า ทดแทน. การเติมแบบย้อนกลับเป็นกระบวนการเติมค่าที่ขาดหายไปด้วยค่าที่มีอยู่ถัดไปในอนุกรมเวลา
ห้องสมุดหมีแพนด้า
Python ของ ห้องสมุดหมีแพนด้า เป็นเครื่องมือที่จำเป็นสำหรับการจัดการข้อมูล โดยนำเสนอฟังก์ชันการทำงานที่หลากหลายสำหรับการจัดการโครงสร้างข้อมูล เช่น DataFrames และข้อมูลอนุกรมเวลา Pandas มีฟีเจอร์ในตัวที่ช่วยให้ทำงานกับข้อมูลอนุกรมเวลาได้ง่าย เช่น การสุ่มตัวอย่างใหม่และการเติมค่าที่ขาดหายไป ทำให้เราสามารถเติมข้อมูลย้อนหลังได้อย่างมีประสิทธิภาพหลังจากการสุ่มตัวอย่าง
วิธีแก้ไข: เติมข้อมูลย้อนหลังด้วย Pandas
เพื่อสาธิตกระบวนการใช้การเติมแบบย้อนกลับหลังจากการสุ่มตัวอย่างข้อมูลอนุกรมเวลาโดยใช้ Pandas ลองพิจารณาตัวอย่างง่ายๆ เราจะเริ่มต้นด้วยการนำเข้าไลบรารีที่จำเป็นและสร้างชุดข้อมูลอนุกรมเวลาตัวอย่าง
import pandas as pd import numpy as np # Create a sample time series dataset date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
ตอนนี้เรามีข้อมูลตัวอย่างแล้ว เราจะดำเนินการอัปแซมปลิงและใช้วิธีการเติมแบบย้อนกลับ ในตัวอย่างนี้ เราจะสุ่มตัวอย่างจากความถี่รายวันเป็นความถี่รายชั่วโมง:
# Upsample the data to hourly frequency df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq() # Apply the backward fill method to fill missing values hourly_df.fillna(method='bfill', inplace=True)
ในโค้ดด้านบน ขั้นแรกเราตั้งค่าคอลัมน์ 'วันที่' เป็นดัชนี จากนั้นสุ่มตัวอย่างข้อมูลใหม่เป็นความถี่รายชั่วโมงโดยใช้ ตัวอย่าง () การทำงาน. DataFrame ที่ได้นั้นมีค่าขาดหายไปเนื่องจากความถี่ที่เพิ่มขึ้น จากนั้นเราก็ใช้ เติม() วิธีการที่มีพารามิเตอร์ 'bfill' เพื่อดำเนินการเติมค่าที่หายไปแบบย้อนกลับ
คำอธิบายทีละขั้นตอน
มาแยกย่อยรหัสเพื่อทำความเข้าใจให้ดียิ่งขึ้น:
1. เรานำเข้าไลบรารี Pandas และ NumPy ก่อน:
import pandas as pd import numpy as np
2. เราสร้างชุดข้อมูลอนุกรมเวลาตัวอย่างโดยใช้ ช่วงวันที่ () ฟังก์ชันจาก Pandas เพื่อสร้างวันที่รายวันและค่าตัวเลขแบบสุ่ม:
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
3. ต่อไป เราตั้งค่าคอลัมน์ 'วันที่' เป็นดัชนีและสุ่มตัวอย่างข้อมูลใหม่เป็นความถี่รายชั่วโมงด้วย ตัวอย่าง () และ ความถี่ () ฟังก์ชั่น:
df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq()
4. สุดท้าย เราเติมค่าที่ขาดหายไปใน DataFrame ที่สุ่มตัวอย่างโดยใช้ เติม() วิธีการที่มีพารามิเตอร์ 'bfill' สำหรับการเติมแบบย้อนกลับ:
hourly_df.fillna(method='bfill', inplace=True)
สรุป
ในบทความนี้ เราได้สำรวจกระบวนการของ การเติมข้อมูลย้อนหลังหลังจากการสุ่มตัวอย่างข้อมูลอนุกรมเวลา ใช้ไลบรารี Pandas อันทรงพลังใน Python ด้วยการทำความเข้าใจและนำเทคนิคเหล่านี้ไปใช้ เราสามารถจัดการและวิเคราะห์ข้อมูลอนุกรมเวลาได้อย่างมีประสิทธิภาพ ค้นพบข้อมูลเชิงลึกอันมีค่า และทำการตัดสินใจอย่างรอบรู้