新闻中心

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

2023-03-02
浏览次数:
返回列表

本次用一个电商销售数据作为操作对象,来完成数据分析案例。

 1.数据集介绍

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

 2.数据集字段介绍

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

InvoiceNo: 订单编号,每笔交易有6个整数,退货订单编号开头有字母’C’。

StockCode: 产品编号,由5个整数组成。

Description: 产品描述。

Quantity: 产品数量,有负号的表示退货

InvoiceDate: 订单日期和时间。

UnitPrice: 单价(英镑),单位产品的价格。

CustomerID:客户编号,每个客户编号由5位数字组成。

Country: 国家的名称,每个客户所在国家/地区的名称。

 3.分析内容

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

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

3.哪些月份销量较佳?

4.客单价多少?

5.用户消费行为分析?

 4.数据处理分析过程

4.1数据清洗

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

导入库,查看数据

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv(data.csv,encoding=ISO-8859-1)df.head()

df.info()

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

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

df1 = df.dropna(how=any)

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

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

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

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

完成以上数据清洗后,结果如下:

4.2数据分析

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

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

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

英国购买商品数远远大于其他国家,这可能由于公司位于英国,英国是该公司商品销售的主要对象。

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

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

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

可以看出:英国的交易额最大,由于购买数最多,交易额理所当然也是最大。除此之外,荷兰,爱尔兰,德国,法国也是主要消费国家,需要重点关注。

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

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

销量最高的是12月份,其次是1月份,大部分销量较佳集中在下半年,这是由于该产品是礼品,在下半年节日较多,加上促销优惠,销量比上半年月份多。

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

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

客单价即平均交易金额,是指平均每个客户交易金额,客单价等于成交金额/成交用户数。

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

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

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

用户消费行为分析主要从用户消费次数,用户消费金额,用户购买产品数量这三个维度进行分析。

 5.总结

通过以上计算可看出:用户平均消费4次,有的客户甚至消费高达210次,是产品的忠诚客户。

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

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

转载|CSDN博客

END

往期精选

使用pandas做数据可视化

代码也浪漫:用Python放一场烟花秀!

记一次 Python Web 接口优化

整理了25个Pandas实用技巧

Python 四大数据类型总结

关注雷课        

学习干货   

搜索