本分析資料集採用kaggle的e-commerce data。
資料分析思路:kaggle-customer segmentation
資料匯入詳見:資料分析初階——資料匯入
資料初步處理詳見:資料分析初階——資料初步處理
在進行資料分析前,需要先對各個欄位做簡單的了解。
invoiceno:訂單號。如果在單號前有加c,意思是這個訂單是乙個取消訂單。
stockcode:商品**。如果是同一商品則是唯一的。
description:商品描述。
quantity:訂單商品數量。
invoicedate:訂單日期。
unitprice:商品單位**。
customerid:客戶id。
country:客戶所在國家。
select country,count(*) from ecom.data
group by country
對country計數,結果如下:
表1 訂單國籍分布計數(部分)
country
united kingdom
germany
france
eire
spain
netherlands
belgium
switzerland
...count
361878
9495
8491
7485
2533
2371
2069
1877
...percentage
88.95%
2.33%
2.09%
1.84%
0.62%
0.58%
0.51%
0.46%
...由上可知,英國的訂單佔比最高,其次是德國。
根據欄位的描述,我們可以通過計數來計算產品、顧客和總訂單數。
select
count(distinct stockcode) as products ,
count(distinct invoiceno) as transactions ,
count(distinct customerid) as customers
from ecom.data
products
transactions
customers
count
3684
22190
4372
由上可知,本資料集包括產品3684項,顧客4372名,一共22190個訂單。
接下來我們以顧客和訂單號進行分組並排序。
select
customerid,
invoiceno,
count(invoicedate) as 'number of products'
from ecom.data
group by customerid , invoiceno
order by customerid
我們能得出以下結果。
customerid
invoiceno
number of products
12346
541431
112346
c541433
112347
537626
3112347
542237
2912347
549222
24...
......
從上面我們能看出:
(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
結果如下:
customerid
invoiceno
number of products
cancel number of products
12346
54143110
12346
c54143311
12347
537626310
12347
542237290
12347
549222240
12352
c54738877
......
......
然後我們對其進行彙總計算:
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 invoice
count cancel number of invoice
percentage
3654
22190
16.4669
由此可知,大約有16.5%的訂單是被取消掉的。
如果要使用有條件的count函式,我們一般採取以下三種方法:(原理詳見:mysql中使用count加條件統計 ——alberts)
select count(字段 條件 or null) from **;
select
count(if(字段 條件, 1, null))
from **;
select
count(case when 字段 條件
then 1
end)
from **
資料分析 資料探索 EDA
eda的定義 對已有的資料 特別是調查或觀察得來的原始資料 在盡量少的先驗假定下進行探索,通過作圖 製表 方程擬合 計算特徵量等手段探索資料的結構和規律的一種資料分析方法,它集中於檢查模型擬合和假設檢驗所需的假設,以及處理缺少的值,並根據需要進行變數轉換。資料屬性分布分析 概率密度分析 資料分布 資...
Python資料分析專題 資料探索分析
資料探索 2.統計分析 抽樣2.2 點估計與置信區間 2.3 概率分布 2.4 檢驗 2.5 卡方檢驗 2.6 anova 2.7 ab測試 2.8 態分布 按資料型別選分析方式 3.估計 se.mean axis 1 求行的均值 se.median plt.vlines se.mean ymin ...
1 資料分析
資料分析 1.資料分析定義 2.資料分析的作用 3.資料分析的基本步驟 3.1明確分析目的和思路 3.2資料收集 3.3資料處理 3.4資料分析 過程中的重點,必須確保正確 3.5資料展現 3.6報告撰寫 4.資料分析行業前景 4.1蓬勃發展的趨勢 4.2資料分析師職業要求 5.隨著科技發展帶來的挑...