数据分析初阶——各变量初步探索(1)

博客介绍了在数据分析的初期阶段,对Kaggle E-commerce数据集中订单国家分布、顾客与产品数量进行了探索。发现英国订单最多,接着是德国。数据包含3684种产品,4372位顾客,22190个订单。约16.5%的订单被取消。文章还提到了如何使用有条件COUNT函数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本分析数据集采用Kaggle的E-commerce data。

数据分析思路:Kaggle-Customer Segmentation

数据导入详见:数据分析初阶——数据导入

数据初步处理详见:数据分析初阶——数据初步处理


1. 各变量初步探索

在进行数据分析前,需要先对各个字段做简单的了解。

InvoiceNo订单号。如果在单号前有加C,意思是这个订单是一个取消订单。

StockCode:商品代码。如果是同一商品则是唯一的。

Description:商品描述。

Quantity:订单商品数量。

InvoiceDate:订单日期。

UnitPrice:商品单位价格。

CustomerID:客户ID。

Country:客户所在国家。

 

1.1 国家

SELECT Country,count(*) FROM ecom.data
GROUP BY Country

对Country计数,结果如下:

表1 订单国籍分布计数(部分)

CountryUnited KingdomGermanyFranceEIRESpainNetherlandsBelgiumSwitzerland...
Count3618789495849174852533237120691877...
Percentage88.95%2.33%2.09%1.84%0.62%0.58%0.51%0.46%...

由上可知,英国的订单占比最高,其次是德国。

 

1.2 顾客和产品

根据字段的描述,我们可以通过计数来计算产品、顾客和总订单数。

SELECT
	count(DISTINCT StockCode) AS products ,
	count(DISTINCT InvoiceNo) AS transactions ,
	count(DISTINCT CustomerID) AS customers
FROM ecom.data
 productstransactionscustomers
count3684221904372

由上可知,本数据集包括产品3684项,顾客4372名,一共22190个订单。

接下来我们以顾客和订单号进行分组并排序。

SELECT
	CustomerID,
    InvoiceNo,
	count(InvoiceDate) AS 'Number of products'
FROM ecom.data
GROUP BY CustomerID , InvoiceNo
ORDER BY CustomerID

我们能得出以下结果。

CustomerIDInvoiceNoNumber of products
123465414311
12346C5414331
1234753762631
1234754223729
1234754922224
.........

从上面我们能看出:

(1)有顾客是只买一次商品的;

(2)其他顾客一般都买超过10次的商品。

 

1.2.1 关于取消的订单

我们先计算出取消订单的基本情况。

SELECT
	CustomerID,
	InvoiceNo,
	count(InvoiceDate) AS 'Number of products' , 
	CASE WHEN InvoiceNo LIKE 'C%'
		THEN count(InvoiceDate)
		ELSE 0
		END AS 'Cancel Number of products'
FROM ecom.data
GROUP BY CustomerID , InvoiceNo
ORDER BY CustomerID

结果如下:

CustomerIDInvoiceNoNumber of productsCancel Number of products
1234654143110
12346C54143311
12347537626310
12347542237290
12347549222240
12352C54738877
............

然后我们对其进行汇总计算:

SELECT 
count(CNOP >= 1 OR null) AS 'Count Cancel Number of Invoice',
count(NOP) AS 'Count Number of Invoice',
(count(CNOP >= 1 OR null)/count(NOP))*100 AS Percentage
FROM(
	SELECT
		CustomerID,
		InvoiceNo,
		count(InvoiceDate) AS 'NOP' , 
		CASE WHEN InvoiceNo LIKE 'C%'
			THEN count(InvoiceDate)
			ELSE 0
			END AS 'CNOP'
	FROM ecom.data
	GROUP BY CustomerID , InvoiceNo
	ORDER BY CustomerID) t

可得:

Count Number of InvoiceCount Cancel Number of InvoicePercentage
36542219016.4669

由此可知,大约有16.5%的订单是被取消掉的。

 

关于如何使用有条件的COUNT

如果要使用有条件的count函数,我们一般采取以下三种方法:(原理详见:Mysql中使用count加条件统计 ——AlbertS

select count(字段 条件 or null) from 表格;
select
count(if(字段 条件, 1, null))
from 表格;
select
count(case when 字段 条件 
    then 1 
    end)
from 表格

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值