学科分类
目录
数据分析

轴向旋转

统计数据时,有些数据会因为时间的不同而发生变化。例如,某件商品的价格在非活动期间为50元,而在活动期间商品的价格为30元,这就造成同一件商品在不同时间对应不同的价格,如图1所示为商品在活动与非活动期间的价格变化,其中5月25日为非活动期间,6月18日为活动期间。

img

图1 商品信息

在图1的表格中,同一款商品的在活动前后的价格无法很直观地看出来。为此,我们可以将商品的名称作为列索引,出售日期作为行索引,价格作为表格中的数据,此时每一行展示了同一日期不同手机品牌的价格,如图2所示。

img

图2 商品信息

与图1相比,图2更直观地看出活动前后的价格浮动,

在Pandas中pivot()方法提供了这样的功能,它会根据给定的行索引或列索引重新组织一个DataFrame对象,其语法格式如下:

DataFrame.pivot(index=None, columns=None, values=None)

上述方法中部分参数表示的含义如下:

(1) index:用于创建新DataFrame对象的行索引。如果未设置,则使用原DataFrame对象的索引。

(2) columns:用于创建新DataFrame对象的列索引。如果未设置,则使用原DataFrame对象的索引。

(3) values:用于填充新DataFrame对象中的值。

接下来,我们通过一个示例来演示如何使用pivot()方法来对DataFrame对象进行轴向旋转操作,具体如下:

In [38]: import pandas as pd
         df = pd.DataFrame({'商品名称': ['荣耀9青春版','小米6x','OPPO A1',
                                     '荣耀9青春版','小米6x','OPPO A1'],
                            '出售日期': ['2017年5月25日', '2017年5月25日',
                                     '2017年5月25日','2017年6月18日',
                                     '2017年6月18日', '2017年6月18日'],
                            '价格': ['999元', '1399元', '1399元',
                                   '800元', '1200元', '1250元']})
         df.pivot(index='出售日期', columns='商品名称', values='价格')

  Out[38]:
​           商品名称  OPPO A1  小米6x 荣耀9青春版
​           出售日期
​      201752513991399999元
​     201761812501200800
点击此处
隐藏目录