當excel不夠用時,如何利用Access進行數據分析?

知乎上有不少這樣的問題:

  1. Excel經常卡死,都是數據統計,請問如何減負?
  2. 基礎數據表3萬多行,其他表要抓取該表數據,函數卻無法運算?
  3. 5萬多行的數據用Excel做地圖經常卡死,除了換電腦還有什麼好方法?

這些都很常見,隨著數據積攢得越多,並且由於Excel本身和你電腦配置的限制,Excel處理和分析起大數據量來就捉襟見肘了,需要很好的工具配合減負或直接替代。

這裡我給的方案是:

大數據量做報表或數據分析的方案

  • 百兆以上,10W+行excel的數據量:資料庫Access+SQL
  • 數據若不是達到億萬級別,直接用BI工具分析
  • 再大,就不是爾等表哥表姐,數據分析師能解決的了

鑒於大家日常都習慣用Excel,本文將主要講第一類方案,用到的是微軟家的另一款工具——Access。處理大數據量時將Excel和Access兩者結合,利用Access快速查詢的優勢,將Access中的數據導出或複製到Excel,最重要的是它可以免費啊,而且上手不難!

一、關於ACCESS資料庫

Access是一種關係型資料庫,用於存放具有一定邏輯結構的數據,表與表之間存在關聯性。但是利用Excel查詢統計,除了要熟悉Access的操作,還要掌握SQL語言,它是調用數據/表的一種語言。

關於SQL,這裡不多展開,可以去W3school花上兩天學習下 SQL 教程 。

以下將以一個實際的分析項目為案例,力求讓大家對Access有一個基本了解,從而找到分析大批量數據的思路和方法。

二、數據分析實操

下圖是本文進行Access數據分析的原始數據源,原表格在excel裡面有7W多行,反正我的x1c操作起來一頓一頓的。這裡出於隱私對數據做了一點處理並截取了前十分之一。

基於以上數據,這裡想用Access對原始表格進行:

  • 細分客戶銷售利潤分布權重分析
  • 了解消費者單筆訂單額的消費分布
  • 分析各省市銷售利潤情況(數據地圖)

分析一:細分客戶銷售利潤分布權重分析

1.數據導入

首先先打開Access,並在表下面導入Excel數據表,這裡我用的都是ofice

2013版。

之後便會得到類似Excel的展示,此表就是作為元數據表。

2.寫SQL建立查詢

之後我們開始第一個查詢,統計出公司、消費者、小型企業這三個細分客戶各自的銷售額。

如上圖,在「創建」選項卡里新建一個「查詢設計」,然後取消顯示錶,右下角有一個「SQL」按鈕,點擊進入SQL對話框,輸入如下語句:

select 細分,sum(銷售額) as 總銷售額 ,sum(利潤) as 總利潤, Round(總利潤/總銷售額*100,4) &"%" as 利潤率from 訂單group by 細分

(SELECT是SQL中的查詢函數,這段話的意思就是:從訂單表中篩選出每個細分客戶的銷售額、利潤額,並且匯總起來,並計算每個的利潤率,利潤率這裡的一串公式表示數據按照百分位兩位數處理)

然後,點擊「設計」下的「運行」,得到如下結果:

最後複製到excel里處理美化一下。

這是一個比較簡單的查詢,在Excel表格中操作的話就是篩選匯總,但是如果你能很順暢的寫出那句SQL的話,運行起來就很是很快。

分析二:消費者單筆訂單額的消費分布

為了讓大家更好的理解,這裡將此分析分成兩步。首先我要匯總好每筆訂單的銷售額,然後按照1000的區間分成11類,並判斷每一筆訂單是在哪個區間,標記好,命名為「消費者訂單明細」

於是,按照分析一的操作,同樣新建一個查詢,並寫下如下SQL:

select 訂單ID, sum(銷售額) as 單筆訂單消費,switch(單筆訂單消費<=1000,"1~1000元",單筆訂單消費<=2000,"1000~2000元",單筆訂單消費<=3000,"2000~3000元",單筆訂單消費<=4000,"3000~4000元",單筆訂單消費<=5000,"4000~5000元",單筆訂單消費<=6000,"5000~6000元",單筆訂單消費<=7000,"6000~7000元",單筆訂單消費<=8000,"7000~8000元",單筆訂單消費<=9000,"8000~9000元",單筆訂單消費<=10000,"9000~10000元",單筆訂單消費>10000,"10000以上") as 消費區間from 訂單where 細分=消費者group by 訂單ID;

(這裡用到一個函數Switch,它是計算一組表達式列表的值,然後返回與表達式列表中最先為 True 的表達式所相關的 Variant 數值或表達式)

之後我要統計每個區間產生了多少筆訂單,各自佔據多少比重,來判斷消費者的消費水平如何。於是,有新建了一個查詢,在「消費者訂單明細」表的基礎上,並命名為「消費區間分許」

select 消費區間,count(訂單ID) as 訂單數from 消費者訂單明細group by 消費區間;

將上述數據貼到Excel裡面做了個餅圖(如下),是不是一目了然。

因為平均每筆訂單的消費額在4417元(消費者訂單明細表的數據貼到Excel裡面求平均得到),可以發現0~4000元的訂單佔據77%,低消費者占絕大多數。

分析3:各省市銷售額情況(數據地圖)

各省市的銷售額情況用Excel中的Power Map展示再合適不過了。

先將數據在Access里按照省市匯總。

select 城市,省,sum(銷售額) as 總銷售額form 訂單group by 城市,省

數據貼到Excel里選中打開Power MAP生成數據地圖。

關於數據地圖可參照:李啟方:怎麼在 Excel 上做數據地圖?

然後就有了如下效果:

總結

文章內容可能並不能直觀體現Access處理數據之快。這麼說吧,這份7w多行的數據在我電腦上打開花了將近1分鐘,加個篩選,電腦風扇轉的嗡嗡響中間還卡頓了2次。而放在Access里,花一分鐘寫了條查詢SQL,5秒內出結果,而且也少了等待的糟心事兒。

所以如果SQL用的熟練,Access處理大數據量簡直毫無壓力。


推薦閱讀:

AI+金融:學者、產業、趨勢全景報告
阿里巴巴大數據之路-數據計算層
破解癌症未解之謎,天元數據網基因大數據有話要說!
巨變將至!未來人類不分階層,只分物種

TAG:MicrosoftExcel | 數據分析 | 大數據 |