项目背景
作为供应链行业领航企业,怡亚通推动供应链改变中国,不仅是以先进的供应链思维与管理推动中国主要核心城市的商业快速发展,也是以完善的供应链服务布局、开放的新流通平台助力中国1-6线城市以及乡镇的流通业进步,振兴中国农村流通经济,以供应链改变中国的时代洪流,推动全中国的发展与进步。上一个十年,怡亚通紧握快消市场高速发展机遇,打造380平台,实现业务规模的千亿级发展;未来,怡亚通将在380平台优势基础上,以城市(怡亚通已建立的380服务网络)辐射农村、农村包围城市的思路,打造城乡380生活超市。
A市客户有意加盟380开设连锁门店,请你根据A市已有销售点的销售数据分析,给予该客户铺货支持和经营策略建议。
项目目标
1.分析新开拓销售点的选址,是CBD店还是社区店更有利?
通过对数据中CBD店,社区店各自的销售总额(万元)分析,选择销售总额(万元)高的店铺作为新开拓销售点的选址。
代码:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel(r"C:\Users\Crown\Desktop\供应链商品销售数据.xlsx",header =1)#导入数据
data1 = data.loc[:,'销售点类型':'销售额(万元)']#去除不需要的数
cbd = data1.loc[:,'销售点类型']=='CBD店'#筛选数据
cbd_data = data1.loc[cbd,:]
shequ = data1.loc[:,'销售点类型'] =='社区店'#筛选数据
shequ_data = data1.loc[shequ,:]
x = ['CBD店','社区店']#定义x轴
y = [cbd_data['销售额(万元)'].sum(),shequ_data['销售额(万元)'].sum()]#定义y轴
plt.bar(x,y)#画直方图
plt.title('销售总额(万元)')#标题
plt.rcParams['font.sans-serif']='SimHei'#设置字体显示中文
plt.rcParams['axes.unicode_minus'] = False#正常显示字符(x轴)
for i in range(2):#设置直方图数据显示
plt.text(x[i],y[i],y[i],horizontalalignment = 'center',fontsize=18)#水平中间对齐,字体大小18
plt.show()
print("CBD店销售总额:",cbd_data['销售额(万元)'].sum())
print("社区店销售总额:",shequ_data['销售额(万元)'].sum())
print("CBD店销售总额多于社区店,故选择CBD店")
输出:
CBD店销售总额: 4985.5
社区店销售总额: 4606.5
CBD店销售总额多于社区店,故选择CBD店
2.可挑选哪些产品做为新销售店的主要铺货产品,以帮助新店顺利经营。
通过对CBD店,销售点数据中商品出售量数据的分析,为客户挑选售货量高的产品作为新销售点的主要铺货产品。根据商品出售的月份,选择销售量少的月份作为休假或者培训时间。
代码:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel(r"C:\Users\Crown\Desktop\供应链商品销售数据.xlsx",header =1)#导入数据
yf = data['销售月份'].value_counts()#自动从小到大排序
sp = data['商品代号'].value_counts()
plt.figure(figsize=(16,8))
plt.bar(yf.index,yf[yf.index])#画直方图
plt.title("各月份销售总量")
plt.rcParams['font.sans-serif']='SimHei'#设置字体显示中文
plt.rcParams['axes.unicode_minus'] = False#正常显示字符(x轴)
for i in range(len(yf.index)):#设置直方图数据显示
plt.text(yf.index[i],yf[yf.index[i]],yf[yf.index[i]],horizontalalignment = 'center',fontsize=10)#水平中间对齐,字体大小18
plt.show()
list = ['January','February','March','April','May','June','July','Augest','September','October','November','December']
for i in range(0,12):
if list[i] in yf.index:
continue
else:
print("休假培训时间:",list[i])
plt.figure(figsize=(16,8))
plt.bar(sp.index,sp[sp.index])
plt.xticks(rotation=90, fontsize=10)#显示重叠 故旋转90°显示
plt.title("货品销售总量")
for i in range(len(yf.index)):#设置直方图数据显示
plt.text(sp.index[i],sp[sp.index[i]],sp[sp.index[i]],horizontalalignment = 'center',fontsize=10)#水平中间对齐,字体大小18
plt.show()
print("以下5款货品可以多定量:{},{},{},{},{}".format(sp.index[0],sp.index[1],sp.index[2],sp.index[3],sp.index[4]))
输出:
休假培训时间: Augest
以下5款货品可以多定量:Safety 8,Tape 10,Tape 7,Safety 2,Safety 1
3.假设进货商品均余半年保质期,分析社区店有哪些季节性很强的产品,必须在哪个时点前促销出清,否则会滞销过期。
对数据进行分析,得到每季度各货品的出售量并做折线图,其中斜率较大的就是季节性强的产品。
代码:
def keyerror(list_):#处理不存在的月份并赋值为0
for i in range(0,12):
try:
list_[list[i]]
except KeyError:
list_[list[i]]=0
return list_
import pandas as pd
import matplotlib.pyplot as plt
list = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
'November', 'December'] # 月份顺序
data = pd.read_excel(r"C:\Users\Crown\Desktop\供应链商品销售数据.xlsx",header =1)
sq = data.loc[:,'销售点类型']=='社区店'#筛选社区店的数据
data1 = data.loc[sq,'商品代号':'销售月份']#去除多余数据
sp = data1['商品代号'].value_counts()
for i in range(len(sp.index)):#对于货品数量的循环
list1 = []#储存月份卖出的货品数量
list2 = ['第一季度', '第二季度','第三季度', '第四季度']#月份顺序
sp1 = data1.loc[:, '商品代号'] == sp.index[i]#得到某个的索引
sp2 = data1.loc[sp1, :]#利用索引筛选出数据
sp3 = sp2['销售月份'].value_counts()#得到某个商品在各个月份卖出数量的统计排序
keyerror(sp3)#处理数据
list1.append(sp3['March']+sp3['April']+sp3['May'])#将数量存入列表
list1.append(sp3['June'] + sp3['July'] + sp3['August']) # 将数量存入列表
list1.append(sp3['September'] + sp3['October'] + sp3['November']) # 将数量存入列表
list1.append(sp3['December'] + sp3['January'] + sp3['February']) # 将数量存入列表
plt.ylim(0, 70)#设置同一y轴,便于对比
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置字体显示中文
plt.rcParams['axes.unicode_minus'] = False # 正常显示字符(x轴)
plt.xticks(fontsize=10)
plt.plot(list2,list1,)#画折线图 可以更直观的看出销售数量的上升下降
plt.title(sp.index[i])#标题
plt.savefig("data{}.png".format(i),bbox_inches='tight') # 输入地址,并利用format函数修改图片名称 一张图片保存数据过于混乱看不清,故保存多张对比斜率即可得
plt.clf() # 需要重新更新画布,否则会出现同一张画布上绘制多张图片
输出:30张图片
观察图片曲线的斜率可看出Safty 8 Safty 2 Adhesive 5季节性较强