zoukankan      html  css  js  c++  java
  • pandas中DataFrame类的pivot_table函数------Reshaping by pivoting DataFrame objects

    以下内容为截取自pandas官网的doc(请看这里),我做了一些翻译.

    Reshaping by pivoting DataFrame objects

    Data is often stored in CSV files or databases in so-called “stacked” or “record” format:

    In [1]: df
    Out[1]: 
             date variable     value
    0  2000-01-03        A  0.469112
    1  2000-01-04        A -0.282863
    2  2000-01-05        A -1.509059
    3  2000-01-03        B -1.135632
    4  2000-01-04        B  1.212112
    5  2000-01-05        B -0.173215
    6  2000-01-03        C  0.119209
    7  2000-01-04        C -1.044236
    8  2000-01-05        C -0.861849
    9  2000-01-03        D -2.104569
    10 2000-01-04        D -0.494929
    11 2000-01-05        D  1.071804

    以下为一个DataFrame对象的创建过程:

    1 import pandas.util.testing as tm; tm.N = 3
    2 def unpivot(frame):
    3     N, K = frame.shape
    4     data = {'value' : frame.values.ravel('F'),
    5             'variable' : np.asarray(frame.columns).repeat(N),
    6             'date' : np.tile(np.asarray(frame.index), K)}
    7     return DataFrame(data, columns=['date', 'variable', 'value'])
    8 df = unpivot(tm.makeTimeDataFrame())

    我们希望选出variable为A的记录

    To select out everything for variable A we could do:

    1 In [2]: df[df['variable'] == 'A']
    2 Out[2]: 
    3         date variable     value
    4 0 2000-01-03        A  0.469112
    5 1 2000-01-04        A -0.282863
    6 2 2000-01-05        A -1.509059

    (以上为非常简单的一个操作,现在我们可以尝试更复杂的操作)

    假设我们希望针对variables数据做一些时间序列操作,可以选用这样的表达方式:每一列为一个varibales数据,行的索引为日期,每一个index指示了一组观察数据.使用pivot_table()函数将以上df数据重新整理为符合要求的数据.如下:

    1 In [3]: df.pivot(index='date', columns='variable', values='value')
    2 Out[3]: 
    3 variable           A         B         C         D
    4 date                                              
    5 2000-01-03  0.469112 -1.135632  0.119209 -2.104569
    6 2000-01-04 -0.282863  1.212112 -1.044236 -0.494929
    7 2000-01-05 -1.509059 -0.173215 -0.861849  1.071804

    如果在调用pivot_table()时,省略了" values "参数, 而输入的DataFrame对象,除了 被用于index的,以及被用于columns的列以外,还有2个或者更多的列,结果就是一个具有层次列的DataFrame对象,这个对象的最上面的层次分别表示原DataFrame对象的不同的列.

    If the values argument is omitted, and the input DataFrame has more than one column of values which are not used as column or index inputs to pivot, then the resulting “pivoted” DataFrame will havehierarchical columns whose topmost level indicates the respective value column:

     1 In [4]: df['value2'] = df['value'] * 2
     2 
     3 In [5]: pivoted = df.pivot('date', 'variable')
     4 
     5 In [6]: pivoted
     6 Out[6]: 
     7                value                                  value2            
     8 variable           A         B         C         D         A         B   
     9 date                                                                     
    10 2000-01-03  0.469112 -1.135632  0.119209 -2.104569  0.938225 -2.271265   
    11 2000-01-04 -0.282863  1.212112 -1.044236 -0.494929 -0.565727  2.424224   
    12 2000-01-05 -1.509059 -0.173215 -0.861849  1.071804 -3.018117 -0.346429   
    13 
    14                                 
    15 variable           C         D  
    16 date                            
    17 2000-01-03  0.238417 -4.209138  
    18 2000-01-04 -2.088472 -0.989859  
    19 2000-01-05 -1.723698  2.143608  

    以上的DataFrame对象,可以选择特定的subset(子集)

    You of course can then select subsets from the pivoted DataFrame:

    1 In [7]: pivoted['value2']
    2 Out[7]: 
    3 variable           A         B         C         D
    4 date                                              
    5 2000-01-03  0.938225 -2.271265  0.238417 -4.209138
    6 2000-01-04 -0.565727  2.424224 -2.088472 -0.989859
    7 2000-01-05 -3.018117 -0.346429 -1.723698  2.143608

    注意,这个取子集的操作,返回的是一个在原DataFrame对象上的一个view(视图),具有相同的数据类型

    Note that this returns a view on the underlying data in the case where the data are homogeneously-typed.

  • 相关阅读:
    undefined与null
    php中实现MVC的思想
    jquery返回json格式数据来获取每天的天气预报
    在php.ini中safe_mode开启之后对于PHP系统函数有什么影响呢?
    PHP的垃圾收集机制是怎样的
    javascript图片预加载技术
    web标准
    javascript简介
    javascript中的四种循环语句
    那些年,我还在学习C#
  • 原文地址:https://www.cnblogs.com/nomorewzx/p/4654060.html
Copyright © 2011-2022 走看看