Pandas Сглаживание данных в двух измерениях - PullRequest
0 голосов
/ 24 марта 2020

Я относительно новичок в Pandas, но, поскольку я вижу, что он часто используется в онлайн-учебнике и немного более многословен, чем numpy массивы, я подумал, что попробую.

Проблема Я пытаюсь решить, возможно, довольно просто, но я еще не нашел решения онлайн.

Ключевое требование: У меня очень большое значение df, поэтому я должен избегать дублирования данных в максимально возможной степени.

Данные приведены ниже: каждая строка представляет собой шаг по времени, каждый столбец представляет собой значение сигнала в пространственном измерении x.

My data

Я бы хотел добиться сглаживания данных в обоих направлениях. В идеале, с переменным размером окна. Мои фактические данные имеют некоторые значения nan в.

Так что лучшим способом, который я нашел, было перебирать весь ряд данных по строкам и делать следующее:

    time_smooth_data = df.iloc[row: row+time_smoothing,:].mean(axis = 0)

    spatial_smooth_data = time_smooth_data .rolling(spatial_smoothing, min_periods  = spatial_smoothing, center = True).median().values

Это фильтрация по существу сглаживает данные с использованием среднего значения во временных направлениях (строки) и медианного сглаживания в пространственном направлении X. Причина в том, что мои данные гораздо более ошибочны c, если случайно отклонить значения графика в направлении X, поэтому медиана позволяет мне удалить эти эффекты.

То, что я ищу, будет выглядеть примерно так:

smoothing_window = (3,5) # smooth over three rows (timestep) and five x units
smoothing_rules = (np.mean, np.median) #the smoothing type to apply in each direction

smoothed_df = smooth(df, smoothing_window, smoothing_rules) # a function taking the dataframe and the smoothing window and rules and returns the smoothed_df... or even better does it in place!

Я не могу понять, как эффективно определить функцию smooth.

Любая помощь или понимание приветствуются! Спасибо за ваше время.

...