当excel不够用时,如何利用Access进行数据分析?
數(shù)據(jù)量太大,Excel拖不動怎么辦?還有其他能取代Excel但易上手的工具么?
這個(gè)問題真是撞到槍口上了,我有收到不少的類似提問,今天就來統(tǒng)一解答一下。
大數(shù)據(jù)量做報(bào)表或數(shù)據(jù)分析的方案
-
百兆以上,幾十萬行excel的數(shù)據(jù)量:數(shù)據(jù)庫ACCESS+SQL
-
數(shù)據(jù)若不是達(dá)到億萬級別,直接用BI工具分析
-
再大,就不是爾等表哥表姐,數(shù)據(jù)分析師能解決的了。
鑒于大家都有一般日常都用Excel,本文將要主要講第一類方案,出一篇完整教程,通用且實(shí)用,用到的工具是ACCESS數(shù)據(jù)庫。
關(guān)于ACCESS,它Excel的同宗兄弟,同屬微軟Office一門,上手不難,一周搞定基本操作。
它可以解決做數(shù)據(jù)運(yùn)營的小伙伴們的如下抱怨:
業(yè)務(wù)上要處理的Excel數(shù)據(jù)表格存儲量越來越大,超過50MB就慢如蝸牛,這時(shí)表格里要是再多個(gè)IF、VLOOKUP函數(shù)什么的,電腦就直接罷工了;要是遇到向下面這樣大小的Excel表格,服務(wù)器級別的電腦都吃不消,更別談進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)分析了。
數(shù)據(jù)量超大的excel表格連打開都難
遇到上圖這么大存儲量的Excel數(shù)據(jù)表格,卡是必然的,死不死機(jī)就看人品了。那遇到這樣的難題,有沒有能處理大存儲量文件,同時(shí)又操作簡單、容易上手的數(shù)據(jù)分析軟件呢?
答案是當(dāng)然是:YES,而且還是Excel的同宗兄弟,同屬微軟Office派系的ACCESS。
以下內(nèi)容將以運(yùn)營中常見的一個(gè)分析項(xiàng)目為案例,力求讓做數(shù)據(jù)分析的小伙伴們對ACCESS有一個(gè)基本的了解,從而找到分析大批量數(shù)據(jù)的思路和方法。
下圖是本文使用ACCESS對原始表格進(jìn)行數(shù)據(jù)分析的4大目標(biāo)。
這里先就ACCESS的基本情況說兩句,然后用一個(gè)實(shí)際案例進(jìn)行數(shù)據(jù)分析的實(shí)操。
一、ACCESS數(shù)據(jù)庫簡介
1.ACCESS和SQL語句的基本概念
Access,全稱“Microsoft Office Access”,是微軟OFFICE中的一個(gè)成員, 由微軟發(fā)布的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它結(jié)合了 Microsoft Jet Database Engine 和圖形用戶界面兩項(xiàng)特點(diǎn),是 Microsoft Office 的系統(tǒng)程序之一。(來自百度百科)
提到ACCESS,就不得不提SQL,只有掌握了SQL,才能將ACCESS的功能發(fā)揮到極致。SQL的全稱是“結(jié)構(gòu)化查詢語言”(Structured Query Language),是一種聲明式語言。
首先要把這個(gè)概念記在腦中:“聲明”。跟大家以往所知的編程語言相比, SQL 語言是為計(jì)算機(jī)聲明了一個(gè)你想從原始數(shù)據(jù)中獲得什么樣的結(jié)果的一個(gè)范例,而不是告訴計(jì)算機(jī)如何能夠得到結(jié)果。換言之,SQL的真正核心在于對表的引用。
SELECT first_name, last_name FROM employees WHERE age> =25
上面的例子很容易理解,我們不用關(guān)心這些雇員記錄從哪里來,我們所需要的只是那些年齡大于等于25歲的雇員的數(shù)據(jù)(age> =25)。
2.ACCESS的優(yōu)勢
ACCESS最明顯的好處在于,它可以在不用掌握很高深編程語言的條件下,處理Excel所不能承載的大存儲量的數(shù)據(jù)原始文件,速度奇快,且易學(xué)易用。
3. ACCESS的常用語句
下表是ACCESS使用過程中常用的一些SQL語句,理解起來不算困難。
ACCESS數(shù)據(jù)庫常用的SQL語句標(biāo)題要想學(xué)好數(shù)據(jù)分析工具,最重要的是用實(shí)際案例來調(diào)動各種零碎的工具使用知識點(diǎn),在歷經(jīng)完整的案例分析后,短時(shí)間內(nèi)就可以掌握這些工具的操作方法。
簡單介紹完了ACCESS和SQL語句后,接下來開始ACCESS數(shù)據(jù)分析實(shí)操吧!
二、ACCESS數(shù)據(jù)分析實(shí)操
1.數(shù)據(jù)導(dǎo)入
下表是本文進(jìn)行ACCESS數(shù)據(jù)分析的原始文件,數(shù)據(jù)量近230MB,Excel打開需等待好幾分鐘,而且得看電腦心情…出于商業(yè)保密的目的,本文將使用其中的部分?jǐn)?shù)據(jù)進(jìn)行分析實(shí)操,且做一定處理。
標(biāo)后臺導(dǎo)出的原始數(shù)據(jù)題先將Excel中的文件導(dǎo)入ACCESS中,按下圖箭頭路徑所示:
導(dǎo)入excel原始數(shù)據(jù)文件標(biāo)題按上述步驟操作后,自動生成主鍵(即ID),得到如下結(jié)果:
Excel原始數(shù)據(jù)文件導(dǎo)入到ACCESS中標(biāo)題2.用戶下單時(shí)間段分析
進(jìn)行下單時(shí)間段的分析,需要將用戶下單的時(shí)間轉(zhuǎn)化為小時(shí)“時(shí)點(diǎn)”,這里使用的SQL語句是format,功能是對所選字段進(jìn)行格式設(shè)定,語法為:
format(引用字段,"數(shù)據(jù)格式")
其中,“數(shù)據(jù)格式”在時(shí)間上一般選用H(小時(shí))、D(天)、M(月)或Y(年)。
然后,再使用count函數(shù),將UserID進(jìn)行計(jì)數(shù),得到的結(jié)果即是訂單量。
注意,使用format和count之后,需要使用“AS”將其定義為新的字段,這里二者分別定義為“時(shí)段”和“訂單量”。
下單時(shí)間段分析操作步驟在“創(chuàng)建”里新建一個(gè)“查詢設(shè)計(jì)”,點(diǎn)開右下角的“SQL”,然后在SQL會話框輸入如下語句:
SELECT format(下單時(shí)間,"h") AS 時(shí)段, count(UserID) AS 訂單量
FROM 元數(shù)據(jù)
GROUP BY format(下單時(shí)間,"h");
然后,點(diǎn)擊“設(shè)計(jì)”下的“運(yùn)行”,得到如下結(jié)果:
各個(gè)時(shí)段的訂單量分布情況舉個(gè)例子來說明上面的結(jié)果該如何解讀,假如某位顧客是12:23下單,則該時(shí)間點(diǎn)歸到“12”這個(gè)時(shí)段里了,而“12”代表的是12~13時(shí)這個(gè)時(shí)間段。可以根據(jù)“運(yùn)營實(shí)操|如何利用微信后臺數(shù)據(jù)優(yōu)化微信運(yùn)營”這篇文章里的方法利用函數(shù)將其變?yōu)闀r(shí)段顯示。
3.付款區(qū)間訂單量分布情況分析
計(jì)算付款區(qū)間需要用到一個(gè)比較牛X的函數(shù)--- Switch,它是按順序計(jì)算一系列的表達(dá)式,如果某一表達(dá)式成立,則返回其隨后的值。
語法:
SWITCH(條件1,結(jié)果1,條件2,結(jié)果2,條件3,結(jié)果3,…,條件N,結(jié)果N)
條件1、條件2、條件3:表示要計(jì)算的表達(dá)式,條件1成立的話,返回值結(jié)果1,條件2成立的話,返回值結(jié)果2,依次類推。
按照上述的方法,在“創(chuàng)建”里新建一個(gè)“查詢設(shè)計(jì)”,點(diǎn)開右下角的“SQL”后,輸入如下語句:
SELECT userID, 付款額, switch(付款額<=10,"1~10元",
付款額<=20,"11~20元",
付款額<=50,"21~50元",
付款額<=80,"51~80元",
付款額<=150,"81~150元",
付款額>150,"151~220元")AS 消費(fèi)區(qū)間
FROM 元數(shù)據(jù);
點(diǎn)擊“運(yùn)行”后,得到如下結(jié)果:
標(biāo)用戶單次下單的消費(fèi)金額所對應(yīng)的消費(fèi)區(qū)間題此時(shí),關(guān)于消費(fèi)區(qū)間的數(shù)據(jù)處理還未結(jié)束,因?yàn)檫@是每一條下單記錄的付款額所對應(yīng)的消費(fèi)區(qū)間。我們接下來要做的是類似于excel中數(shù)據(jù)透視表的做法,將消費(fèi)區(qū)間放在第一列,從而對每個(gè)消費(fèi)區(qū)間有多少訂單量進(jìn)行統(tǒng)計(jì)。
所以呢,跟上面一樣,得新建一個(gè)查詢了,名稱改為“付款區(qū)間訂單量統(tǒng)計(jì)”。
這里需要輸入的SQL語句是:
SELECT 消費(fèi)區(qū)間, count(UserID) AS 訂單數(shù)量
FROM 付款區(qū)間
GROUP BY 消費(fèi)區(qū)間;
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
各消費(fèi)區(qū)間訂單量分布情況然后,將上述數(shù)據(jù)復(fù)制到Excel表格里,制成如下的百分比扇形圖,可以直觀的分析出每個(gè)消費(fèi)區(qū)間的訂單量占比情況,進(jìn)而看到整體的用戶消費(fèi)水平如何,對這段時(shí)間內(nèi)的運(yùn)營進(jìn)行合理評估。
各消費(fèi)區(qū)間訂單量占比扇形圖?
4.各區(qū)域訂單量、用戶數(shù)量及銷售額分析
(1)各區(qū)域用戶數(shù)量
這個(gè)就有點(diǎn)小麻煩了,用戶數(shù)量用“userID”的計(jì)數(shù)間接計(jì)算出來,但是由于絕大部分的用戶下單次數(shù)不小于2次,所以直接計(jì)數(shù)的話,得出來的結(jié)果就是訂單量了。鑒于此種情況,我們得換個(gè)思路,先做出一個(gè)不重復(fù)的用戶下單信息表,也就是每個(gè)用戶ID下單的頻次表。
新建一個(gè)“查詢設(shè)計(jì)”,命名為“用戶消費(fèi)頻次”。在SQL對話框里輸入如下語句:
SELECT UserID, COUNT(UserID) AS 消費(fèi)次數(shù), 區(qū)域
FROM 元數(shù)據(jù)
GROUP BY UserID, 區(qū)域;
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
用戶下單頻次表這樣,我們就可以以這張用戶消費(fèi)頻次表作為跳板,在再次新建的表里計(jì)算出每個(gè)區(qū)域的用戶數(shù)量咯。
新建一個(gè)“查詢設(shè)計(jì)”,命名為“各區(qū)域用戶數(shù)”。在SQL對話框里輸入如下語句:
SELECT 區(qū)域, count(UserID) AS 總用戶數(shù)
FROM 用戶消費(fèi)頻次
GROUP BY 區(qū)域;
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
各區(qū)域用戶數(shù)量(2)各區(qū)域訂單量、消費(fèi)金額狀況
新建一個(gè)“查詢設(shè)計(jì)”,命名為“各區(qū)域訂單情況”。在SQL對話框里輸入如下語句:
SELECT 區(qū)域, count(UserID) AS 訂單總數(shù), sum(付款額) AS 總金額, avg(付款額)AS 平均消費(fèi)金額
FROM 元數(shù)據(jù)
GROUP BY 區(qū)域;
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
各區(qū)域訂單量、消費(fèi)金額狀況再將上面的各區(qū)域用戶數(shù)量整合到這張表里,就得到了關(guān)于這三個(gè)區(qū)域完整的運(yùn)營情況概覽表。見下表:
各區(qū)域運(yùn)營情況概覽5.用戶價(jià)值分析
這里的用戶價(jià)值分析基于RFM模型,不過對其進(jìn)行了進(jìn)一步的完善,在原先“累計(jì)消費(fèi)金額”的基礎(chǔ)上,引入了“最低消費(fèi)金額”、“最高消費(fèi)金額”和“平均消費(fèi)金額”這三個(gè)指標(biāo),力求全面的反映消費(fèi)者的購買力。
新建一個(gè)“查詢設(shè)計(jì)”,命名為“用戶消費(fèi)情況”。在SQL對話框里輸入如下語句:
SELECT userID, min(付款額) AS 最低消費(fèi)金額,
max(付款額) AS 最高消費(fèi)金額,
avg(付款額) AS 平均消費(fèi)金額,
sum(付款額) AS 消費(fèi)總金額,
count(付款額) AS 消費(fèi)頻次,
datediff("d",max(下單日期),#2015-9-15#) AS 最近一次消費(fèi)距離今天天數(shù)
FROM 元數(shù)據(jù)
GROUP BY userID;
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
用戶價(jià)值分析表得到該表后,可以對其進(jìn)行聚類分析,按照R、F、M這三個(gè)維度對用戶進(jìn)行分類,詳情可參看“【數(shù)據(jù)運(yùn)營實(shí)操】如何運(yùn)用數(shù)據(jù)分析對某個(gè)試運(yùn)營項(xiàng)目進(jìn)行“無死角”的復(fù)盤?”這篇文章。
最后,我們還可以得出這三個(gè)區(qū)域總的訂單情況和銷售金額情況:
新建一個(gè)“查詢設(shè)計(jì)”,命名為“各區(qū)域銷售總覽”。在SQL對話框里輸入如下語句:
SELECT count(userID) AS 訂單總數(shù),
sum(付款額) AS 付款總額,
avg(付款額) AS 平均訂單金額
FROM 元數(shù)據(jù);
點(diǎn)擊“運(yùn)行”后,得到的結(jié)果顯示如下:
三個(gè)區(qū)域的銷售情況總覽?
結(jié)語
由上面的案例可以看出,如果SQL語句用得稍微熟練的話,ACCESS處理數(shù)據(jù)不會比Excel遜色,而且處理大批量數(shù)據(jù)正是它的強(qiáng)項(xiàng)。
總結(jié)
以上是生活随笔為你收集整理的当excel不够用时,如何利用Access进行数据分析?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts自定义省份地图及map上的
- 下一篇: 《最强大脑》之四色定理—— GIS 无处