未明学院:如何用一行代码搞定数据透视表?

原创: 未明学院

未明学院:如何用一行代码搞定数据透视表?_第1张图片

Excel中数据透视表的使用非常广泛,其实Pandas也提供了一个类似的功能,应用起来比Excel更灵活,也更强大。虽然pivot_table看起来只是一个简单的函数,但是它能够快速地进行数据分析,帮你轻松搞定繁杂冗余的数据,提升学习工作的效率。

本期我们将重点解释Pandas中的pivot_table函数,并教大家如何使用它来进行数据分析。

注意,你需要确保你理解你的数据,并清楚地知道你想通过透视表解决什么问题。

(1)预处理

打开一份Excel表格,可以看到一份表格的数据量庞大,如何从繁杂冗余的数据中获取自己想要的信息,是一个让人头疼的问题。

未明学院:如何用一行代码搞定数据透视表?_第2张图片

图/列数据

未明学院:如何用一行代码搞定数据透视表?_第3张图片

图/行数据多达3W+

我们来教大家怎么用一行代码获取想要的信息。

在此之前,先进行简单的数据预处理,为防止后续操作中筛选出的数据量过大,我们可以限定显示最大的函数为10行:

未明学院:如何用一行代码搞定数据透视表?_第4张图片

(2)单个索引

以年代为索引,计算各个数字字段的均值(默认):

未明学院:如何用一行代码搞定数据透视表?_第5张图片

通过这种简单的筛选方式,你可以轻松获取你想要的信息,无需大费周章地查找。

同理,如果想要以产地为索引,只要把“年代”索引修改成“产地”索引即可。

(3)多索引

此外,也可以有多个索引。实际上,大多数的pivot_table参数可以通过列表获取多个值。我们尝试按年代和产地索引进行筛选:

未明学院:如何用一行代码搞定数据透视表?_第6张图片

(4)指定要统计的列数据

也可以指定需要统计汇总的数据,利用“values”指定要统计的列数据。比如我想要按照年代和产地索引,查看相应年代和产地的电影的评分:

未明学院:如何用一行代码搞定数据透视表?_第7张图片


(5)指定统计方法

还可以指定函数来统计不同的统计值,使用aggfunc就很容易实现,比如在下图中使用Numpy的sum函数对投票人数求和:

未明学院:如何用一行代码搞定数据透视表?_第8张图片

aggfunc可以包含很多函数,下面让我们尝试用numpy中的sum和mean函数来进行分组计算。

以产地为索引,通过将“投票人数”列和“评分”列进行对应分组,用sum函数计算总和,用mean计算数值均值:

未明学院:如何用一行代码搞定数据透视表?_第9张图片

可以看到,透视表的应用很灵活。

(6)替换非法字符

非数值(NaN)难以处理,会对计算产生干扰。如果想移除它们,可以使用“fill_value”将其设置为0:

未明学院:如何用一行代码搞定数据透视表?_第10张图片

(7)计算总和

加入margins=True,可以在下方显示一些总和数据:

未明学院:如何用一行代码搞定数据透视表?_第11张图片

(8)灵活运用aggfunc

一个很方便的特性是,为了对你选择的不同值执行不同的函数,你可以向aggfunc传递一个字典。不过,这样做有一个副作用,那就是必须将标签做的更加简洁才行。

我们尝试对各个地区的投票人数求和,对评分求均值:

未明学院:如何用一行代码搞定数据透视表?_第12张图片

(9)数据过滤

运用type函数,可以看到数据透视表是Dataframe类型的:

未明学院:如何用一行代码搞定数据透视表?_第13张图片

(10)进一步应用

1994年被誉为电影史上伟大的一年,《低俗小说》《肖申克的救赎》《阿甘正传》等经典电影都出现在这一年,所以我们通过索引筛选1994年的电影评分,1994年的电影平均分在7.26分:

未明学院:如何用一行代码搞定数据透视表?_第14张图片

接下来我们按电影的年代进行排名,使用排序函数sort_values(),评分按照降序排序,设置ascending的值为False:

未明学院:如何用一行代码搞定数据透视表?_第15张图片

数据显示,评分最高的是1924年,平均分达到8分以上。

那么1924年都有什么电影呢?我们接着往下看:

未明学院:如何用一行代码搞定数据透视表?_第16张图片

1924年的所有电影仅靠一小串代码就罗列出来了,是不是很轻松~

话不多说,小明已经抄下影单,准备观影了!

你可能感兴趣的:(文章)