jxn*_*jxn 7 python sql group-by pandas
下面是使用pandas pivot_table函数后以.csv格式输出的数据透视表的片段:
Sub-Product     11/1/12 11/2/12 11/3/12 11/4/12 11/5/12 11/6/12
GP  Acquisitions    164    168     54      72     203    167
GP  Applications    190    207     65      91     227    200
GPF Acquisitions    1124   1142    992    1053    1467   1198
GPF Applications    1391   1430   1269    1357    1855   1510
我现在唯一需要做的就是在将每个子产品输出到.csv文件之前,在pandas中使用groupby来按周汇总值.
下面是我想要的输出,但它是在Excel中完成的.第一列可能不完全相同,但我很好.我需要做的主要事情是按周分组,这样我就能得到按周计算的数据总和.(查看顶行的日期如何按每7天分组一次).希望能够使用python/pandas来做到这一点.可能吗?
Row Labels   11/4/12 - 11/10/12       11/11/12 - 11/17/12
GP      
Acquisitions       926                        728
Applications       1092                       889
GPF     
Acquisitions       8206                       6425
Applications       10527                      8894
您需要的工具是resample在一段时间/频率上隐式使用groupby并应用像mean或sum这样的函数.
读数据.
In [2]: df
Out[2]: 
      Sub-Product  11/1/12  11/2/12  11/3/12  11/4/12  11/5/12  11/6/12
GP   Acquisitions      164      168       54       72      203      167
GP   Applications      190      207       65       91      227      200
GPF  Acquisitions     1124     1142      992     1053     1467     1198
GPF  Applications     1391     1430     1269     1357     1855     1510
设置MultiIndex.
In [4]: df = df.reset_index().set_index(['index', 'Sub-Product'])
In [5]: df
Out[5]: 
                    11/1/12  11/2/12  11/3/12  11/4/12  11/5/12  11/6/12
index Sub-Product                                                       
GP    Acquisitions      164      168       54       72      203      167
      Applications      190      207       65       91      227      200
GPF   Acquisitions     1124     1142      992     1053     1467     1198
      Applications     1391     1430     1269     1357     1855     1510
将列解析为正确的日期时间.(它们以字符串形式出现.)
In [6]: df.columns = pd.to_datetime(df.columns)
In [7]: df
Out[7]: 
                    2012-11-01  2012-11-02  2012-11-03  2012-11-04  \
index Sub-Product                                                    
GP    Acquisitions         164         168          54          72   
      Applications         190         207          65          91   
GPF   Acquisitions        1124        1142         992        1053   
      Applications        1391        1430        1269        1357   
                    2012-11-05  2012-11-06  
index Sub-Product                           
GP    Acquisitions         203         167  
      Applications         227         200  
GPF   Acquisitions        1467        1198  
      Applications        1855        1510  
axis=1每周('w')对列()进行重新取样,按周求和.(how='sum'或者how=np.sum这两个都是有效的选项.)
In [10]: df.resample('w', how='sum', axis=1)
Out[10]: 
                    2012-11-04  2012-11-11
index Sub-Product                         
GP    Acquisitions         458         370
      Applications         553         427
GPF   Acquisitions        4311        2665
      Applications        5447        3365
| 归档时间: | 
 | 
| 查看次数: | 4922 次 | 
| 最近记录: |