У меня есть временной ряд в ndarray. Временной ряд содержит количество продаж продукта вместе с ценой продукта. Данные временных рядов работают круглосуточно, однако в нерабочее время данные действительно стохастичны c, потому что покупателей и продавцов становится меньше. Я хочу сделать повторную выборку временного ряда, чтобы он сохранил свой текущий временной порядок, но строки с небольшим количеством продаж сворачиваются в одну строку, где в качестве строки с большим количеством продаж образуется несколько строк, так что ndarray то, что возвращается, имеет одинаковое количество продаж в каждой строке. Например, я устанавливаю число продаж равным 1000, если строка содержит 3000 продаж, она возвращает три строки по 1000 продаж, если строка имеет менее 1000 продаж, она добавляется в следующую строку, пока не будет достаточно продаж, чтобы создать строку из 1000 продажи. Есть много вариантов, доступных для повторной выборки по переменной, связанной со временем, но я не нахожу ни одной для переменной, не связанной со временем, такой как продажи. Это код, который у меня есть, но он не очень хорошо работает, поскольку в нем отсутствует возможность разбивать строки, которые превышают заданную частоту, поэтому результаты не равны:
def gen_modifiedsales(sales, frequency=100):
times = sales[:,0]
prices = sales[:,1]
volumes = sales[:,2]
ans = np.zeros(shape=(len(prices), 6))
candle_counter = 0
vol = 0
lasti = 0
for i in range(len(prices)):
vol += volumes[i]
if vol >= frequency:
ans[candle_counter][0] = times[i] # time
ans[candle_counter][1] = prices[lasti] # open
ans[candle_counter][2] = np.max(prices[lasti:i+1]) # high
ans[candle_counter][3] = np.min(prices[lasti:i+1]) # low
ans[candle_counter][4] = prices[i] # close
ans[candle_counter][5] = np.sum(volumes[lasti:i+1]) # volume
candle_counter += 1
lasti = i+1
vol = 0
return ans[:candle_counter]
В конечном итоге, что я я бы хотел повернуть серию времени, которая выглядит следующим образом:
Datetime Price Volume
2017-12-15 09:30 57.06 3
2017-12-15 09:31 57.04 1
2017-12-15 09:32 57.02 4
На что-то вроде этого
Datetime Price Volume
2017-12-15 09:05:14 100 57.103306666666796
2017-12-15 11:26:11 100 57.07302666666672
2017-12-15 23:32:03 100 57.14208000000028
Или поставить другой путь в городе, где я живу, у нас есть продавцы в центре, они продавать вещи 24 часа в сутки, если вам нужно купить 50 пар обуви в 10:30 утра, цена обуви будет очень справедливой, есть много конкурентов на продажу обуви, но если вы хотите купить 50 пар обуви обувь в 1:30 утра, вам придется заплатить много, чтобы купить обувь, так как там гораздо меньше людей, продающих обувь. Таким образом, в дневное время, когда продается много обуви, цены, как правило, менее стохастичны c, тогда как в ночное время они более стохастичны c и нестабильны. В стандартном временном ряду, основанном только на времени как частоте, ночные часы будут играть очень большую роль, даже если они представляют сравнительно небольшое количество продаж (в конце концов, не так много людей go в центре города, чтобы купить обувь ранним утром). При повторной выборке данных о количестве проданных туфель ночные часы, которые являются более стохастическими c, а летучие сокращаются, а дневные часы, которые являются менее стохастическими c, приобретают все большее значение.