Python / Pandas - подготовка исходных данных с еженедельными столбцами к временным рядам - PullRequest
0 голосов
/ 16 июня 2019

Я пытался найти в Google такой вопрос: Как преобразовать еженедельные данные для анализа временных рядов в Pandas?

Этот вопрос трудно найти без результатов, которые прямо говорят овыборка данных из ежедневных в еженедельные или что-то в этом духе.

Мой вопрос действительно больше касается исходных данных, уже представленных в виде еженедельных числовых данных, но не данных о времени или дате, таких как отметка даты и времени.

Вот форма: (Пожалуйста, используйте вертикальные полосы для логического выравнивания каждой строки.)

Unique_Entity(string) | WK1(float64) | WK2(float64) | WK3(float64)| ...
UE1 | 123 | 234 | 345 | ...
UE2 | 456 | 567 | 678 | ...
UE3 | 789 | 890 | 901 | ...
... | ... | ... | ... | ...

Также WK1 - это «динамическое» описание для обозначения числовых данных за последнюю неделю, WK2две недели назад, WK3 три недели назад и так далее.Поэтому на следующей неделе данные WK1 сместятся в WK2, а новые данные будут добавлены в WK1.Надеюсь, это имеет смысл из моего описания.

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

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

Наивное решение: я мог бы отмечать дату понедельника (или пятницы) каждую неделю в обратном направлении.(Функция, которая использует сегодняшнюю дату, чтобы затем генерировать даты каждого понедельника (или пятницы) в обратном порядке.) Затем я мог бы указать инструментам временных рядов на использование этих дат и повторную выборку в виде недель.

Предполагается, что я развернул горизонтальные заголовки, чтобы WK1 присоединился к дате последнего понедельника (или пятницы) и т. Д.

1 Ответ

2 голосов
/ 16 июня 2019

Создайте DatetimeIndex, заканчивающийся сегодня, с обратным периодом в 1 неделю, и назначьте его столбцам:

df.columns = pd.date_range(end=datetime.date.today(), periods=len(df.columns),
                           freq='1W-MON')[::-1]

. Это дает:

     2019-06-10  2019-06-03  2019-05-27
UE1         123         234         345
UE2         456         567         678
UE3         789         890         901

Транспонировать результат при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...