Найти медиану в n-ом диапазоне в Python - PullRequest
2 голосов
/ 30 мая 2019

Я пытаюсь найти значение каждой медианы в моем наборе данных за каждые 15 дней .Набор данных имеет три столбца - индекс, значение и дата.

Это для оценки этой медианы в соответствии с некоторыми условиями.Каждый из 15 дней получит новое значение в соответствии с условиями.Я пробовал несколько подходов (в основном, понимание Python), но я все еще начинающий, чтобы решить его правильно.

    value   date        index
14  13065   1983-07-15  14
15  13065   1983-07-16  15
16  13065   1983-07-17  16
17  13065   1983-07-18  17
18  13065   1983-07-19  18
19  13065   1983-07-20  19
20  13065   1983-07-21  20
21  13065   1983-07-22  21
22  13065   1983-07-23  22
23  .....    .........  .. 

medians = [dataset['value'].median() for range(0, len(dataset['index']), 15) in dataset['value']]   

Я ожидаю вернуть медианы из кадра данных в новую переменную.

syntaxError: can't assign to function call

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Если у вас есть данные в следующем формате:

test = pd.DataFrame({'date': pd.date_range(start = '2016/02/12', periods = 1000, freq='1D'),
                                         'value': np.random.randint(1,1000,1000)})
test.head()

    date       value
0   2016-02-12  243
1   2016-02-13  313
2   2016-02-14  457
3   2016-02-15  236
4   2016-02-16  893

Если вы хотите получить медиану каждые 15 дней, используйте pd.Grouper и groupby date:

test.groupby(pd.Grouper(freq='15D', key='date')).median().reset_index()

date        Value
2016-02-12  457.0
2016-02-27  733.0
2016-03-13  688.0
2016-03-28  504.0
2016-04-12  591.0

Обратите внимание, что при использовании pd.Grouper ваш столбец даты должен иметь тип datetime. Если это не так, конвертируйте, используя:

test['date'] = pd.to_datetime(test['date'])
0 голосов
/ 30 мая 2019

Использование DataFrame.resample с median:

#if encessary convert to datetimes
dataset['date'] = pd.to_datetime(dataset['date'])

dataset = dataset.resample('15D', on='date')['value'].median().reset_index()
print (dataset)
        date  value
0 1983-07-15  13065
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...