在python中使用Pandas寻找年平均值

2024-06-26 17:54:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据是这样的

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的平均附加费=???你知道吗

我试过使用透视表

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

和groupby

avgSURQ = SURQ.groupby('year')

但是我想我的语法弄错了,所以它不起作用。我是python新手,所以我可能会误解网上的示例。你知道吗


Tags: 数据dfindextable语法unit单位year
2条回答

如果您想用pivot_table()来做:

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()会更快,需要更少的内存

数据:

In [168]: x
Out[168]:
       year  SURQ
unit
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
>>> 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

相关问题 更多 >