Excel的数据透视表功能是平时工作非常熟悉的功能之一,也是非常强大而且基本上所有人都离不开的功能,今天来对比一下,在Excel和Python下分别对数据透视表进行操作各自的优点。
首先从网上获取一个数据,我下载了一个大小大约为5M,数据行超过十二万行的销售数据,图片是这样的
Excel篇
首先打开这个表格,有点卡顿,接下来,直接进行数据透视表的操作
会自动识别区域,然后点击在新的表格里面生成,
非常熟悉的界面,接下来将行列进行选择
在行列里面生成了我们想要的数据,非常简单而且直观。
那么在python中如何实现这个功能呢
python篇
首先打开python运行环境(推荐jupyter notebook)
然后读取这个表格
import numpy as np
import pandas as pd #导入相应的库
orders = pd.read_excel("/Users/mac/Downloads/023/Orders.xlsx")
print(orders.head(5)) #读取前五列
看到的数据和Excel是一样的
因为日期这一列我们需要对年份进行汇总,将日期进行处理
orders["year"] = pd.DatetimeIndex(orders.Date).year #将年份单独出来为一列
print(orders.head(5))
增加一列year来显示年份,再打印前五行数据
在python中有一个piovt_table()方法,可以直接使用,方式是
orders_pivottable = orders.pivot_table(values="Total", columns="year",
index="Category", aggfunc="sum", margins=True)
print(orders_pivottable)
要计算的值(values)是Total列,列(columns)是year,索引(index)是Category
聚合的方式的求和(sum)显示合计项
最后得到的这个表和透视表结果是一样的
还有另外一种办法就是手动生成透视表
groups = orders.groupby(["year", "Category"])\
.aggregate({"Product":"count", "Total":"sum"})
print(groups)
对year,Category进行分组聚合,Product进行计数,Total进行求和
相应的在EXCEL里面的结果是
结果都是一样的
Excel的优势在于简单直观明了,但是如果数据量太大,可能会比较卡
python的优势在于可复制性强,面对大量的数据运行流畅,但是不够直观,操作比较复杂、抽象。
Excel切片器篇
接下来介绍一个Excel强大的功能,切片器
具体的用法是,直接在Excel透视表里面插入图表
对需要的项目选择切片操作
可以根据需要对想要展示的数据进行多维度对比展示