Hàm cửa sổ trượt với pandas

Xử lý dữ liệu chuỗi thời gian trong Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Hàm cửa sổ trong pandas

  • Cửa sổ xác định các giai đoạn con của chuỗi thời gian
  • Tính các chỉ số cho giai đoạn con trong cửa sổ
  • Tạo chuỗi thời gian mới gồm các chỉ số
  • Hai loại cửa sổ:
    • Rolling: cùng kích thước, trượt (video này)
    • Expanding: chứa mọi giá trị trước đó (video sau)
Xử lý dữ liệu chuỗi thời gian trong Python

Tính trung bình trượt

data = pd.read_csv('google.csv', parse_dates=['date'], index_col='date')
DatetimeIndex: 1761 entries, 2010-01-04 to 2016-12-30
Data columns (total 1 columns):
price     1761 non-null float64
dtypes: float64(1)

Hàm cửa sổ trượt với Pandas.010.png

Xử lý dữ liệu chuỗi thời gian trong Python

Tính trung bình trượt

# Kích thước cửa sổ theo số nguyên
data.rolling(window=30).mean() # số quan sát cố định
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1732 non-null float64
dtypes: float64(1)
  • window=30: số ngày làm việc
  • min_periods: chọn giá trị < 30 để có kết quả cho những ngày đầu
Xử lý dữ liệu chuỗi thời gian trong Python

Tính trung bình trượt

# Kích thước cửa sổ theo offset
data.rolling(window='30D').mean() # độ dài khoảng cố định
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D: số ngày dương lịch
Xử lý dữ liệu chuỗi thời gian trong Python

Trung bình trượt 90 ngày

r90 = data.rolling(window='90D').mean()

google.join(r90.add_suffix('_mean_90')).plot()

Trung bình trượt 90 ngày.017.png

Xử lý dữ liệu chuỗi thời gian trong Python

Trung bình trượt 90 & 360 ngày

data['mean90'] = r90

r360 = data['price'].rolling(window='360D'.mean()
data['mean360'] = r360; data.plot()

Trung bình trượt 90 & 360 ngày.020.png

Xử lý dữ liệu chuỗi thời gian trong Python

Nhiều chỉ số trượt (1)

r = data.price.rolling('90D').agg(['mean', 'std'])

r.plot(subplots = True)

Nhiều chỉ số trượt (1).022.png

Xử lý dữ liệu chuỗi thời gian trong Python

Nhiều chỉ số trượt (2)

rolling = data.google.rolling('360D')

q10 = rolling.quantile(0.1).to_frame('q10')
median = rolling.median().to_frame('median')
q90 = rolling.quantile(0.9).to_frame('q90')
pd.concat([q10, median, q90], axis=1).plot()

Nhiều chỉ số trượt (2).024.png

Xử lý dữ liệu chuỗi thời gian trong Python

Cùng luyện tập nào!

Xử lý dữ liệu chuỗi thời gian trong Python

Preparing Video For Download...