在python中使用pandas查找年平均值

时间:2016-06-22 21:51:47

标签: python pandas pivot-table

我的数据看起来像这样

unit  year   SURQ
10001  2012   89
10002  2012   83
10003  2012   88
10001  2013   75
10002  2013   69
10003  2013   59 
10001  2014   36
10002  2014   59
10003  2014   84

我想按单位找出SURQ的年平均值。例如,2012年单位10001的平均SURQ = ???

我尝试使用数据透视表

avgSURQ = pd.pivot_table(df,index=['year'])

和groupby

avgSURQ = SURQ.groupby('year')

但我认为我的语法错误,所以它不起作用。我是python的新手,所以我可能会误解在线的例子。

2 个答案:

答案 0 :(得分:0)

>>> df.reset_index().groupby(['unit','year'])['SURQ'].mean()
unit   year
10001  2012    89
       2013    75
       2014    36
10002  2012    83
       2013    69
       2014    59
10003  2012    88
       2013    59
       2014    84
Name: SURQ, dtype: int64

或使用数据透视表:

>>> pd.pivot_table(df.reset_index(),columns=['unit','year'],aggfunc=np.mean)
      unit   year
SURQ  10001  2012    89
             2013    75
             2014    36
      10002  2012    83
             2013    69
             2014    59
      10003  2012    88
             2013    59
             2014    84
dtype: int64

答案 1 :(得分:0)

如果您想使用ORDER BY

进行此操作
pivot_table()

PS但我认为使用In [169]: x.pivot_table(index=[x.index,'year'], values='SURQ').reset_index() Out[169]: unit year SURQ 0 10001 2012 89 1 10001 2013 75 2 10001 2014 36 3 10002 2012 83 4 10002 2013 69 5 10002 2014 59 6 10003 2012 88 7 10003 2013 59 8 10003 2014 84 会更快并且需要更少的内存

数据:

groupby()