Hướng dẫn how do you convert daily data to weekly in python? - làm cách nào để bạn chuyển đổi dữ liệu hàng ngày thành hàng tuần trong python?

Nói chung, giả sử rằng bạn có DataFrame trong biểu mẫu bạn đã chỉ định, bạn cần thực hiện các bước sau:

  1. Đặt Date vào chỉ mục
  2. resample Chỉ số.

Những gì bạn có là một trường hợp áp dụng các chức năng khác nhau cho các cột khác nhau. Nhìn thấy.

Bạn có thể lấy mẫu lại theo nhiều cách khác nhau. Ví dụ: Bạn có thể lấy giá trị trung bình của các giá trị hoặc số lượng. Kiểm tra gấu trúc lại mẫu.

Bạn cũng có thể áp dụng các trình tổng hợp tùy chỉnh (kiểm tra cùng một liên kết). Với ý nghĩ đó, đoạn mã cho trường hợp của bạn có thể được đưa ra như:

f['Date'] = pd.to_datetime(f['Date'])
f.set_index('Date', inplace=True)
f.sort_index(inplace=True)

def take_first(array_like):
    return array_like[0]

def take_last(array_like):
    return array_like[-1]

output = f.resample('W',                                 # Weekly resample
                    how={'Open': take_first, 
                         'High': 'max',
                         'Low': 'min',
                         'Close': take_last,
                         'Volume': 'sum'}, 
                    loffset=pd.offsets.timedelta(days=-6))  # to put the labels to Monday

output = output[['Open', 'High', 'Low', 'Close', 'Volume']]

Ở đây, W biểu thị việc lấy mẫu hàng tuần theo mặc định theo các khoảng thời gian từ thứ Hai đến Chủ nhật. Để giữ nhãn như thứ Hai, loffset được sử dụng. Có một số chỉ định ngày được xác định trước. Hãy nhìn vào những con gấu trúc. Bạn thậm chí có thể xác định các bù trừ tùy chỉnh (xem).

Quay trở lại phương thức lấy mẫu lại. Tại đây cho OpenClose, bạn có thể chỉ định các phương thức tùy chỉnh để lấy giá trị đầu tiên hoặc cứ như vậy và chuyển xử lý chức năng cho đối số how.. Here for Open and Close you can specify custom methods to take the first value or so on and pass the function handle to the how argument.

Câu trả lời này dựa trên giả định rằng dữ liệu dường như hàng ngày, tức là mỗi ngày bạn chỉ có 1 mục nhập. Ngoài ra, không có dữ liệu nào có mặt cho những ngày không kinh doanh. tức là Sat và Sun. Vì vậy, lấy điểm dữ liệu cuối cùng trong tuần vì một cho thứ sáu là OK. Nếu bạn muốn bạn có thể sử dụng Tuần lễ kinh doanh thay vì 'W'. Ngoài ra, đối với dữ liệu phức tạp hơn, bạn có thể muốn sử dụng groupby để nhóm dữ liệu hàng tuần và sau đó làm việc theo các chỉ số thời gian trong chúng.

BTW Một ý chính cho giải pháp có thể được tìm thấy tại: https://gist.github.com/prithwi/339f87bf9c3c37bb3188

Ảnh của Hubble trên unplash

Hãy để nhảy thẳng đến điểm.

Người quản lý của tôi đã cho tôi một loạt các tập tin và yêu cầu tôi chuyển đổi tất cả dữ liệu hàng ngày thành hàng tuần để xác thực dữ liệu và mục đích mô hình hóa. Như thường lệ, tôi đã nói là có !! chắc chắn"

Người tiếp xúc đầu tiên.

Tôi đã tải xuống tất cả các tệp từ Google Drive tương ứng và tôi đã thấy một loạt các tệp khổng lồ mà tôi không thể mở qua Microsoft Excel. Nhưng không phải lo lắng, tôi có thể sử dụng Python Pandas. Chơi lô tô! Tôi đã có thể kiểm tra tất cả các tệp từng cái một và dành gần 3 đến 4 giờ để kiểm tra tất cả các tệp riêng lẻ (bao gồm các lần nghỉ ngắn và dài). Càng xa càng tốt.

Nhiệm vụ.

Trọng tâm chính của tôi là xác định cột ngày, đổi tên/giữ tên là Ngày Ngày và chuyển đổi tất cả các mục hàng ngày sang các mục hàng tuần bằng cách tổng hợp tất cả các giá trị số liệu trong tuần đó sang thứ Tư của tuần đó.

Để tôi lấy một ví dụ.

Tệp mẫu - Tiếp thị kỹ thuật số

Tôi nghĩ rằng hình ảnh trên sẽ cung cấp cho bạn sự hiểu biết về tệp. Chúng tôi có một ngày (dữ liệu hàng ngày đã được nhập), kênh, ấn tượng, nhấp chuột và chi tiêu. Vì vậy, nhiệm vụ là chuyển đổi dữ liệu này thành hàng tuần. Nhưng xin lưu ý rằng, trong khi chuyển đổi thành hàng tuần, các giá trị như ấn tượng, nhấp chuột và chi tiêu nên được tổng hợp.

Ừ!!! Trông dễ dàng.

Thực thi.

Để giữ cho nó ngắn, tôi đã thử các loại phương pháp khác nhau và thất bại nhiều lần. Cuối cùng, đồng nghiệp của tôi bảo tôi sử dụng phương pháp dưới đây và tôi yêu nó. Đó là lý do tại sao tôi quyết định chia sẻ nó một cách kịch tính.

Đây là giải pháp:

#import required librariesimport pandas as pdfrom datetime import datetime#read the daily data filepaid_search = pd.read_csv("Digital_marketing.csv")#convert date column into datetime objectpaid_search['Day'] = paid_search['Day'].astype('datetime64[ns]')#convert daily data to weeklyweekly_data = paid_search.groupby("Channel").resample('W-Wed', label='right', closed = 'right', on='Day').sum().reset_index().sort_values(by='Day')

Trong dòng cuối cùng trong mã, bạn có thể thấy rằng tôi đã đại diện cho ngày hàng tuần là Thứ Tư (‘W-Wed,) và tổng hợp bằng cách thêm tất cả 7 ngày (bao gồm cả ngày thứ Tư) bằng nhãn = Right Right.

Tách trà.

Bạn sẽ có thêm ý tưởng về chức năng lấy mẫu bằng cách kiểm tra trang này-https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.dataframe.resample.html

Bây giờ, hãy để Lừa đi thẳng đến điểm.

Ở đây, chúng ta sẽ xem cách chúng ta có thể chuyển đổi dữ liệu hàng ngày thành dữ liệu hàng tuần/hàng tháng mà không mất tên cột và ngày là chỉ mục.

Tôi đã sử dụng COVID_19_INDIA.CSV, từ Kaggle làm bộ dữ liệu mẫu của chúng tôi với hình dạng (9291,9). Bạn có thể tải xuống từ liên kết dưới đây.

Hãy để bắt đầu và tải dữ liệu của chúng tôi Covid_19_india.csv

Đầu vào 1:

Output:

Như bạn có thể thấy ở trên ngày của chúng tôi là các loại chuỗi, vì vậy chúng tôi cần chuyển đổi chúng thành loại DateTime.

Đầu vào 2:

Output:

Bây giờ chúng ta có thể thấy rằng cột ngày nằm trong đối tượng ngày. Ngoài ra, chúng tôi bỏ một số cột để đơn giản hóa dữ liệu. Tuy nhiên, điều này là không cần thiết, trong khi chuyển đổi dữ liệu hàng ngày thành hàng tuần/hàng tháng/hàng năm, nó sẽ giảm các cột phân loại.

Đầu vào 3:

Output:

Như bạn có thể thấy rằng dữ liệu hàng ngày của chúng tôi được chuyển đổi thành hàng tuần mà không mất tên của các cột khác và ngày làm chỉ mục.

Bạn cũng có thể chuyển đổi thành tháng chỉ bằng cách sử dụng Mùi thay vì W W W. Cho ví dụ ::df.resample(, tôi). Mean (). ‘M, trong nhiều tháng.

Ngoài ra, bạn có thể sử dụng chế độ (), sum (), v.v., thay vì trung bình () theo sở thích của bạn.

Bạn có thể tham khảo thêm về chức năng mẫu lại bằng cách kiểm tra trang này bên dưới: