天天看點

作為資料分析師的你都有哪些常用工具

作者介紹:

程虹升,唯品會大資料部資料分析師,資料分析和挖掘實戰的踐行者,“51CEO”公衆号的營運者。

本文總結資料分析常用的軟體,以及推薦相應的學習參考資料。

1. Excel

常用操作有函數、可視化、資料透視表、VBA。

函數

作為資料分析師的你都有哪些常用工具

可視化

i.單元格

作為資料分析師的你都有哪些常用工具

ii.靜态圖

作為資料分析師的你都有哪些常用工具

iii.動态圖

即帶有控件(部分涉及VBA),可以選擇資料并動态展示結果的圖表,如果要用Excel來做業務資料的Dashboard,動态圖是很好的解決方案。

注:黃成明老師的《資料化管理》中的部分内容涉及如何用Excel建立業務營運工具。

資料透視表

Ctrl+A-->Alt-->D-->P-->F ——透視表“一條龍”操作應該是目前用到最多的快捷鍵組合了。

資料透視表是快速資料分析的不二之選,主要操作為分組計算,當然利用“切片”工具來動态展示資料也是可以的(資料透視表也可以用來做動态儀表盤)。

VBA

如果不想讓一個重複的枯燥的動作重複幾百上千次,那麼VBA程式設計是一個比較好的解決方案,程式設計的目的主要在于自動化和定制化,VBA程式設計相對簡單易學(甚至有的崗位就是專門開發VBA子產品的)。

薦書:

誰說菜鳥不會資料分析,張文霖;

點評:資料分析入門不錯的書,小蚊子老師的部落格上也有蠻多幹貨的;

Excel疑難千尋千解(套裝);

點評:ExcelHome,ExcelTip兩個論壇出的書品質都非常好,該套裝基本是“行走江湖”必備,涉及函數、VBA、操作、資料透視表等;

Excel圖表之道,劉萬祥;

點評:最早是從部落格上了解到劉老師(部落格為“劉萬祥ExcelPro”),那時才發現Excel也可以做出非常高大上的商務圖;

左手資料,右手圖表,徐軍泰;

點評:該書主要講動态圖,也就是可以有互動操作的圖表,第一份工作的時候參考此書做了一個半自動化的Excel監控模闆,受益頗多;

别怕,Excel VBA其實很簡單,Excel Home;

點評:結構清晰,行文有趣,有程式設計基礎的話,很容易讀懂。

2. SQL

資料一般可分為3類:

  • 結構化資料,e.g.平時見到的類似Excel表格那樣的資料;
  • 半結構化資料,存在父子節點的資料,e.g. XML, HTML, json格式的資料;
  • 非結構化資料,e.g. 文本、圖檔、音頻、視訊等;

資料分析“直接”使用的資料大多數都為結構化資料,這些資料通常都存在資料庫裡(SQLServer, Mysql, Oracle, Hive等),而要提取這些資料,SQL必不可少。

常見的SQL操作分為:

  • 讀,即select語句,可以分為select, from, where, group by 4個子產品;
  • 寫,即create(建立), insert(插數), drop(删除)。

常見的資料類型有:

  • 數值,e.g. int, bigint, bool, float, decimal等;
  • 字元串,e.g. char, varchar, string等;
  • 日期,e.g. date, datetime, timestamp等;

對應這3類資料類型的函數需要熟練掌握。

此外,還有兩類必須掌握的函數:

1. 聚合函數,也稱為“聚集函數”,常用的有:count, sum, avg, max, min, group by ;

2. 視窗函數,即對一組值進行操作(不需要使用到group by),常見的函數有(此處以Hive舉例):

  • 計算:count|sum|avg|max|min over;
  • 分區:partition by;
  • 位置:lag, lead, first_value,  last_value等;
  • 排序:row_number, rank, dense_rank, ntile;

e.g. 篩選使用者最近的N單交易

row_number() over(partition by user_id order by create_time desc)

注:注意區分row_number, rank, dense_rank的差别

e.g.統計當日每小時累計交易金額

sum(orderamt) over(order by order_hour rows between unbounded preceding and current row)

更多可以參考:http://lxw1234.com/archives/tag/hive-window-functions

薦書:

SQL必知必會,Ben Forta

注:作者還有兩本《必知必會》,分别是講MySQL和Oracle PL/SQL的

3. Python/R

Python和R不僅免費,還屬于“平台模式”——來自世界各地的開發者都可以貢獻自己開發的工具包。“平台模式”帶來了大量的充滿熱情的使用者,使用者越多,軟體的生命力就越強,發展也越快,這可以看作是軟體生态的“人口紅利”。

Python和R各有優缺點和相應的适用場景,資料分析(挖掘)90%以上的場景,兩個軟體都可以覆寫到,如果你已經在學其中一個,那就努力學好直至精通就行。

資料分析軟體的學習架構都很相似,如下是個人總結的Python學習架構(僅供參考)。

注:更多可參考 ​​程式設計學習建議​​

作為資料分析師的你都有哪些常用工具

注:Python學習架構

入門資料推薦:

Python

  • Python基礎程式設計,Magnus Lie Hetland;
  • 像計算機科學家一樣思考Python,Allen B. Downey;
  • 官方文檔,包括其他常用資料分析module的官方文檔(很多教程就是根據官方文檔改編過來的);

R

  • R語言實戰,Robert I. Kabacoff
  • Advanced R,Hadley Wickham
  • Cran Task Views: https://cran.r-project.org/web/views/

注:更多關于R\Python的文章可以關注朋友Sim的公衆号——”每天進步一點點2015“

4. SPSS

如果是業務人員要做資料分析,在程式設計上的要求就沒有那麼高,但又要做一些基礎的分析,那麼SPSS是需要學的。

薦書:

  • SPSS統計分析基礎教程,張文彤;
  • SPSS統計分析進階教程,張文彤;
  • IBM SPSS資料分析與挖掘實戰案例精粹,張文彤,鐘雲飛;

    注:該書的内容編排、案例以及提供的參考資料都非常好,雖然是用SPSS實作,但分析思路仍很值得參考;

  • Discovering Statistics Using IBM SPSS Statistics, Andy Field;

    注:作者的官網為 https://www.discoveringstatistics.com/,Discovering Statistics系列還有講R和SAS的兩本書,品質也應該不錯。

5. 其他

SAS 醫藥、金融類應用場景較多,如果要批量統計或出報告,Macro和GTL兩部分的内容要掌握好;

Matlab 和Mathematica、Maple并稱為三大數學軟體,常用于圖像處理、信号檢測、工程領域等,讀研時分析fMRI圖像大部分都是用Matlab操作,其開源替代方案是 Octave;

Stata 偏向經濟計量,可以程式設計,也支援界面化操作,但是用着總有種“不倫不類”的感覺,界面化操作沒有SPSS好用,程式設計的話又不如Python/R友善,而且使用場景相對來說比較小衆。

學習建議

1. 工具宜少不宜多,本人曾學過不少軟體(瞎折騰),後來發現大部分學的都沒用上(沒有應用場景)。一般來說,Excel是面向小資料和簡單的分析時用,SQL用來提數,Python/R則是遇到資料量較大或者模型更加複雜時用(不想程式設計可以選擇SPSS),如果是超大型資料,則要結合Hive, Spark, Storm等平台使用;

2. 帶着問題去學,“學以緻用”的方法之一是“輸出倒逼輸入”,問題是我們實際遇到的,也就不用擔心學習之後找不到使用場景的問題。學習Excel的時候尤其印象深刻,從基本的資料格式到VBA都是我遇到問題後去學的,User Guide或者《入門到精通》類的書太厚了,沒必要都看一遍;

3. 教材宜精不宜廣,找一本經典教材,打好基礎,建構知識架構(主幹),然後逐漸“碎片化”的、以應用為導向地學支幹的知識;

注:教材一般推薦人民郵電、電子工業、機械工業這3家出版社,如果要找英文電子書就上libgen;

4. 打好基礎,再定方向,學習軟體工具的時候要先把基礎操作打好,層層遞進,既要紮實又要有明确的方向。e.g.先學python的基礎文法,然後再有針對性對選擇學習和資料分析有關的工具包(pandas, scipy等);

注:不要為了追求高大上的效果而好高骛遠(層級越高用的場景可能就越少),所謂“屠龍之術,學而無用”(更多可參考​​工具思維的陷阱​​);

5. 整理自己的知識架構,以及重點、難點、易錯點,有體系的知識利用效率更高且更容易記住。此外,當你和别人分享你的學習經驗時,表達出來也更清晰、更有條理。

工具屬于“器”,不要沉迷于工具的使用,更重要的是“道”——對算法的掌握(使用場景、優缺點等)、對業務的了解等。