简介
使用pivot
使用stack
使用melt
使用pivot tables
使用crosstab
get_dummies
使用pandas的pivot方法可以将df进行旋转变换,本文将会详细讲解pivot的秘密。
pivot用来重组df,使用指定的index,columns和values来对现有的df进行重构。
看一个pivot的例子:
通过pivot变化,新的df使用foo中的值作为index,使用bar的值作为columns,zoo作为对应的value。
再看一个时间变化的例子:
如果剩余的value,多于一列的话,每一列都会有相应的columns值:
通过选择value2,可以得到相应的子集:
stack是对df进行转换,将列转换为新的内部的index。
上面我们将列a,b转成了index。
unstack是stack的反向操作,是将最内层的index转换为对应的列。
举个具体的例子:
默认情况下unstack是unstack最后一个index,我们还可以指定特定的index值:
默认情况下stack只会stack一个level,还可以传入多个level:
上面等价于:
melt指定特定的列作为标志变量,其他的列被转换为行的数据。并放置在新的两个列:variable和value中。
上面例子中我们指定了两列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参数:
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现! 公众号:「程序那些事」,懂技术,更懂你!