热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据分析真实案例:excel&sql&pandas实现数据透视表功能

使用excel&sql&panda

image.png


一、案例背景





  • 接到需求



事情是这样的,一个眼光明媚的早上,领导看到昨天PV增长明显,于是就提出了如下需求:

image.png

ok,get到需求后,立马行动起来!



  • 分析需求



为什么pv会增长明显呢?首先,依据拆分的思想,网站有很多个板块,所以将总体pv拆分成n个板块(可以根据经验选择主要的板块进行分析),对这n个板块逐个进行分析;接着,由于孤数不立的原则:单看一天数据,无法判断具体哪个板块增长,哪个板块降低,因此,主要从日期、板块这两个维度进行分析。



  • 根据分析结果提数



”无情的提数机器“来了!首先确定需要用到的表:只需要访问日志表。

原始数据形式

简单看一下日志表中我们需要的两个主要字段(日期、网页链接):

image.png

目标数据形式

我们需要提出来的效果是这样的(数据当然不能给别人看咯):

image.png



  • 提数sql



太年轻的小菜我,紧急情况下,没想到用数据透视表,像个沙雕一样,写了屎一样的sql。(为了让大家引以为戒,我脸也不要了,展示出来吧)

image.png

没错,查9天的数据,我用了8个left join…



  • 数据可视化形成报告



为了让别人一眼就能从这近1000条数据中看出来谁增高了,谁降低了,那必须画个图,然后根据图进行描述分析,得出结果。(这段不重要,就略过了)


二、使用数据透视表



用又臭又长的sql得出报告后,总觉得心里不舒服,怎么能写这么烂的sql,于是,突然想到了数据透视表。



  • excel实现数据透视表



excel实现数据透视表就比较理所当然啦,因为数据透视表就是excel里面的概念。

第一步:先直接简单的select查出近9天的数据并保存为excel

第二步:数据透视表的使用

image.png

image.png

好了,excel的数据透视表就是这么简单好用,顺便也出来图了,但是很丑,可以直接改改,或者copy数据自己用工具作图分析。



  • pandas实现数据透视表



第一步:先直接简单的select查出近9天的数据并保存为excel(如果本地可以直接连生产的数据库,可以直接pd.read_sql()一步到位获取数据)

第二步:实现pandas的数据透视表功能

import pandas as pd
data = pd.read_excel('xxx.xlsx')
data_result = pd.pivot_table(data, index=["page"], columns=["date"], values=["page"], aggfunc={"page": "count"})
print(data_result)

image.png



  • sql实现数据透视表功能



sql一步到位,为了保护隐私和更方便大家看方法,我就简化了一下sql,如下:

select page,
count(case when date = '2020-07-01' then page end) as "2020-07-01",
count(case when date = '2020-07-02' then page end) as "2020-07-02",
count(case when date = '2020-07-03' then page end) as "2020-07-03",
from table_test
group by page

image.png

over!



推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有