【入门数据分析】英国某电商的销售分析

一、分析目的和数据来源

分析目的:

  • 从产品、顾客和时区三个方面了解该电商平台的销售情况;
  • 确定重要的业务标准以隔离客户,将客户分组到不同价值集群中以运行有针对性的营销策略,降低运营成本并提高收益和效率;
  • 对其它方面提出相关建议;

数据来源:

本数据源于kaggle,记录了在英国注册的一家在线零售商店 2010/1/12 - 2011/12/09 期间的所有交易,该公司主要销售各种独特的礼品,且其客户以批发商为主。

数据链接:https://www.kaggle.com/carrie1/ecommerce-data

二、导入并查看数据集信息

1、导入数据

import warnings
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os

warnings.filterwarnings('ignore')  # 忽略报警信息
os.chdir(r"C:\Users\p\Desktop")
df = pd.read_csv('data.csv', encoding='ISO-8859-1', dtype={'CustomerID': str})
df.head()

数据集前5行
数据集共有8个字段变量:

在这里插入图片描述

2、查看数据信息

df.shape
df.info()


数据集总共有54万多条交易记录,从数据集信息中可以看出,Description和CustomerID字段都有相应的缺失

三、数据预处理

1、冗余和缺失值处理

计算缺失变量的缺失率。

df.apply(lambda x :sum(x.isnull())/len(x),axis=0)

在这里插入图片描述
在这里,由于Description与我们的分析目标无关,所以将其去除。而CustomerID是后续进行销售分析和客户分类的必要数据,且考虑到CustomerID的缺失率高达24.9%,将其删除会对分析结果的准确性造成较大影响,所以这里需要对其进行填充处理。

df.drop(['Description'],axis=1,inplace=True)
df.head()
df['CustomerID'] = df['CustomerID'].fillna('Unknown')	

在这里插入图片描述

3、重复值处理

查看数据集的重复值个数:

df.duplicated().sum()

在这里插入图片描述
去除重复值:

df = df.drop_duplicates()

3、异常值处理

对数据集进行描述性统计

df.describe()

在这里插入图片描述
从描述中可以看到商品销售数量和商品单价都存在负值,对于商品销售数量为负数的情况,推测可能是退货情况。而对于商品单价为负数来说,这是没有意义的,判定为异常值。

进一步看看商品单价的细分类

df['UnitPrice'].groupby(df['UnitPrice']).count()
df[df["UnitPrice"]>0].count()

在这里插入图片描述
在这里插入图片描述
可以看到单价为负数的有2个,单价为零的有2515个,单价正常的有539392个。单价为零,可以理解为商品属于赠品。

最后,不忘删除单价为负值的两个异常记录:

df = df[df['UnitPrice'] >= 0]

4、变量处理

为了更有针对性的分析商品的销售情况,将数据集分为购买和退货两部分,但是为了避免之后重复的变量操作,比如指标拆解和添加必要字段,这里将这两个步骤提前。
将日期指标拆分并添加销售总额指标

df[["Date","Time"]]=df["InvoiceDate"].str.split(" ",expand=True)
df[["Month","Day","Year"]]=df["Date"].str.split("/",expand=True)
df.drop(['InvoiceDate'],axis=1,inplace=True)	# 拆分后即可删除原来的InvoiceDate字段
df['Date'] = pd.to_datetime(df['Date']) 	#将Date转换为标准日期格式
df["Total"]=df["Quantity"]*df["UnitPrice"]	# 增加销售额字段
df.head()

在这里插入图片描述
先查看有没有订单的商品购买数量为 0 的异常情况:

df[df["Quantity"] == 0]

在这里插入图片描述
结果显示没有购买数量为 0 的异常情况,接着将数据集分为商品购买信息和退货信息两部分:

df_buy = df[df["Quantity"] > 0]	# 购买商品数据
df_return = df[df["Quantity"] < 0]	# 退货商品数据

四、数据分析

1、从商品角度

1.1 热卖的商品和退货最多的商品

quantity_sort=df["Quantity"].groupby(df["StockCode"]).sum().sort_values(ascending=False)
quantity_sort[:20]

卖的最火的前 20 种商品排名:

在这里插入图片描述

quantity_sort[-20:]

退货最多的 20 种商品排名,最底下是退货最多的,往上依次减少:
在这里插入图片描述

1.2 商品的价位分布、各价位区间的销量如何?

df_unique_stock=df.drop_duplicates(["StockCode"])	# 统计商品的种类数
df_unique_stock['UnitPrice'].describe()	# 进行价格描述

在这里插入图片描述
描述统计中看出,商品均价 6.9 > 商品价格的中位数 2.51,属于右偏分布,说明该网站大多售卖低价商品,少部分商品价格昂贵,少数高价商品将均值拉大,商品价格的标准差较大。

现在来看一下该网站各个在售商品具体的价位分布情况:

# 根据均值和中位数对单价UnitPrice进行分组
web_price_cut=pd.cut(df_unique_stock['UnitPrice'],bins=[0,1,2,3,4,5,6,7,10,15,20,25,30,50,100,10000]).value_counts().sort_index()
web_p_per=web_price_cut/web_price_cut.sum()
web_p_cumper=web_price_cut.cumsum()/web_price_cut.sum()
web_p_dis=pd.concat([web_p_per,web_p_cumper],axis=1)
web_p_dis
web_p_per=pd.DataFrame(web_p_per).reset_index()

# 画图显示
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure(figsize=(15,6))
x=web_p_per['index'].astype("str")
y=web_p_per['UnitPrice']
plt.bar(x,y)
web_p_cumper.plot(c='g',linewidth=2.0)
plt.xlabel('价格区间',size=15)
plt.ylabel('百分比',size=15)
plt.legend(['各价格区间累计百分比','各价格区间占比'],loc='upper left')
plt.show()

输出结果:
在这里插入图片描述
在这里插入图片描述
从图表中可以看出,商品类别数在价格(0,3]的区间里占比最高,合计有60%左右;15元以内的商品就占了96.98%。

再来看看不同价位商品的销量情况:

cut=pd.cut(df['UnitPrice'],bins=[0,1,2,3,4,5,6,7,10,15,20,25,30,50,100,10000])
quan_price=df['Quantity'].groupby(cut).sum()
sale_p_per=quan_price/quan_price.sum()
sale_p_cumper=quan_price.cumsum()/quan_price.sum()
sale_p_dis=pd.concat([sale_p_per,sale_p_cumper],axis=1)
sale_p_dis.columns=['销量占比','销量累计占比']
sale_p_dis

# 画图显示
sale_p_per=pd.DataFrame(sale_p_per).reset_index()
plt.figure(figsize=(15,6))
x=sale_p_per['UnitPrice'].astype("str")
y=sale_p_per['Quantity']
plt.bar(x,y)
web_p_cumper.plot(c='g',linewidth=2.0)
plt.xlabel('价格区间',size=15)
plt.ylabel('百分比',size=15)
plt.legend(['各价格区间销售量累计占比','各价格区间销售量占比'],loc='upper left')
plt.show()

在这里插入图片描述
在这里插入图片描述
图表显示,85.5%的销量集中在价格在3元以内的商品,其中0-1区间的占比最高,为39%,区间1-2其次;15元以内的商品销售比例就占据了高达99.7%。

1.3 退货商品的价位分布情况、退货量

将退货商品按不同价格区间进行分组:

# 退货商品的价格切片
cut1=pd.cut(df_return['UnitPrice'],bins=[0,1,2,3,4,5,6,7,10,15,20,25,30,50,100,10000])
return_group=df_return['Quantity'].groupby(cut1).sum()	# 对退货数量进行价格分组
# 统计出退货商品各个价位区间的数量占比和累计数量占比
per_cumper=pd.concat([return_group/return_group.sum(),return_group.cumsum()/return_group.sum()],axis=1)
per_cumper.columns=['退货数占比','退货数累计占比']
per_cumper

# 画图显示
return_per=pd.DataFrame(return_group/return_group.sum()).reset_index()
return_cumper=return_group.cumsum()/return_group.sum()
plt.figure(figsize=(15,6))
x=return_per['UnitPrice'].astype("str")
y=return_per['Quantity']
plt.bar(x,y)
return_cumper.plot(c='g',linewidth=2.0)
plt.xlabel('价格区间',size=15)
plt.ylabel('百分比',size=15)
plt.legend(['退货量累计占比','退货量占比'],loc='upper left')
plt.show()

在这里插入图片描述
在这里插入图片描述
由图可以看出退货商品最多的价格区间为 1 - 3,价格为 3
以内的商品退货占比高达 93.6%。
再来对比不同价位的退货商品数和退货商品所属种类数分布:

unique_stock=df_return.drop_duplicates('StockCode')	# 选出所有商品种类
# 将所有商品按照价格分组
return_uni_group=pd.cut(unique_stock['UnitPrice'],bins=[0,1,2,3,4,5,6,7,10,15,20,25,30,50,100,10000]).value_counts().sort_index()

#画图显示不同价格区间的退货商品数和退货商品类数
plt.figure(figsize=(12,6))	
(return_group/return_group.sum()).plot(c='r')
(return_uni_group/return_uni_group.sum()).plot(c='b')
plt.xlabel('价格区间',size=15)
plt.ylabel('百分比',size=15)
plt.legend(['退货商品数占比','退货商品类占比'])
plt.show()

在这里插入图片描述
相较于退货商品数量最多的价格区间 1 - 3,退货商品种类数最多的价格区间是 1 - 2,除此以外,4-5、7-10的价格区间也是退货商品种类数较多的区间。

2、从用户角度

2.1 购买金额最多、购买频率最高的顾客

计算消费金额最大和消费频次最高的前 20 名顾客

# 消费金额top20
customer_total=df_buy["Total"].groupby(df_buy["CustomerID"]).sum().sort_values(ascending=False)
customer_total[:20]

# 消费频次top20
customer_buy_freqency=df_buy.drop_duplicates(["InvoiceNo"])["InvoiceNo"].groupby(df_buy["CustomerID"]).count().sort_values(ascending=False)
customer_buy_freqency
customer_buy_freqency[:20]

在这里插入图片描述

2.2 订单的商品种类分布

按订单分组,查看各个订单中购买的商品种类数量如何:

order_prodtype=df_buy['StockCode'].groupby(df_buy['InvoiceNo']).count().sort_values(ascending=False)
order_prodtype.describe()

在这里插入图片描述
订单商品种类的具体分段情况:

pd.cut(order_prodtype,bins=[0,25,50,100,200,300,500,1000,1200]).value_counts().sort_index()

在这里插入图片描述
从描述中可以看出订单中商品种数差距很大,观察平均值和中位数,发现订单的商品种数集中在 25 种左右,而一半的订单中,其种类数低于 15 种,75% 的订单中商品种数都是在 28 种以下,极少数订单的商品种数是过百的,在这些未退货的顾客中,大部分的订单商品种数在100以内。

再对比看看退货商品的情况:

# 按订单分组,查看各个退货订单中购买的商品种类数量描述
order_re_prodtype=df_return['StockCode'].groupby(df_return['InvoiceNo']).count().sort_values(ascending=False)
order_re_prodtype.describe()

# 分段显示
pd.cut(order_re_prodtype,bins=[0,5,10,20,30,40,50,100,120]).value_counts().sort_index()

在这里插入图片描述
在这里插入图片描述
相比于未退货订单,退货订单的商品种类大部分都在 10 以内。

2.3 顾客消费占比、顾客数量、顾客平均消费靠前的国家

# 顾客消费占比
country_total=df['Total'].groupby(df['Country']).sum().sort_values(ascending=False)
country_total_per=country_total/country_total.sum()
country_total_per

# 顾客数量占比
country_customer=df['CustomerID'].groupby(df['Country']).count().sort_values(ascending=False)
country_customer_per=country_customer/country_customer.sum()
country_customer_per

在这里插入图片描述
画图查看按消费额和顾客数占比的国家分布情况:

country_total_per.drop("United Kingdom",inplace=True)
country_customer_per.drop("United Kingdom",inplace=True)
plt.scatter(country_total_per.sort_index(),country_customer_per.sort_index())
plt.xlabel('消费额占比')
plt.ylabel('顾客数占比')

在这里插入图片描述
再看看各个国家的顾客的平均消费情况:

df["Total"].groupby(df["Country"]).mean().sort_values(ascending=False)

在这里插入图片描述
这家电商网站有91.36%的顾客和84%的销售额来自本国英国,然而在顾客的平均消费方面,本国只有 16.7,排名倒数第 4。
去除本国的极端值(图中红色框位置),销售额占比超过1%的国家有荷兰、爱尔兰、德国、法国和澳大利亚;顾客数占比超过1%的国家有德国、法国和爱尔兰;平均顾客消费额最高的国家是荷兰、澳大利亚、日本和瑞典,这些国家可以作为开拓海外市场的重点对象。

2.4 RFM模型客户细分

对于电子商家来说,它们更希望将客户分组到不同的集群中,以便可以为每个分组进行自定义的营销活动,这会降低获客成本并提升经营收益,要做到这点,经理需要决定要隔离客户的重要业务准则是什么。
聪明的经营者深知 “了解您的客户” 这句话的重要性。经营者必须遵循从增加点击率到留存、忠诚度和建立客户关系的范式转变,而不是简单地专注于生成更多点击次数。与其分析整个客户群,不如将他们细分为同质组,了解每个群体的特点,并让他们参与相关的活动,而不是仅仅细分客户年龄或地理,所以这里采用RFM模型对客户进行细分,以作出精准营销。

RFM模型中的各个指标含义如下:
在这里插入图片描述
消费频率和消费金额会影响客户的终身价值,而最近一次消费时间间隔会影响保留率,这将是衡量参与度(活跃度)的重要指标。

RFM 打分的客户细分如下:
在这里插入图片描述
接下来开始建模。

1)计算用户最近 1 次消费时间间隔 - R值
# 先求用户最近一次消费的时间
last_trans_date = df_buy.groupby('CustomerID')['Date'].max()
last_trans_date

在这里插入图片描述
这里将整个数据的时间跨度作为参考时段,以已有数据中最后一天为时段边界。

# 用户最近一次消费距参考时间的间隔天数
R = (df_buy['Date'].max() - last_trans_date).dt.days
R

在这里插入图片描述

2)计算用户的消费频率 - F值

消费频率是指用户在规定时段内的总消费次数,在这里即为用户在参考时段内所下的订单数量。

# 用户所下的订单数量---消费频率
F = df_buy.groupby('CustomerID')['InvoiceNo'].nunique()
F

在这里插入图片描述

3)计算用户的消费金额 - M值

这里的消费金额即为前面添加的销售额变量,按用户分类汇总即可。

# 用户的消费总金额
M = df_buy.groupby('CustomerID')['Total'].sum()
M

在这里插入图片描述

4)R、F、M 值打分、客户的价值分类和汇总

画出 R、F、M 值的图像分布:

import seaborn as sns
plt.figure(figsize=(6,18))
sns.set(style = 'darkgrid')

plt.subplot(2, 1, 2)
plt.hist(R,bins=30)
plt.xlabel('最近1次消费的天数间隔')
plt.legend(['用户数'],loc='upper right')
plt.subplot(2, 2, 1)
plt.hist(F,bins=30)
plt.xlabel('消费次数')
plt.legend(['用户数'],loc='upper right')
plt.subplot(2, 2, 2)
plt.hist(M,bins=30)
plt.xlabel('消费金额')
plt.legend(['用户数'],loc='upper right')

plt.show()

在这里插入图片描述
从图中可以看出 F、M指标存在严重的异常值,标准差极大,查看各个指标的描述性统计:

R.describe()
F.describe()
M.describe()

在这里插入图片描述
上图从左到右依次为 R、F、M 值的描述性统计结果,接下来依据描述性统计结果采用 5 分制分别对 R、F、M 进行打分,这里首先要界定打分的范围阈值,对于商家来说,用户的分数应该取决于各用户的指标值在所有用户指标值中所处的成绩排名,当然打分规则需要依据具体业务来设定,或寻求业务部门协商处理,这里只是指出一项思维作为参考。
取统计描述中的均值为中等成绩,接着在最小值到均值之间取均值,在均值到最大值之间取均值,以此为参考标准制定出打分规则表
(或者也可以使用另一种思路:先对 R、F、M 排名,再以区间阈值的百分位数来对 R、F、M 值设定分值界限)。
在这里插入图片描述
分别给 R、F、M 三个值进行分级:

# 切分5级
R_bins = [0,30,70,150,270,400]
F_bins = [1,2,3,10,20,2500]
M_bins = [0,500,2000,5000,20000,2000000]

对 R、F、M 数据进行切片并拼接为 RFM 打分表格::

R_score = pd.cut(R,R_bins,labels=[5,4,3,2,1],right=False)
F_score = pd.cut(F,F_bins,labels=[1,2,3,4,5],right=False)
M_score = pd.cut(M,M_bins,labels=[1,2,3,4,5],right=False)
rfm = pd.concat([R_score,F_score,M_score],axis=1)
rfm.rename(columns={'Date':'R_score','InvoiceNo':'F_score','Total':'M_score'},inplace=True)
rfm

在这里插入图片描述
更改 R、F、M 值类型并求出各自均值:

for i in ['R_score','F_score','M_score']:
          rfm[i]=rfm[i].astype(float)
rfm.describe()

在这里插入图片描述
对 R、F、M 值进行打分:

rfm['R_grade'] = np.where(rfm['R_score']>3.64,'高','低')
rfm['F_grade'] = np.where(rfm['F_score']>2.23,'高','低')
rfm['M_grade'] = np.where(rfm['M_score']>1.87,'高','低')
rfm

在这里插入图片描述
根据 R、F、M 评级对用户进行价值细分:

rfm['user_category']=rfm['R_grade'].str[:]+rfm['F_grade'].str[:]+rfm['M_grade'].str[:]
rfm['user_category'] =rfm['user_category'].str.strip()
 
def trans(x):
    if x=='高高高':
        return '重要价值客户'
    elif x=='高低高':
        return '重要发展客户'
    elif x=='低高高':
        return '重要保持客户'
    elif x=='低低高':
        return '重要挽留客户'
    elif x=='高高低':
        return '一般价值客户'
    elif x=='高低低':
        return '一般发展客户'
    elif x=='低高低':
        return '一般保持客户'
    else:
        return '一般挽留客户'  
 
rfm['用户等级']=rfm['user_category'].apply(trans)
rfm

在这里插入图片描述
汇总用户细分结果:

# 各类用户数汇总
rfm['用户等级'].value_counts()

# 画图显示
plt.figure(figsize=(12,6))
plt.bar(rfm['用户等级'].value_counts().index,rfm['用户等级'].value_counts().values)
plt.legend(['用户数'],loc='upper right')
plt.show()

在这里插入图片描述
在这里插入图片描述

3、时间维度

3.1 不同月份的退货、未退货商品数量和金额

从退货和未退货两个方面,按照年、月对订单数和订单额进行分组。

查看退货商品数和退货金额:

# 退货商品数表
df1 = df_return[df_return['Year']==2010]
df2 = df_return[df_return['Year']==2011]
temp1 = df2['Quantity'].groupby(df2['Month']).sum()
temp1 = pd.DataFrame(temp1).rename(columns={'Quantity':'2011'})
temp1['2010']=df1['Quantity'].groupby(df1['Month']).sum()
temp1 = temp1.reset_index()
# 退货金额表
df3 = df_return[df_return['Year']==2010]
df4 = df_return[df_return['Year']==2011]
temp2 = df4['Total'].groupby(df4['Month']).sum()
temp2 = pd.DataFrame(temp2).rename(columns={'Total':'2011'})
temp2['2010']=df3['Total'].groupby(df3['Month']).sum()
temp2 = temp2.reset_index()

temp1.head()

在这里插入图片描述
用折线图、散点图和柱状图显示各个月份的退回订单数和退回订单额

plt.figure(figsize=(10,10))
plt.subplot(2, 1, 1)
x1=temp1['month']
y1=np.abs(temp1['2011'])
y2=np.abs(temp1['2010'])
plt.scatter(x1,y2,c='g')
plt.plot(x1,y1)
plt.xlabel('月份')
plt.ylabel('退回订单数')
plt.legend(['2011年','2010年'],loc='upper center')

plt.subplot(2, 1, 2)
x2=temp2['month']
y3=np.abs(temp2['2011'])
y4=np.abs(temp2['2010'])
plt.bar(x1,y3)
plt.plot(x1,y4,c='g',marker='o')
plt.xlabel('月份')
plt.ylabel('退回订单额')
plt.legend(['2010年','2011年'],loc='upper center')
plt.show()

在这里插入图片描述
从图中看出,相比于其他月份,1、12月份的退货金额和退货比例都很大,推测可能是此时西方人处于圣诞节之类的节日,购物的频次大,同时相应的退货频次会较大,类似于我国的双十一,购买增长会伴随着退货增加。

同理,再画出未退回的商品数和金额图:
在这里插入图片描述

3.2 不同月份的销售金额、订单数、订单均额情况

画图查看不同月份的销售额:

df['Month']=df['Month'].astype('int')
df['Total'].groupby(df['Month']).sum().sort_index().plot()
plt.ylabel('销售额')
plt.show()

在这里插入图片描述
销售额呈现上升趋势。

画图查看不同月份的订单数:

df['InvoiceNo'].groupby(df['Month']).count().sort_index().plot()
plt.ylabel('订单数')
plt.show()

在这里插入图片描述
再画图查看不同月份的订单均销额:

df['Total'].groupby(df['Month']).mean().sort_index().plot()
plt.ylabel('订单均销额')
plt.show()

在这里插入图片描述
销售总金额与订单数量呈现相同的分布,1-12月份的销售总额整体呈上升状态,有小幅度波动,在8-11月份涨幅最大,11月份达到顶峰。
一年中,平均订单金额波动较大,分别在3月、5月、9月达到了极大值,其中9月份是全年平均订单金额最大的月份。

3.3 一天中不同时段的销售金额、订单数、订单均额情况

画图显示一天中不同时段的销售金额:

df["Hour"]=df["Time"].str.split(":",expand=True)[0].astype("int")
df['Hour']=df['Hour'].astype('int')
df['Total'].groupby(df['Hour']).sum().sort_index().plot()
plt.ylabel('销售额')
plt.show()

在这里插入图片描述
同理,画出一天中不同时段的订单数、订单均额:
在这里插入图片描述
在这里插入图片描述
总销售金额比较高的订单时间主要集中在 9-16 点,为上班时间,在 10 点、12 点、15 点分别达到了一天中的极大值。订单数最多的处于 11- 17 点,与销售金额的分布大致一样。平均订单金额最高的时间是早上 7 点,其他时间点相差不大。

五、结论和建议

1、结论

  • 从商品的角度来看,该网站的情况如下:
    1、该网站热卖最多的前 20 名的商品是哪些,退货最多的前 20 名商品又是哪些;
    2、该网站以批发售卖低价产品为主,97% 的商品单价在 15 以内,低价售卖的商品中,0 - 3 价格区间的商品数最多,占据了 60% 左右;
    3、商品的销售量方面,该网站 95% 的销量集中在单价为 5 以内,这其中又以在 0 - 2 价位区间的商品最为畅销,占了 72% 左右。
    4、该网站 94% 的退货商品的价格低于 5,其中价格在 1-3 区间的商品退货量最多,占到 78% 左右。对于退货商品种类而言,1-2 价位区间的退货种类数最多,其次,在 4-5 和 7-10 价位也有较多的退货商品种数。

  • 从顾客的角度来看,该网站的情况如下:
    1、购买金额最多和购买次数最频繁的顾客是哪些;
    2、成功交易的订单中大部分商品种数在 100 以内,其中 75% 的订单的商品种数都是在 28 种以下;而退货订单中的商品种数大多在 10 以内;
    3、这家电商网站有 91% 的顾客和 84% 的销售额来自国内,相对来说,国内的顾客价值更高;国外方面,销售额较高的国家有荷兰、爱尔兰、德国、法国和澳大利亚;顾客数较多的国家有德国、法国、爱尔兰;平均顾客消费比较高的国家有荷兰、澳大利亚、日本和瑞典;
    4、该网站有 35% 的顾客是重要价值客户,有 38% 的顾客为一般挽留、发展客户,重要挽留、保持、发展客户各占 9%、8%、7% ,余下为其他类型顾客。

  • 从时间的角度来看,该网站的情况如下:
    1)在一年中,订单金额和订单数量呈现波动上升状态,11月份达到最大值,应该是由于 12、1 月份有圣诞节、新年,是消费者购物的狂欢期,作为电商网站顾客的批发商必须要提前进货;平均订单金额在9月份达到最大值;同时也正是由于此时西方人处于圣诞节之类的节日,1、12 月份的退货金额和退货比例都很大;
    2)该网站的顾客为批发商而并非个人,因而主要在工作时间下单,其中 11-16 点是下单高峰期。

2、建议

  • 商品方面:
    1)找出热卖商品的优点并继续维持,同时注意断货空位管理并定时查看热卖商品供货是否足够;
    2)找到自己的主力商品,形成自己的优势商品体系,这能带来高销售和高毛利,比如对于该电商来说,95% 的销量的价格低于 5,因此可以在商品链接页面上以最低单价显示从而吸引顾客眼球,平时节假日可以多做和它们有关的促销主题活动。
    3)对于退货的商品,应当找出退货最多的商品的原因,并进行产品改善和优化。该网站 94% 的退货商品的价位低于 5,其销售最多的价位区间也恰恰是退货最多的价位区间,抛开时间维度的不说,说明该家电商在寻找顾客退货原因的同时也需要兼顾商品的质量和商品附加价值的培养;

  • 顾客方面:
    1)对于订单中商品种类数低于 10 的买家,对其搜集更多维度的数据并进行用户画像寻找,对这类用户归类,实行差异化销售;
    2)重点关注国内顾客的需求,国外方面,将荷兰、爱尔兰、德国、法国、澳大利亚、日本和瑞典这些国家作为开拓海外市场的重点对象;
    3)分类用户中,重要价值客户是该电商最好的客户,他们的消费习惯一直保持,消费频繁,消费金额最大。要奖励这些客户,比如对这类顾客提供 vip 服务,他们可以成为新产品的早期采用者,并有助于品牌推广。
    4)对于一般保持顾客,他们最近没有访问,组织相关的促销活动再将他们吸引回来,并调查找出是哪里出了问题,并避免输给竞争对手。
    5)对于重要发展顾客,要想办法提高他们的消费频率,可以通过提供入职支持和特别优惠来增加访问量,要主动开始与这些客户建立关系,提高他们的复购率;
    6)对于重要保持顾客,他们是经常购买并花费大量资金,但最近尚未购买的忠实顾客,要向他们发送个性化的重新激活活动,并提供续订和有用的产品,以鼓励再次购买;
    7)观察高价购买的顾客主要购买的商品类别。并针对这些顾客的购买习惯,多做和他们有关的促销活动和换购,以保持他们的忠诚度以及对店面的认可;
    8)对于其他类型较低价值的顾客,也要找出最近没有消费、消费频率低、消费金额低的可能原因,并想办法改善。

  • 时间角度上:
    1)订单数量在 1 年里是不断上升的,说明商品基本上受到了顾客的认可,需要注意在大型节假日期间比如 11 月份实行促销活动,推动顾客购买意愿,增加他们的下单数;
    2)预计节假日到来前需要大量备货,尤其是热卖品,下单高峰期应安排足够的人手和资源,同时注意观察记录这期间的细致退货信息,多和顾客沟通找到退货原因;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值