cuốn sách gpt4 ai đã làm

Chạy trung bình/tần số cho dữ liệu chuỗi thời gian?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:26:54 32 4
mua khóa gpt4 Nike

Cho một tập dữ liệu có nội dung sau:

[2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85, 86, 87, 88]

Các giá trị luôn tăng (thời gian thực tế) và tôi muốn tìm khoảng cách trung bình đang chạy giữa các giá trị này. Tôi thực sự đang cố gắng xác định thời điểm dữ liệu thay đổi từ "1 lần mỗi giây" thành "1 lần mỗi 5 giây" (hoặc bất kỳ giá trị nào khác).

Tôi đang triển khai nó bằng Python, nhưng các giải pháp bằng bất kỳ ngôn ngữ nào đều được hoan nghênh.

Tôi đang tìm đầu ra từ đầu vào ví dụ trên tương tự như:

[(2, 1), (10, 5), (55, 10), (85, 1) ]

trong đó "2" biểu thị nơi khoảng cách giữa các giá trị bắt đầu từ "1" và "10" biểu thị nơi khoảng cách trở thành "5". (nó phảichính xácỞ đó, việc phát hiện phần bù sau đó một bước cũng không thành vấn đề. )

Tôi đang tìm kiếm khi khoảng cách trung bình giữa các giá trị thay đổi. Tôi nhận thấy sẽ có sự cân bằng giữa độ ổn định của thuật toán và độ nhạy cảm với những thay đổi đầu vào.

(Nhân tiện,gấu trúc hoặc NumPy Nó có hữu ích không? )

câu trả lời hay nhất

Bạn có thể sử dụng numpy hoặc pandas ("phiên bản gấu trúc") như thế này:

Trong [256]: s = pd.Series([2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35,
40, 45, 50, 55, 65, 75, 85, 86, 87, 88])

Trong [257]: df = pd.DataFrame({'time': s,
'time_diff': s.diff().shift(-1)}).set_index('time')

Trong [258]: df[df.time_diff - df.time_diff.shift(1) != 0].dropna()
Ra [258]:
thời gian_khác biệt
time
2 1
10 5
55 10
85 1

Nếu bạn chỉ muốn xem lần xuất hiện đầu tiên của mỗi bước thời gian, bạn cũng có thể sử dụng:

Trong [259]: df.drop_duplicates().dropna() # set take_last=True nếu bạn muốn cái cuối cùng
Ra [259]:
thời gian_khác biệt
time
2 1
10 5
55 10

Nhưng với gấu trúc bạn thường sử dụng Chỉ số ngày giờ Để sử dụng chức năng chuỗi thời gian tích hợp:

Trong [44]: a = [2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35,
40, 45, 50, 55, 65, 75, 85, 86, 87, 88]

Trong [45]: start_time = datetime.datetime.now()

Trong [46]: time = [start_time + datetime.timedelta(seconds=int(x)) for x in a]

Trong [47]: idx = pd.DatetimeIndex(times)

Trong [48]: df = pd.DataFrame({'data1': np.random.Rand(idx.size),
'data2': np.random.Rand(idx.size)},
chỉ mục=idx)

Trong [49]: df.resample('5S') # lấy mẫu lại thành 5 giây
Ra [49]:
dữ liệu1 dữ liệu2
28-11-2012 07:36:35 0,417282 0,477837
28-11-2012 07:36:40 0,536367 0,451494
28-11-2012 07:36:45 0.902018 0.457873
28-11-2012 07:36:50 0,452151 0,625526
28-11-2012 07:36:55 0,816028 0,170319
28-11-2012 07:37:00 0,169264 0,723092
28-11-2012 07:37:05 0,809279 0,794459
28-11-2012 07:37:10 0,652836 0,615056
28-11-2012 07:37:15 0,508318 0,147178
28-11-2012 07:37:20 0,261157 0,509014
28-11-2012 07:37:25 0,609685 0,324375
28-11-2012 07:37:30 NaN NaN
28-11-2012 07:37:35 0,736370 0,551477
28-11-2012 07:37:40 NaN NaN
28-11-2012 07:37:45 0,839960 0,118619
28-11-2012 07:37:50 NaN NaN
28-11-2012 07:37:55 0,697292 0,394946
28-11-2012 07:38:00 0,351824 0,420454

Theo tôi, Pandas cho đến nay là thư viện tốt nhất hiện có trong hệ sinh thái Python khi làm việc với chuỗi thời gian. Không chắc bạn thực sự muốn làm gì, nhưng tôi sẽ thử gấu trúc.

Chạy trung bình/tần số cho dữ liệu chuỗi thời gian? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13580875/

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress