利用Python对电商销售数据进行分析

一.数据集介绍

此次的数据集来自kaggle的关于在线零售业务的交易数据,该公司主要销售礼品,大部分出售对象是面向批发商。

二.数据集字段介绍

数据包含541910行,8个字段,字段内容为:

InvoiceNo: 订单编号,每笔交易有6个整数,退货订单编号开头有字母’C’。
StockCode: 产品编号,由5个整数组成。
Description: 产品描述。
Quantity: 产品数量,有负号的表示退货
InvoiceDate: 订单日期和时间。
UnitPrice: 单价(英镑),单位产品的价格。
CustomerID:客户编号,每个客户编号由5位数字组成。
Country: 国家的名称,每个客户所在国家/地区的名称。

三.分析内容

1.购买商品数前十的国家是?

2.交易额前十的国家是?

3.哪些月份销量较佳?

4.客单价多少?

5.用户消费行为分析

四. 数据处理分析过程

1.数据清洗

利用Python语言进行数据分析,开发工具有Jupyter Notebook。

导入库,查看数据

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

df = pd.read_csv('data.csv',encoding='ISO-8859-1')
df.head()

利用Python对电商销售数据进行分析

df.info()

利用Python对电商销售数据进行分析
可以看出,CustomID存在部分缺失,无法进行填充,需要删除缺失的数据。InvoiceDate格式需要调整,方便后续分析。数据只有产品数量和单价,没有销售金额,要根据产品数量和单价建立一个销售金额的新字段。

删除缺失CustomID对应数据内容。

df1 = df.dropna(how='any') 

修改InvoiceDate格式,只取年月作为日期内容。

df1['InvoiceDate'] = pd.to_datetime(df1['InvoiceDate']) #12/1/2010 8:26转换为2010-12-01
df1['InvoiceDate'] =df1['InvoiceDate'].apply(lambda x: x.strftime('%Y-%m-%d')) #将datetime64[ns] 转为 object

新建一个销售金额的字段,即用产品数量乘以单价。

df1['Price'] = df1['Quantity']*df1['UnitPrice']

完成以上数据清洗后,结果如下:
利用Python对电商销售数据进行分析
2.数据分析

【第一个问题:购买商品数前十的国家是?】

获取产品数量大于0,按国家分组,对产品数量进行求和,从大到小进行排序,取前十的国家

df1[df1['Quantity']>0].groupby('Country')['Quantity'].sum().sort_values(ascending=False).head(10)

利用Python对电商销售数据进行分析
英国购买商品数远远大于其他国家,这可能由于公司位于英国,英国是该公司商品销售的主要对象。

【第二个问题:交易额前十的国家是?】

获取产品数量大于0,按国家分组,对销售金额进行求和,从大到小进行排序

df1[df1['Quantity']>0].groupby('Country')['Price'].sum().sort_values(ascending=True).head(10)

利用Python对电商销售数据进行分析
可以看出:英国的交易额最大,由于购买数最多,交易额理所当然也是最大。除此之外,荷兰,爱尔兰,德国,法国也是主要消费国家,需要重点关注。

【第三个问题:哪些月份销量较佳?】

df1[df1['Quantity']>0].groupby('InvoiceDate')['Quantity'].sum().sort_values(ascending=False).head(20)

利用Python对电商销售数据进行分析
销量最高的是12月份,其次是1月份,大部分销量较佳集中在下半年,这是由于该产品是礼品,在下半年节日较多,加上促销优惠,销量比上半年月份多。

【第四个问题:客单价多少?】

sumPrice=df1[df1['Quantity']>0]['Price'].sum()
countID=df1[df1['Quantity']>0]['InvoiceNo'].count()
avgPrice = sumPrice/countID
print(avgPrice)

利用Python对电商销售数据进行分析
客单价即平均交易金额,是指平均每个客户交易金额,客单价等于成交金额/成交用户数。

销售额是由客单价和用户数所决定的,要提升产品的销售额,除了尽可能多地吸引客流,增加顾客交易次数以外,提高客单价也是非常重要的途径。

【第五个问题:用户消费行为分析】

df1[df1['Quantity']>0].groupby('CustomerID').agg({'InvoiceNo':'nunique',
                                                'Quantity':'sum',
                                                'Price':'sum'}).describe()

利用Python对电商销售数据进行分析
用户消费行为分析主要从用户消费次数,用户消费金额,用户购买产品数量这三个维度进行分析。

五.总结

通过以上计算可看出:

用户平均消费4次,有的客户甚至消费高达210次,是产品的忠诚客户。

用户平均消费金额为2053元,而75%的用户消费金额只有1661,可见,有些用户消费金额较大,属于非常有价值的用户,需要重点保持关注。

用户购买产品数量平均高达1194件,由于销售对象主要是批发商,算是正常的数量数。