轴向旋转
统计数据时,有些数据会因为时间的不同而发生变化。例如,某件商品的价格在非活动期间为50元,而在活动期间商品的价格为30元,这就造成同一件商品在不同时间对应不同的价格,如图1所示为商品在活动与非活动期间的价格变化,其中5月25日为非活动期间,6月18日为活动期间。
图1 商品信息
在图1的表格中,同一款商品的在活动前后的价格无法很直观地看出来。为此,我们可以将商品的名称作为列索引,出售日期作为行索引,价格作为表格中的数据,此时每一行展示了同一日期不同手机品牌的价格,如图2所示。
图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青春版
出售日期
2017年5月25日 1399元 1399元 999元
2017年6月18日 1250元 1200元 800元