L oop для расчета среднего значения журнала для каждых 5 минут - PullRequest
0 голосов
/ 19 марта 2020

У меня большой фрейм данных с указателем даты и времени, с наблюдениями за каждую минуту. Мне нужно вычислять среднее значение для каждых 5 минут для диапазона переменных (столбцов).

Ниже приведен код, показывающий некоторые примеры данных и вычисления, которые я хочу выполнить.

import numpy as np
import pandas as pd

df1 = pd.DataFrame({'db' : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ]}, index=pd.date_range('2019-05-02T00:00:00', '2019-05-02T00:14:00', freq='1T'))

# df1 = df1.resample('5T').mean() # <------ is there a way to do log mean for this?

# The calculation i need to do is:

df2 = 10*np.log10(10**((df1[observation@minute1]/10)) + 10**((df1[observation@minute2]/10)) + 10**((df1[observation@minute3]/10)) + 10**((df1[observation@minute4]/10)) + 10**((df1[observation@minute5]/10)))

# Where 'observation minute 1,2,3,4,5' are the 5 minutes i want to resample for. There are days and days of data.

# The resulting df i need is:

df_result = pd.DataFrame({'log_mean' : [10*np.log10(10**((1/10)) + 10**((2/10)) + 10**((3/10)) + 10**((4/10)) + 10**((5/10))), 10*np.log10(10**((6/10)) + 10**((7/10)) + 10**((8/10)) + 10**((9/10)) + 10**((10/10))), 10*np.log10(10**((11/10)) + 10**((12/10)) + 10**((13/10)) + 10**((14/10)) + 10**((15/10)))]}, index=pd.date_range('2019-05-02T00:00:00', '2019-05-02T00:14:00', freq='5T'))

Я создал следующий код, который извлекает 5 наблюдений и затем сохраняет их в списке. Мне нужен код для вычисления среднего значения журнала для каждых 5 минут для диапазона переменных (столбцов) и сохранения его в новом df с индексом datetime. Поэтому приведенный ниже код не совсем делает то, что мне нужно ...

def pairwise(iterable):
    "s -> (s0, s1, s2, s3, s4, s5), (s6, s7), (s8, s9), ..."
    a = iter(iterable)
    return zip(a, a, a, a, a)

result = []

for x, y, z, a, b in pairwise(df1['db']):
    df_tmp = (10*np.log10(10**((x/10)) + 10**((y/10)) + 10**((z/10)) + 10**((a/10)) + 10**((b/10))) )
    result.append(df_tmp)

Любое руководство будет с благодарностью получено.

...