一、项目介绍:
1.1、公司业务简介:
Adventure Works Cycle主要生产和销售金属和复合材料自行车,并在国内各个市场销售。公司前期通过分销商模式达成收入目标。在2019年为进一步扩大市场和销售额,实行利用公司网站进行销售的新模式。
1.2、分析背景与目的:
2019年12月需向领导汇报2019年11月自行车销售情况。通过撰写数据分析报告从整体上,掌握整个公司的自行车销售状况、销售走势的变化;从细节上,通过多维度分析,为日常运营提供数据支持,并制定相应销售策略,调整产品结构。
二、数据字典与维度
2.1、数据字典:
通过python工具对ODS基础层数据进行加工,并加载到DW汇总层
2.2、关键数据维度:
三、分析思路与流程
3.1、分析思路:
3.2、主要分析流程:
3.2.1导入模块并读取数据
(1)导入模块
import numpy as np
import pandas as pd
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
(2)连接mysql获取表格信息
#读取dw层数据
#创建数据库引擎
engine =create_engine('mysql://fgdata:[email protected]:3306/adventure_ods?charset=gbk')
datafrog =engine
gather_customer_order=pd.read_sql_query('select * from dw_customer_order',con=datafrog)
#读取ods层数据
#创建数据库引擎
engine = create_engine('mysql://fgdata:[email protected]:3306/adventure_ods?charset=gbk')
datafrog=engine
df_CUSTOMER = pd.read_sql_query("select customer_key,birth_date,gender,marital_status from ods_customer where create_date < '2019-12-1'",con = datafrog)
3.2.2数据概况分析
查看数据源类型:
gather_customer_order.info()
合计227263条数据,不存在缺失值数据。
查看数据源类型:
df.CUSTOMER.info()
合计1062585条数据,不存在缺失值数据。
3.2.3单变量分析(关键数据处理)
(1)利用create_date字段增加create_year_month月份字段,供月维度分析时使用
gather_customer_order['create_date'] =pd.to_datetime(gather_customer_order['create_date'])
gather_customer_order['create_year_month']=gather_customer_order['create_date'].astype('str').str[0:7]
(2)groupby()分组聚合每月销量与销售额,重置索引并降序
grouped_month=gather_customer_order.groupby('create_year_month')
overall_sales_performance =grouped_month[['order_num','sum_amount']].agg({'order_num':sum,'sum_amount':sum})
overall_sales_performance =overall_sales_performance.reset_index()
overall_sales_performance =overall_sales_performance.sort_values(by='create_year_month',ascending =False)
(3)diff()函数实现数值型变量多月销售额环比计算
#新增一列sum_amount_diff,实现数值型变量多月自行车销售金额环比
#求每月自行车销售金额环比
sum_amount_diff = list((overall_sales_performance.sum_amount.diff()/overall_sales_performance.sum_amount)-1)
sum_amount_diff.pop(0)
sum_amount_diff.append(0)
#将环比转化为DataFrame并合并
sum_amount_diff= pd.DataFrame(sum_amount_diff)
overall_sales_performance= pd.concat([overall_sales_performance,pd.DataFrame(sum_amount_diff)],axis=1)
#改列名,否则显示列名是0
overall_sales_performance =overall_sales_performance.rename(columns ={0:'sum_amount_diff'})
overall_sales_performance.head()
(4)pct_change()函数实现分类型变量单月销量环比计算
#不同区域10月11月的环比,实现分类变量单月销量环比计算
#1、获得去重区域的列表region_list
region_list=list(gather_customer_order_10_11_group.chinese_territory.unique())
#2、利用for循环区域列表,结合loc定位符合区域,利用pct_change()函数实现环比效果,形成新的Series
order_x =pd.Series([])
amount_x =pd.Series([])
for i in region_list:
a =gather_customer_order_10_11_group.loc[gather_customer_order_10_11_group['chinese_territory']==i]['order_num'].pct_change()
b=gather_customer_order_10_11_group.loc[gather_customer_order_10_11_group['chinese_territory']==i]['sum_amount'].pct_change()
order_x=order_x.append(a)
amount_x = amount_x.append(b)
#3、赋予新的Series的变量名
gather_customer_order_10_11_group['order_diff']=order_x
gather_customer_order_10_11_group['amount_diff']=amount_x
#4、由0替换NaN值
gather_customer_order_10_11_group['order_diff']=gather_customer_order_10_11_group['order_diff'].fillna(value =0)
gather_customer_order_10_11_group['amount_diff']=gather_customer_order_10_11_group['amount_diff'].fillna(value =0)
gather_customer_order_10_11_group.head()
(5)cut()函数实现用户年龄分层
#利用customer_age字段,进行年龄分层,划分层次为"30-34","35-39","40-44","45-49","50-54","55-59","60-64"
bins =[30,34,39,44,49,54,59,64]
group_names=["30-34","35-39","40-44","45-49","50-54","55-59","60-64"]
sales_customer_order_11['age_level']= pd.cut(sales_customer_order_11['customer_age'],bins=bins,labels =group_names)
3.2.4可视化分析(利用PowerBI作图)
(1)整体销售情况分析
由图可知,近11个月,11月自行车销量最多,为3316辆;较10月增长7.1%
由上图可知,近11个月,11月自行车销售金额最高,为6190万元;较10月增长8.7%;
因此,从整体来看,自行车的销售金额与销售数量趋势一致,均在11月达到顶峰。
(2)地域销售情况分析
由上图可知,11月华东地区自行车销量在8个地区中最多,为871辆,远高于其他地区销量,销售主场区域;较10月,华南地区增速为15%,增速最快
由上图表可知,在10月与11月自行车销售市场中,Top10城市市场份额总占比13.48%,其中尽管北京市和上海市市场份额占比排名前列,但相较于其他城市份额占比不超于1.5%,可见自行车销量在各城市间销量分布均匀。此外,郑州市11月份环比增速急剧,达到48%,存在一定的潜力,可考虑提前备货给郑州市。
(注:城市市场份额=城市销售量/总销售量)
(3)产品销量情况分析
由上可知,从2019年1-11月份,公路自行车在各产品类别中占比最高,且每月占比均超过50%,11月销量和1-11月累计销量分别为1788辆和18182辆,远超山地自行车和公路自行车,是自行车类别中的主打产品。
由上图表可知,2019年1-11月份,Road-250 Red和Road-750 Black 在公路自行车中占比较高,其中Road-250 Red 在11月份中销量占比最高,约为19.57%,且较10月增速14.19%,增速最快。此外,在11月公路自行车中,除Road-350-W Yellow外,其他型号的自行车环比都呈现上升趋势。
由上图表可知,2019年1-11月份,Mountain-200 Black和Mountain-200 Sliver 在山地自行车中占比较高,其中Mountain-200 Sliver 在11月份中销量占比最高,约为36.31%;Mountain-500 Sliver 较10月增速19.51%,增速最快。此外,在11月公路自行车中,除Mountain-200 Black外,其他型号的自行车环比都呈现上升趋势。
由上图表可知,2019年1-11月份,Touring-1000 Blue和Mountain-1000 Yellow 在旅游自行车中占比较高,其中Touring-1000 Blue 在11月份中销量占比最高,约为32.67%;Mountain-1000 Yellow 较10月增速28.43%,增速最快。此外,在11月旅游自行车中,除Touring-2000 Blue和Touring-3000 Blue外,其他型号的自行车环比都呈现上升趋势。
(4)热销产品分析
由上图表可知,2019年11月1,型号为Road—150 Red、Road—550-W Yellow、Mountan-200 Sliver、Mountan-200 Black销量较高,其中Road—150 Red销量最高,较10月增长25.24%。
由上图表可知,2019年11月,型号为Touring—1000 Blue、Road—250 Red、Road—150 Red、Road-550-W Yellow增速较快,其中Touring—1000 Blue增速最快,较10月增长47.06%。
(5)用户行为分析
由上图可知,年龄段35-39岁消费人数占比最高,为29%;之后随着年龄的增长,占比逐渐下降。针对年龄(大于30岁)的消费群分析,发现购买公路自行车占比最大,山地自行车占比最小。
由上图表可知,全国女性购买自行车人数多于男性,多约10%。通过男女消费群分析,发现用户购买公路自行车占比最高,购买旅游自行车占比最少。