Adventure项目总结

一、项目概述 1、成果预览 最近回顾了Adventure项目,在此记录、总结分析实现过程。该项目主要任务是利用python的pandas、numpy包从MySQL数据库中读取原始数据进行加工、聚合、分析,再利用Power BI进行dashboard的搭建。再以聚合后的数据为基础制作PPT,汇报分析结果,为业务团队自主分析提供数据支持,改进工作。
dashboard预览:Dashboard看板链接

Adventure项目总结
文章图片



PPT预览 Adventure项目总结
文章图片
2、背景介绍 1)公司背景
Adventure Works Cycle是国内一家生产和销售自行车及和相关配件的制造公司。利用每日商品销售及相关客户信息数据,获取商品销售趋势、地域分布情况以及简单用户画像,进行可视化展示,为运营人员提供自主分析工具。
2)产品介绍
公司主营业务有自行车(主要产品),服装,配件

  • 自行车:包括公路自行车、山地自行车、旅游自行车三大类
  • 服装:包括帽子、手套、袜子、背心、运动衫等
  • 配件:包括头盔、挡泥板、车架、清洁工、瓶子和笼子、车胎等
    这里主要分析的是自行车业务。
3、数据来源

1)ods_sales_orders 订单明细表 Adventure项目总结
文章图片


2)ods_customer 每日新增用户表 Adventure项目总结
文章图片


3)dim_date_df 日期维度表 Adventure项目总结
文章图片
二、python处理数据 1、生成dw_order_by_day表

导入相关模块,连接数据库 Adventure项目总结
文章图片


step 1:读取ods_sales_orders(订单明细表),生成sum_amount_order(销量订单聚合表),求总销售金额/客单价 Adventure项目总结
文章图片


step2:利用空列表及循环生成对应随机值,与销量订单聚合表合并形成sum_amount_order_goal(销量订单聚合目标表) Adventure项目总结
文章图片


step3:读取dim_date_df日期维度表 Adventure项目总结
文章图片


step4:对数据进行融合,生成dw_order_by_day表 Adventure项目总结
文章图片


step5:删除旧的dw_order_by_day(每日环比表),存储新的dw_order_by_day Adventure项目总结
文章图片
2、生成dw_amount_diff表

step1:读取dw_order_by_day表 Adventure项目总结
文章图片

【Adventure项目总结】
step2:求取各阶段的总金额 Adventure项目总结
文章图片


step3:求取各阶段的总订单数 Adventure项目总结
文章图片


step4:求取各阶段的总金额、订单数的同期对比数据 Adventure项目总结
文章图片


step5:删除旧的dw_amount_diff表,存储新的dw_amount_diff表 Adventure项目总结
文章图片
3、生成dw_customer_order表

step1:读取最新日期的ods_sales_orders(订单明细表) Adventure项目总结
文章图片


step2:读取每日新增用户表ods_customer Adventure项目总结
文章图片


step3:读取日期维度表dim_date_df Adventure项目总结
文章图片


step4:对数据进行聚合 Adventure项目总结
文章图片


step5:存储数据 Adventure项目总结
文章图片
三、搭建Dashboard 1、可视化看板布置 1)可视化工具:此处使用的可视化图表有切片器、卡片图、KPI图、环形图、子弹图、表格、地图等;
2)筛选器:用于区域、日期等字段信息的筛选;
3)书签:将按钮操作与书签相结合,完成不同页面的导航、跳转功能
2、报表展示 1)主页
  • 展示今日销售金额及目标完成情况、订单量、客单价以及同比情况;
  • 表格列明详细销售情况
  • 环形图展示各个种类产品销售占比情况- 利用地区和城市切片可以动态展现不同城市的销售情况
  • 地图和气泡图结合展示各个城市销售情况

    Adventure项目总结
    文章图片

    2)趋势详情页
  • 通过切片器筛选最近一段时间的销售变化趋势
  • 动态展示最近15天销售订单量完成情况
  • 动态展示最近15天销售金额以及目标完成情况
  • 动态展示最近15天客单价变化趋势

    Adventure项目总结
    文章图片

    3)城市详情页
  • 切片筛选区域和城市,动态展示不同地区销售情况

    Adventure项目总结
    文章图片
四、报告输出 1、指标搭建 1)目的
  • 优化销售策略,调整产品结构,才能保持高速增长,获取更多的收益,占领更多市场份额
  • 根据需求分析2019年11月自行车销售情况,为精细化运营提供数据支持
2)数据来源
dw_customer_order 产品销售信息表
ods_customer 每天新增客户信息表
dim_date_df 日期表
ods_sales_orders 订单明细表
3)分析思路
从整体的角度:分析2019.1—2019.11自行车整体销售表现
从地域的角度:分析11月每个区域销售量表现、11月TOP10城市销售量表现
从产品的角度:分析11月类别产品销售量表现、11月细分产品销售量表现
从用户的角度:分析11月用户年龄分布及每个年龄段产品购买喜好、11月男女用户分布情况
热销产品:分析11月TOP10产品销量榜、11月TOP10销量增速榜
Adventure项目总结
文章图片
2、python加工数据 Adventure项目总结
文章图片
1)整体销售表现


读取数据 Adventure项目总结
文章图片


观察字段属性信息 Adventure项目总结
文章图片

增加月份字段以便于进一步分析 Adventure项目总结
文章图片

筛选自行车数据 Adventure项目总结
文章图片


用groupby进行分组,求出每月订单量和销售金额总和,并进行排序 Adventure项目总结
文章图片

求每月订单量环比 Adventure项目总结
文章图片

转为dataframe形式 Adventure项目总结
文章图片

同样求出每月销售金额环比,并转为dataframe,同时对两个环比字段进行重命名 Adventure项目总结
文章图片

存入数据库 Adventure项目总结
文章图片
2)地域销售表现


筛选10月、11月数据后进行分组求和 Adventure项目总结
文章图片


求出不同区域销售环比情况 Adventure项目总结
文章图片

存入数据库 Adventure项目总结
文章图片

按城市分组并筛选销量前十的城市 Adventure项目总结
文章图片


筛选10月、11月数据并计算月销售金额 Adventure项目总结
文章图片
Adventure项目总结
文章图片

计算环比 Adventure项目总结
文章图片

存入数据库 Adventure项目总结
文章图片
3)产品销售表现


求出月销量并合并表格 Adventure项目总结
文章图片


计算细类产品销售占比情况并重命名 Adventure项目总结
文章图片


查看自行车产品种类 Adventure项目总结
文章图片


求出山地自行车具体型号销售数量以及种类月销量,并进行合并 Adventure项目总结
文章图片
Adventure项目总结
文章图片

同样方法对公路自行车和旅游自行车进行处理

计算销量环比 Adventure项目总结
文章图片


计算累计销量 Adventure项目总结
文章图片

合并表格并存储 Adventure项目总结
文章图片
Adventure项目总结
文章图片
4)用户行为分析
读取信息
Adventure项目总结
文章图片

用户年龄
合并表格,截取年份信息 Adventure项目总结
文章图片
Adventure项目总结
文章图片

计算用户年龄并进行分层 Adventure项目总结
文章图片

计算年龄比率,以便统计各年龄段占比情况 Adventure项目总结
文章图片
Adventure项目总结
文章图片

用户性别
观察性别分布情况并进行字段关联 Adventure项目总结
文章图片

5)热点产品分析
11月产品销量TOP10产品,销售数量及环比
计算产品销量并排序
Adventure项目总结
文章图片

切片、筛选信息,找出本月销量top10产品 Adventure项目总结
文章图片

11月增速TOP10产品,销售数量及环比
切片、筛选信息 Adventure项目总结
文章图片

合并表格 Adventure项目总结
文章图片

存储数据 Adventure项目总结
文章图片

3、PPT制作 通过上述加工,将存入MySQL数据库的数据接入Power BI,绘制图像,从而完成自行车业务分析报告

Adventure项目总结
文章图片
五、尝试使用Hive和SQL完成ETL过程 1、使用sqoop导数到hive数据库生成 ods 层数据

以生成dim_date_df表为例 Adventure项目总结
文章图片
Adventure项目总结
文章图片
ods_sales_orders表、ods_customer表亦同样处理
2、使用hive库进行数据汇总加工生成dw层数据

以ods.dw_order_day为例进行数据加工 Adventure项目总结
文章图片
3、sqoop导出分析结果到mysql

以导出dim_date_df表为例 Adventure项目总结
文章图片

    推荐阅读