def five_group_stats(group):
sales = np.array(group['Demanda_uni_equil'].values)
samana = group['Semana'].values
max_index = np.argmax(samana)
returns = group['Dev_proxima'].mean()
#this is signature on when slaes happens
sorted_samana_index = np.argsort(samana)
sorted_sales = sales[sorted_samana_index]
signature = np.sum([ math.pow(2,s-3) for s in samana])
kurtosis = fillna_and_inf(scipy.stats.kurtosis(sorted_sales))
hmean = fillna_and_inf(scipy.stats.hmean(np.where(sales <0, 0.1, sales)))
entropy = fillna_and_inf(scipy.stats.entropy(sales))
std = fillna_and_inf(np.std(sales))
N = len(sales)
ci = fillna_and_inf(calculate_ci(std, N))
corr = fillna_and_inf(scipy.stats.pearsonr(range(N), sorted_sales)[0])
autocorr_list = np.correlate(sorted_sales, sorted_sales, mode='same')
mean_autocorr = fillna_and_inf(np.mean(autocorr_list))
mean = np.mean(sales)
mean_corss_points_count = 0
if N > 1:
high_than_mean = mean < sorted_sales[0]
for i in range(1,N):
if (high_than_mean and mean > sorted_sales[i]) or (not high_than_mean and mean > sorted_sales[i]):
mean_corss_points_count += mean_corss_points_count
high_than_mean = mean < sorted_sales[i]
return mean, N, std, np.median(sales), sales[max_index], samana[max_index], \
returns, signature, kurtosis, hmean, entropy, ci, corr, mean_autocorr, mean_corss_points_count
评论列表
文章目录