#python #pandas
#python #pandas
Вопрос:
Если у меня есть серия pandas [a1, a2, a3,a4, …] с длиной = T. Каждое значение соответствует одному дню. Для каждого дня я хотел бы вычислить историческую медиану. Например, в первый день вычислите медиану [a1]; на второй день вычислите медиану [a1, a2]; на n-й день вычислите медиану [a1, a2, …, an]. Наконец, я хотел бы также получить ряд с длиной = T . Есть ли у нас эффективный способ сделать это в pandas? Спасибо!
Ответ №1:
Для ряда, ser
:
ser = pd.Series(np.random.randint(0, 100, 10))
Если ваша версия pandas 0.18.0 или выше, используйте:
ser.expanding().median()
Out:
0 0.0
1 25.0
2 50.0
3 36.5
4 33.0
5 36.0
6 33.0
7 36.0
8 33.0
9 36.0
dtype: float64
Следующее предназначено для более ранних версий и устарело:
pd.expanding_median(ser)
C:Anaconda3envsp3libsite-packagesspyderutilsipythonstart_kernel.py:1: FutureWarning: pd.expanding_median is deprecated for Series and will be removed in a future version, replace with
Series.expanding(min_periods=1).median()
# -*- coding: utf-8 -*-
Out:
0 0.0
1 25.0
2 50.0
3 36.5
4 33.0
5 36.0
6 33.0
7 36.0
8 33.0
9 36.0
dtype: float64