簡單數據處理—實踐案例分析
某公司為某行業內國內第一家工業4.0公司。主要針對客戶製造個性定製化可穿戴設置,通過門店採集客戶信息,然後將信息傳回工廠生產,然後工廠根據客戶的個人信息進行定製化生產,然後直接發給客戶。通過獲取某公司的銷售數據進行分析,分析過程如下
1.數據分析指標
指標一:總銷售額
指標二:銷售均價及銷售中位數
指標三:某公司的銷售趨勢
指標四:每個門店的銷售趨勢
2.數據預處理
2.1數據讀取
> readpath<-"D:銷售訂單報表.xlsx"
> library("openxlsx")
> saledata<-read.xlsx(readpath,"訂單明細報表記錄")
> View(saledata)
2.2列名的更換
>names(saledata)<-c("number","store","date","salesbatchnumber","salesNumber","standprice","discount","actualprice")
2.3實際銷售額小於一百的為贈送客戶商品,因此需要刪除
> saledata<-saledata[!saledata$actualprice<=100,]#刪除實際銷售額小於100的數據
> View(saledata)
2.3日期類型轉換
> class(saledata$date)
[1] "character"
>saledata$date<-as.Date(saledata$date)
> class(saledata$date)
[1] "Date"
2.4按照日期排序
> saledata<-saledata[order(saledata$date,decreasing= FALSE),]
3.問題解決
3.1總銷售額;
總銷售額=sum[實際價格]
> class(saledata$actualprice)
[1] "numeric"
> sumsalse<-sum(saledata$actualprice)
> sumsalse
[1] 6850900
因此該公司總銷售額為6850900
3.2平均售價、售價中位數
由於該商品為個性定製商品,因此數量均為1;
> summary(saledata$actualprice)
Min. 1st Qu. Median Mean 3rd Qu. Max.
118 1380 2464 3230 4260 53600
因此平均售價為3230,售價中位數為2464
第二種方法:平均售價=銷售總額/銷售筆數
> sumsalse<-sum(saledata$actualprice)
> sumsalse
[1] 6850900
> averageprice<-sumsalse/nrow(saledata)#商品平均售價=實際銷售價格/銷售個數
> averageprice
[1] 3230.033
3.3某公司月銷售趨勢
>monthsale<-tapply(saledata$actualprice,format(saledata$date,"%Y-%m"),sum)#按月求和
> monthsale
2016-08 2016-09 2016-10 2016-11 2016-12 2017-01
1617168.4 1543164.8 1528573.2 712420.4 555476.0 894097.1
>monthsale<-as.data.frame.table(monthsale)
>names(monthsale)<-c("month","monthsales")
> monthsale
month monthsales
1 2016-08 1617168.4
2 2016-09 1543164.8
3 2016-10 1528573.2
4 2016-11 712420.4
5 2016-12 555476.0
6 2017-01 894097.1
>monthsale$month<-as.character(monthsale$month)
>monthsale$monthnumber<-c(1:nrow(monthsale))
> plot(monthsale$monthnumber,monthsale$monthsales,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司銷售額分析圖",
+ xaxt="n",
+ col="blue",
+ type="b")
> axis(1,at=monthsale$monthnumber,labels=monthsale$month,cex.axis=1.5)
3.2門店銷售趨勢
storemonthsale<-tapply(saledata$actualprice,list(format(saledata$date,"%Y-%m"),saledata$store),sum)#按照門店和日期分組
> storemonthsale
A門店 B門店 C門店 D門店 E門店 F門店 G門店
2016-08 539208.8 385424 310453.1 127095.4182667 NA 72320.00
2016-09 477167.0 388032 402961.8 115736.0127678 12480 19110.00
2016-10 578738.0 199018 317453.2 225856.0113218 63060 31229.98
2016-11 400354.0 27588 87997.4 86737.0 39762 20597 49385.00
2016-12 201467.0 NA 135234.0 114769.0 70654 18071 15281.00
2017-01 548265.0 NA 128556.1 136739.0 57150 20532 2855.00
>storemonthsale<-as.data.frame.table(storemonthsale)
> storemonthsale
Var1 Var2 Freq
1 2016-08 A門店 539208.81
2 2016-09 A門店 477167.00
3 2016-10 A門店 578738.00
4 2016-11 A門店 400354.00
5 2016-12 A門店 201467.00
6 2017-01 A門店 548265.00
7 2016-08 B門店 385424.00
8 2016-09 B門店 388032.00
9 2016-10 B門店 199018.00
10 2016-11 B門店 27588.00
11 2016-12 B門店 NA
12 2017-01 B門店 NA
13 2016-08 C門店 310453.14
14 2016-09 C門店 402961.80
15 2016-10 C門店 317453.20
16 2016-11 C門店 87997.40
17 2016-12 C門店 135234.00
18 2017-01 C門店 128556.10
19 2016-08 D門店 127095.40
20 2016-09 D門店 115736.00
21 2016-10 D門店 225856.00
22 2016-11 D門店 86737.00
23 2016-12 D門店 114769.00
24 2017-01 D門店 136739.00
25 2016-08 E門店 182667.00
26 2016-09 E門店 127678.00
27 2016-10 E門店 113218.00
28 2016-11 E門店 39762.00
29 2016-12 E門店 70654.00
30 2017-01 E門店 57150.00
31 2016-08 F門店 NA
32 2016-09 F門店 12480.00
33 2016-10 F門店 63060.00
34 2016-11 F門店 20597.00
35 2016-12 F門店 18071.00
36 2017-01 F門店 20532.00
37 2016-08 G門店 72320.00
38 2016-09 G門店 19110.00
39 2016-10 G門店 31229.98
40 2016-11 G門店 49385.00
41 2016-12 G門店 15281.00
42 2017-01 G門店 2855.00
>names(storemonthsale)<-c("month","store","totalsale")
> storemonthsale
month store totalsale
1 2016-08 A門店 539208.81
2 2016-09 A門店 477167.00
3 2016-10 A門店 578738.00
4 2016-11 A門店 400354.00
5 2016-12 A門店 201467.00
6 2017-01 A門店 548265.00
7 2016-08 B門店 385424.00
8 2016-09 B門店 388032.00
9 2016-10 B門店 199018.00
10 2016-11 B門店 27588.00
11 2016-12 B門店 NA
12 2017-01 B門店 NA
13 2016-08 C門店 310453.14
14 2016-09 C門店 402961.80
15 2016-10 C門店 317453.20
16 2016-11 C門店 87997.40
17 2016-12 C門店 135234.00
18 2017-01 C門店 128556.10
19 2016-08 D門店 127095.40
20 2016-09 D門店 115736.00
21 2016-10 D門店 225856.00
22 2016-11 D門店 86737.00
23 2016-12 D門店 114769.00
24 2017-01 D門店 136739.00
25 2016-08 E門店 182667.00
26 2016-09 E門店 127678.00
27 2016-10 E門店 113218.00
28 2016-11 E門店 39762.00
29 2016-12 E門店 70654.00
30 2017-01 E門店 57150.00
31 2016-08 F門店 NA
32 2016-09 F門店 12480.00
33 2016-10 F門店 63060.00
34 2016-11 F門店 20597.00
35 2016-12 F門店 18071.00
36 2017-01 F門店 20532.00
37 2016-08 G門店 72320.00
38 2016-09 G門店 19110.00
39 2016-10 G門店 31229.98
40 2016-11 G門店 49385.00
41 2016-12 G門店 15281.00
42 2017-01 G門店 2855.00
> storemonthsale$monthnumber<-c(1:6)
> storemonthsale
month store totalsale monthnumber
1 2016-08 A門店 539208.81 1
2 2016-09 A門店 477167.00 2
3 2016-10 A門店 578738.00 3
4 2016-11 A門店 400354.00 4
5 2016-12 A門店 201467.00 5
6 2017-01 A門店 548265.00 6
7 2016-08 B門店385424.00 1
8 2016-09 B門店388032.00 2
9 2016-10 B門店199018.00 3
10 2016-11 B門店 27588.00 4
11 2016-12 B門店 NA 5
12 2017-01 B門店 NA 6
13 2016-08 C門店 310453.14 1
14 2016-09 C門店 402961.80 2
15 2016-10 C門店 317453.20 3
16 2016-11 C門店 87997.40 4
17 2016-12 C門店 135234.00 5
18 2017-01 C門店 128556.10 6
19 2016-08 D門店 127095.40 1
20 2016-09 D門店 115736.00 2
21 2016-10 D門店 225856.00 3
22 2016-11 D門店 86737.00 4
23 2016-12 D門店 114769.00 5
24 2017-01 D門店 136739.00 6
25 2016-08 E門店182667.00 1
26 2016-09 E門店 127678.00 2
27 2016-10 E門店 113218.00 3
28 2016-11 E門店 39762.00 4
29 2016-12 E門店 70654.00 5
30 2017-01 E門店 57150.00 6
31 2016-08 F門店 NA 1
32 2016-09 F門店 12480.00 2
33 2016-10 F門店 63060.00 3
34 2016-11 F門店 20597.00 4
35 2016-12 F門店 18071.00 5
36 2017-01 F門店 20532.00 6
37 2016-08 G門店 72320.00 1
38 2016-09 G門店 19110.00 2
39 2016-10 G門店 31229.98 3
40 2016-11 G門店 49385.00 4
41 2016-12 G門店 15281.00 5
42 2017-01 G門店 2855.00 6
>storemonthsale[is.na(storemonthsale)]=0#將Na賦值為0
>storemonthsale$store<-as.character(storemonthsale$store)
> class(storemonthsale$store)
[1] "character"
>Amonthsale<-storemonthsale[which(storemonthsale$store=="A門店 "),]#A門店銷售數據
> Amonthsale
month store totalsale monthnumber
1 2016-08 A門店 539208.8 1
2 2016-09 A門店 477167.0 2
3 2016-10 A門店 578738.0 3
4 2016-11 A門店 400354.0 4
5 2016-12 A門店 201467.0 5
6 2017-01 A門店 548265.0 6
>Bmonthsale<-subset(storemonthsale,storemonthsale$store=="B門店")#B門店銷售數據
> Bmonthsale
month store totalsale monthnumber
7 2016-08 B門店 385424 1
8 2016-09 B門店 388032 2
9 2016-10 B門店 199018 3
10 2016-11 B門店 27588 4
11 2016-12 B門店 0 5
12 2017-01 B門店 0 6
> Cmonthsale<-subset(storemonthsale,storemonthsale$store=="C門店")#C門店銷售數據
> Cmonthsale
month store totalsale monthnumber
13 2016-08 C門店 310453.1 1
14 2016-09 C門店 402961.8 2
15 2016-10 C門店 317453.2 3
16 2016-11 C門店 87997.4 4
17 2016-12 C門店 135234.0 5
18 2017-01 C門店 128556.1 6
>Dmonthsale<-subset(storemonthsale,storemonthsale$store=="D門店")#D門店銷售數據
> Dmonthsale
month store totalsale monthnumber
19 2016-08 D門店 127095.4 1
20 2016-09 D門店 115736.0 2
21 2016-10 D門店 225856.0 3
22 2016-11 D門店 86737.0 4
23 2016-12 D門店 114769.0 5
24 2017-01 D門店 136739.0 6
>Emonthsale<-subset(storemonthsale,storemonthsale$store=="E門店")#E門店銷售數據
> Emonthsale
month store totalsale monthnumber
25 2016-08 E門店 182667 1
26 2016-09 E門店 127678 2
27 2016-10 E門店 113218 3
28 2016-11 E門店 39762 4
29 2016-12 E門店 70654 5
30 2017-01 E門店 57150 6
>Fmonthsale<-subset(storemonthsale,storemonthsale$store=="F門店")#F門店銷售數據
> Fmonthsale
month store totalsale monthnumber
31 2016-08 F門店 0 1
32 2016-09 F門店 12480 2
33 2016-10 F門店 63060 3
34 2016-11 F門店 20597 4
35 2016-12 F門店 18071 5
36 2017-01 F門店 20532 6
>Gmonthsale<-subset(storemonthsale,storemonthsale$store=="G門店")#G門店銷售數據
> Gmonthsale
month store totalsale monthnumber
37 2016-08 G門店 72320.00 1
38 2016-09 G門店 19110.00 2
39 2016-10 G門店 31229.98 3
40 2016-11 G門店 49385.00 4
41 2016-12 G門店 15281.00 5
42 2017-01 G門店 2855.00 6
>plot(Amonthsale$monthnumber,Amonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司A門店銷售額分析圖",
+ xaxt="n",
+ col="blue",type = "b")
>axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
>plot(Bmonthsale$monthnumber,Bmonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司B門店銷售額分析圖",
+ xaxt="n",
+ col="blue",type = "b")
>axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
>plot(Cmonthsale$monthnumber,Cmonthsale$totalsale,+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司C門店銷售額分析圖",
+ xaxt="n",
+ col="blue",type = "b")
>axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
>plot(Dmonthsale$monthnumber,Dmonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司D門店銷售額分析圖",
+ xaxt="n",
+ col="blue",type ="b")
>axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
>plot(Emonthsale$monthnumber,Emonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司E門店銷售額分析圖",
+ xaxt="n",
+ col="blue",type = "b")
>axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
> plot(Fmonthsale$monthnumber,Fmonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司F門店銷售額分析圖",
+ xaxt="n",
+ col="blue",
+ type = "b")
> axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
> plot(Gmonthsale$monthnumber,Gmonthsale$totalsale,
+ xlab = "時間(年份-月份)",
+ ylab="銷售額",
+ main="某公司G門店銷售額分析圖",
+ xaxt="n",
+ col="blue",
+ type = "b")
> axis(1,at=Amonthsale$monthnumber,labels=Amonthsale$month,cex.axis=1.5)
推薦閱讀:
※2017年數據分析實踐具體計劃
※從頭學習大數據培訓課程 NOSQL 資料庫 hbase(三)hbase 的 filter 用法,hbase 數據的批量導入
※G20遐想:馬雲、李彥宏、孫丕恕等大咖們的數據觀
※第三章:大數據技術在配電網中的應用(國內外現狀)
※大數據計數原理1+0=1這你都不會算(三)No.51