Đã giải quyết: gấu trúc điền ngược sau khi lấy mẫu

Trong thế giới ngày nay, thao tác và phân tích dữ liệu là điều cần thiết để hiểu các hiện tượng khác nhau và đưa ra quyết định sáng suốt. Một trong những nhiệm vụ phổ biến trong phân tích dữ liệu là lấy mẫu lại dữ liệu chuỗi thời gian, bao gồm việc thay đổi tần suất của dữ liệu, bằng cách lấy mẫu lên (tăng tần số) hoặc lấy mẫu xuống (giảm tần số). Trong bài viết này, chúng ta sẽ thảo luận về quá trình điền ngược trong khi lấy mẫu dữ liệu chuỗi thời gian bằng thư viện Python mạnh mẽ, Pandas.

Dữ liệu chuỗi thời gian điền ngược

Khi chúng tôi lấy mẫu dữ liệu chuỗi thời gian, chúng tôi sẽ tăng tần suất của các điểm dữ liệu, điều này thường dẫn đến thiếu giá trị cho các điểm dữ liệu mới được tạo. Để lấp đầy những giá trị còn thiếu này, chúng ta có thể sử dụng nhiều phương pháp khác nhau. Một phương pháp như vậy được gọi là điền ngược, còn được biết là lấp đất. Điền ngược là quá trình điền các giá trị còn thiếu bằng giá trị khả dụng tiếp theo trong chuỗi thời gian.

Thư viện gấu trúc

Python's Thư viện gấu trúc là một công cụ thiết yếu để thao tác dữ liệu, cung cấp nhiều chức năng để xử lý các cấu trúc dữ liệu như DataFrames và dữ liệu chuỗi thời gian. Pandas có các tính năng tích hợp giúp dễ dàng làm việc với dữ liệu chuỗi thời gian, chẳng hạn như lấy mẫu lại và điền các giá trị còn thiếu, cho phép chúng tôi thực hiện điền ngược một cách hiệu quả sau khi lấy mẫu lại.

Giải pháp: Điền ngược với Pandas

Để minh họa quy trình áp dụng điền ngược sau khi lấy mẫu dữ liệu chuỗi thời gian bằng Pandas, hãy xem xét một ví dụ đơn giản. Chúng tôi sẽ bắt đầu bằng cách nhập các thư viện cần thiết và tạo tập dữ liệu chuỗi thời gian mẫu.

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

Bây giờ chúng tôi đã có dữ liệu mẫu của mình, chúng tôi sẽ tiến hành lấy mẫu bổ sung và áp dụng phương pháp điền ngược. Trong ví dụ này, chúng tôi sẽ upsample từ tần suất hàng ngày lên tần suất hàng giờ:

# 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)

Trong đoạn mã trên, trước tiên chúng tôi đặt cột 'ngày' làm chỉ mục và sau đó lấy mẫu lại dữ liệu thành tần suất hàng giờ bằng cách sử dụng resample () chức năng. DataFrame kết quả có các giá trị bị thiếu do tần suất tăng lên. Sau đó chúng tôi đã sử dụng fillna () với tham số 'bfill' để thực hiện điền ngược vào các giá trị bị thiếu.

Giải thích từng bước

Hãy chia nhỏ mã để hiểu rõ hơn về nó:

1. Trước tiên, chúng tôi đã nhập thư viện Pandas và NumPy:

   import pandas as pd
   import numpy as np
   

2. Chúng tôi đã tạo tập dữ liệu chuỗi thời gian mẫu bằng cách sử dụng phạm vi ngày () chức năng từ Pandas để tạo ngày hàng ngày và các giá trị số ngẫu nhiên:

   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. Tiếp theo, chúng tôi đặt cột 'ngày' làm chỉ mục và lấy mẫu lại dữ liệu thành tần suất hàng giờ với resample ()asfreq() chức năng:

   df.set_index('date', inplace=True)
   hourly_df = df.resample('H').asfreq()
   

4. Cuối cùng, chúng tôi đã điền các giá trị còn thiếu trong DataFrame được lấy mẫu lại bằng cách sử dụng fillna () phương thức có tham số 'bfill' để điền ngược:

   hourly_df.fillna(method='bfill', inplace=True)
   

Kết luận

Trong bài viết này, chúng tôi đã khám phá quá trình điền ngược sau khi lấy mẫu dữ liệu chuỗi thời gian sử dụng thư viện Pandas mạnh mẽ trong Python. Bằng cách hiểu và triển khai các kỹ thuật này, chúng ta có thể thao tác và phân tích dữ liệu chuỗi thời gian một cách hiệu quả, khám phá những hiểu biết có giá trị và đưa ra quyết định sáng suốt.

bài viết liên quan:

Để lại một bình luận