天天看点

Pandas高级教程之:Dataframe的重排和旋转

简介

使用pivot

使用stack

使用melt

使用pivot tables

使用crosstab

get_dummies

使用pandas的pivot方法可以将df进行旋转变换,本文将会详细讲解pivot的秘密。

pivot用来重组df,使用指定的index,columns和values来对现有的df进行重构。

看一个pivot的例子:

Pandas高级教程之:Dataframe的重排和旋转

通过pivot变化,新的df使用foo中的值作为index,使用bar的值作为columns,zoo作为对应的value。

再看一个时间变化的例子:

如果剩余的value,多于一列的话,每一列都会有相应的columns值:

通过选择value2,可以得到相应的子集:

stack是对df进行转换,将列转换为新的内部的index。

Pandas高级教程之:Dataframe的重排和旋转

上面我们将列a,b转成了index。

unstack是stack的反向操作,是将最内层的index转换为对应的列。

Pandas高级教程之:Dataframe的重排和旋转

举个具体的例子:

默认情况下unstack是unstack最后一个index,我们还可以指定特定的index值:

Pandas高级教程之:Dataframe的重排和旋转

默认情况下stack只会stack一个level,还可以传入多个level:

上面等价于:

melt指定特定的列作为标志变量,其他的列被转换为行的数据。并放置在新的两个列:variable和value中。

Pandas高级教程之:Dataframe的重排和旋转

上面例子中我们指定了两列first和last,这两列是不变的,height和weight被变换成为行数据。

举个例子:

虽然pivot可以进行df的轴转置,pandas还提供了 pivot_table() 在转置的同时可以进行数值的统计。

pivot_table() 接收下面的参数:

data: 一个df对象

values:一列或者多列待聚合的数据。

index: index的分组对象

columns: 列的分组对象

aggfunc: 聚合的方法。

先创建一个df:

下面是几个聚合的例子:

添加margins=true会添加一个all列,表示对所有的列进行聚合:

crosstab 用来统计表格中元素的出现次数。

crosstab可以接收两个series:

还可以使用normalize来指定比例值:

还可以normalize行或者列:

可以指定聚合方法:

get_dummies可以将df中的一列转换成为k列的0和1组合:

get_dummies 和 cut 可以进行结合用来统计范围内的元素:

get_dummies还可以接受一个df参数:

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现! 公众号:「程序那些事」,懂技术,更懂你!