Excel对比Python之piovt_table(数据透视表)

时间:2024-05-22 21:49:18

Excel的数据透视表功能是平时工作非常熟悉的功能之一,也是非常强大而且基本上所有人都离不开的功能,今天来对比一下,在Excel和Python下分别对数据透视表进行操作各自的优点。

首先从网上获取一个数据,我下载了一个大小大约为5M,数据行超过十二万行的销售数据,图片是这样的

Excel对比Python之piovt_table(数据透视表)
Excel对比Python之piovt_table(数据透视表)

Excel篇

首先打开这个表格,有点卡顿,接下来,直接进行数据透视表的操作
Excel对比Python之piovt_table(数据透视表)
会自动识别区域,然后点击在新的表格里面生成,
Excel对比Python之piovt_table(数据透视表)
非常熟悉的界面,接下来将行列进行选择
Excel对比Python之piovt_table(数据透视表)
在行列里面生成了我们想要的数据,非常简单而且直观。

那么在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对比Python之piovt_table(数据透视表)
看到的数据和Excel是一样的
因为日期这一列我们需要对年份进行汇总,将日期进行处理

orders["year"] = pd.DatetimeIndex(orders.Date).year  #将年份单独出来为一列
print(orders.head(5))

增加一列year来显示年份,再打印前五行数据
Excel对比Python之piovt_table(数据透视表)
在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)显示合计项
Excel对比Python之piovt_table(数据透视表)
最后得到的这个表和透视表结果是一样的
还有另外一种办法就是手动生成透视表

groups = orders.groupby(["year", "Category"])\
.aggregate({"Product":"count", "Total":"sum"})
print(groups)

Excel对比Python之piovt_table(数据透视表)
对year,Category进行分组聚合,Product进行计数,Total进行求和
相应的在EXCEL里面的结果是
Excel对比Python之piovt_table(数据透视表)
结果都是一样的
Excel的优势在于简单直观明了,但是如果数据量太大,可能会比较卡
python的优势在于可复制性强,面对大量的数据运行流畅,但是不够直观,操作比较复杂、抽象。

Excel切片器篇

接下来介绍一个Excel强大的功能,切片器
具体的用法是,直接在Excel透视表里面插入图表
Excel对比Python之piovt_table(数据透视表)
对需要的项目选择切片操作
Excel对比Python之piovt_table(数据透视表)
可以根据需要对想要展示的数据进行多维度对比展示