一文看懂透视表pivot_table

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文看懂透视表pivot_table相关的知识,希望对你有一定的参考价值。

参考技术A

透视表是一种可以对数据 动态排布 并且 分类汇总 的表格格式。或许大多数人都在Excel使用过数据透视表(如下图),也体会到它的强大功能,而在pandas中它被称作pivot_table。

Excel中的数据透视表</figcaption>

首先读取数据,作为一个老火密,本文将火箭队当家吉祥物James_Harden本赛季比赛数据作为数据集进行讲解,就是下面这个大胡子。

最后5场比赛数据

pivot_table有四个最重要的参数 index、values、columns、aggfunc ,本文以这四个参数为中心讲解pivot操作是如何进行。

每个pivot_table必须拥有一个 index 如果想查看哈登对阵每个队伍的得分,首先我们将 对手 设置为 index

对手 成为了第一层索引,还想看看对阵 同一对手在不同主客场下的数据 ,试着将 对手 胜负 主客场 都设置为 index

试着交换下它们的顺序,数据结果一样:

看完上面几个操作, Index就是层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段 ,所以在进行pivot之前你也需要足够了解你的数据。

通过上面的操作,我们获取了james harden在对阵对手时的 所有数据 ,而Values可以对需要的计算数据进行筛选,如果我们只需要james harden在主客场和不同胜负情况下的得分、篮板与助攻三项数据:

aggfunc参数可以设置我们对数据聚合时进行的函数操作。

当我们未设置aggfunc时,它默认 aggfunc=\'mean\' 计算均值。我们还想要获得james harden在主客场和不同胜负情况下的 得分、 篮板、 助攻时:

Columns类似Index可以设置 列层次字段 ,它不是一个必要参数,作为一种分割数据的可选方式。

我是上表

你应该理解了pivot_table的用法?是不是在哪见过?

对,Groupby!

上面两个函数完全等价,pivot_table仿佛是加入了columns与margin功能的groupby函数,比groupby更加灵活。

当表格生成后如何查询某一项数据呢?

ex.根据 上表 查询哈登对阵灰熊时的数据

统计哈登不同主客场与胜负下的场数以及投篮命中率(哈登在主场且胜利的场数以及在这种情况下的投篮命中率)

数据分析—一文看懂数据透视表(Excel&Pandas-pivot_table实现)

参考技术A 【导语】也许大多数人都知道Excel中的数据透视表,也体会到了它的强大功能,那么Pandas也提供了一个类似的功能,也就是 pivot_table 。因为考虑到直接学pivot_table会有点难度,所以本篇文章将由浅入深的先通过excel实现透视表,慢慢地过渡到利用pandas来实现。

透视表是一种可以对数据动态排布并且分类汇总的表格格式。利用透视表可以快速地进行分类汇总,自由组合字段聚合计算。

使用数据透视表的一个挑战是,你需要确保你理解你的数据,并清楚地知道你想通过透视表解决什么问题。其实,虽然pivot_table看起来只是一个简单的函数,但是它能够快速地对数据进行强大的分析。

其实非常的简单,只需要选定我们想要进行透视的表,然后点击菜单栏中的插入透视表。

在本文中,将会跟踪一个销售渠道(也称为漏斗)。基本的问题是,一些销售周期很长(可以想一下“企业软件”、“资本设备”等),而管理者想更详细地了解它一整年的情况。

其实我们只需要将不同的字段拖入到不同的区域中即可,为了方便展示数据,我们可以右键关键字段,然后将其选择上移,这样我们可以实现数据的多级展示。

这里我们注意一个左下角的功能,叫做延迟布局更新,这个当我们的数据量比较大的时候,比如说十万个数据,我们就可以选定这个延迟更新,其实就是设置当我们的字段设置完成之后才进行数据更新,可以最大程度保证我们操作的流畅性。

如果我们对数据透视表的顺序有些不满意,那我们就要按照我们自己的意愿进行顺序的修改,比如说我们选择升序和降序。

当然了,我们也可以直接在选定区域的时候直接选择插入一个透视图,一般默认是柱状图。

这就是数据透视表与数据透视图的基本操作,这是比较简单的基础内容。

数据透视表可以随时随地进行数据源的更改,数据源变更后进行简单的更新就可反映到数据报表中,有两种方式,第一种是数据透视表刷新:如果数据源中的数值进行了更新,刷新即可。如果是数据源的结构或布局变更了,这时就采用更改数据源的方式。

计算字段极大扩展了数据透视表的计算功能,比如原始数据表中有一列数据为销售单价,有一列数据为数量。那么在数据透视表中可以通过计算字段输入公式”=单价*数量“,来求出销售额。

pandas中的函数pivot_table可以实现数据透视表,它的参数如下,下面我们来一个个的学习。我们的数据源和上面excel的一样。

我们将上表中“Status”列定义为category,并按我们想要的查看方式设置顺序(可选)

此外,可以有多个索引。实际上,大多数的pivot_table参数可以通过列表获取多个值。

我们上面将“Name”,“Rep”列和“Manager”列进行对应分组,那么现在来实现数据聚合。

“Price”列会自动计算数据的平均值,但是我们也可以对该列元素进行计数或求和。要添加这些功能,使用aggfunc和np.sum就很容易实现。

aggfunc可以包含很多函数,下面就让我们尝试一种方法,即使用numpy中的函数mean和len来进行计算。

如果我们想通过不同产品来分析销售情况,那么变量“columns”将允许我们定义一个或多个列。
pivot_table中一个令人困惑的地方是“columns(列)”和“values(值)”的使用。我们只要记住,变量“columns(列)”是可选的,它提供一种额外的方法来分割你所关心的实际值。然而,聚合函数aggfunc最后是被应用到了变量“values”中你所指定的字段上。

结果里有很多NaN,如果想移除它们,我们可以使用“fill_value”将其设置为0。

如何查看一些总和数据呢?相当于excel中的总计,通过“margins=True”就可以为我们实现这种功能。

下面,让我们以更高的管理者角度来分析此渠道。根据我们前面对category的定义,注意现在“Status”是如何排序的。

为了对你选择的不同值执行不同的函数,你可以向aggfunc传递一个字典。

如果只想查看一个管理者(例如Debra Henley)的数据,可以这样过滤:

查看所有的暂停(pending)和成功(won)的交易,如下:

实现同时过滤多个条件:

希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油❤。

以上是关于一文看懂透视表pivot_table的主要内容,如果未能解决你的问题,请参考以下文章

pandas pivot_table透视表crosstab交叉表aggfunc函数详解及实战

图解Pandas透视表pivot_table

pandas 透视表 pivot_table

数据透视表和数据交叉表

Pandas 透视表pivot_table详解

100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)