计算动态时间序列的中位数

时间:2016-10-05 18:07:46

标签: python pandas

如果我有一个长度为T的熊猫系列[a1,a2,a3,a4,...],则每个值对应一天。对于每一天,我想计算历史中位数。例如,第一天计算[a1]的中位数;第二天计算[a1,a2]的中位数;第n天计算[a1,a2,...,an]的中位数。最后我想得到一个长度= T的系列。我们有一种有效的方法在熊猫中做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:0)

对于系列,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:\Anaconda3\envs\p3\lib\site-packages\spyder\utils\ipython\start_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