此文是《10周入門數據分析》系列的第6篇
想了解學習路線,可以先閱讀「10周計劃」
經常有剛從事資料分析的職場萌新,問我做資料分析工作要學些什麼,應該怎樣規劃學習路徑。我會告訴他:如果你Excel還用的不溜的話,就先學學Excel,當你用Excel處理和分析一些小資料集沒有問題的時候(具體表現就是:常用函數公式信手拈來,樞紐分析表,篩選,排序,圖表繪製操作熟練),你就去學習SQL語言,然後用BI去分析去熟悉業務。然後到了一定階段,你可以上手R或者Python。後面如果你能更進一步,可以去瞭解一些Spark等 大數據框架。
為什麼要學習Excel?
首先Excel是我們最常用的資料分析和處理工具,Excel的功能非常豐富,基本可以涵蓋我們在之後在其它軟體(SQL、BI、Python、R)中要學到的那些功能。
有的人可能會問,既然Excel這麼強大,為什麼還要學其它的工具?這是因為Excel是通過功能表的形式來進行操作的,很難實現自動化和功能複用,當然你也可以通過VBA來實現,用VBA也就是程式設計了,不過因為VBA這種語言學會了基本只能在office軟體中使用,學習的投入成本和產出收益不成比例,不推薦學習,這是客觀原因之一;另外就是Excel在處理比較大的資料集的時候,性能很差,並且經常崩潰。(雖然Excel2013及以上版本宣稱可以容納100+萬條記錄,但幾萬條資料就開始卡頓了)。
為什麼Excel學完要學SQL?
客觀原因是絕大部分資料分析崗都有SQL技能的要求。企業裡面為了保證資料的安全性和管理的方便,資料都是統一存放在資料庫中,從資料庫中提取和查詢資料需要使用SQL語言,甚至有的公司就是用SQL語言來做資料分析。
另外一個原因就是即使你先學了其它的工具,比如R,Python,甚至Spark等大資料框架,你會發現最後你還是得學習SQL。如果你先學習SQL,那麼很多概念你都能在學習R,Python,Spark等更加複雜的工具之前弄清楚。對於後面的學習會有幫助。這就好比建房子,都是先打地基,然後一層一層的蓋。
SQL語言的學習排在Excel之後,其它工具之前,還有一個很重要的原因就是,SQL可以在一定程度上幫Excel解決大資料集的問題,同時架起一個通往其它工具的橋樑。
關於資料庫和SQL的學習,也是分為兩篇,第一篇講資料庫以及表的概念。第二篇是SQL語句的掌握和資料庫的操作。
一、資料庫基礎知識
先談一下我對資料庫的理解。資料庫顧名思義就是資料的集合,是由一張張資料表組成的。
放在物理實體上,是一堆寫在磁片上的檔,檔中有資料。這些最基礎的資料組成了表(table),我們把它想像成一張Excel的sheet,如下圖:
每一張表都有一個唯一標識,即主鍵,也就是ID。ID是資料庫中重要的概念,叫做唯一識別碼/主鍵,用來表示資料的唯一性。就相當於我們的身分證,是唯一的,有了 身分證,就知道資料在哪了。
ID通常沒有業務含義,就是一種唯一標識,每張表只能有一個主鍵,且主鍵通常是整數,主鍵一旦設立,值通常不允許修改。
資料庫是表的集合。一個資料庫中可以放多張表,我們給每張表命名,表與表之間能互相聯繫。聯繫就是資料能夠對應匹配,正式名稱叫聯接,對應的操作叫做Join,我們想像成Excel中的vlookup。
比如上面兩張圖,左圖是學生資訊表,右圖是老師資訊表。左圖的主鍵是學生ID,右圖的主鍵是老師ID。細心的讀者可能發現右圖還有一個學生ID,這裡的學生ID是專門用來聯接用戶表的,它並不是主鍵。只不過兩張表通過學生ID這個唯一資訊來關聯。
但兩張表關聯也並不是資訊能一一對應的,也會存在空缺的時候,比如:
那兩表建立連接就會變成:
瞭解上面的概念,你就知道什麼叫關係型數據庫。簡單說,它是由多張能互相聯接的二維行列表格組成的資料庫。在資料準備時,我們通常要建立表關聯來分析。
關係型數據庫是基於關聯代數模型發展而來,常用的關係型數據庫有SQL Server、MySQL、Oracle、DB2等,這個視企業使用為准,我們後續學習都以MySQL為主。
各關係型數據庫(不感興趣可跳過):
DB2: 關係型數據庫, 適用於大型的分散式應用系統, 確實是非常非常好的資料庫, 無論穩定性, 安全性, 恢復性等等都無可挑剔, 而且從小規模到大規模的應用都非常適合。但是使用起來覺得非常繁瑣, 安裝的時候要求頗多, 很多軟體都可能和DB2產生衝突, 因為一般DB2都是安裝在小型機或者伺服器上的, 所以在PC上安裝很費事兒。新建一個庫需要設置很多東西, 分配各種各樣的存儲空間。
Oracle: 是目前市場佔有率最大的資料庫, 我在學習SSH的時候用的就是Oracle, 安裝起來很繁瑣, 而且居然程式檔有3G之多… 用起來非常方便, 對於我這樣的初學者, 有很簡單的配置, 對於要求很高的企業級應用, 也有很複雜的配置和管理方法, 有很強大的資料字典, 可以說是最實用的資料庫了, 但是查了一下, 價格不菲…
MS SQL: 當初用的是2000和2005版, 這兩個版本差了很多。2000的資料庫做的不錯, 程式很小, 操作簡單, 功能較全, 算是各方面都很中庸的資料庫吧, 是中型資料庫, 我的畢業設計就是用MS SQL 2000做的。2005中加入了很多功能, 複雜多了, 有大型資料庫的風範了, 而且價格也變高了, 個人覺得除非用的是Window Server 系統或者針對Microsoft產品, 否則不如用Oracle好。
MySQL: MySQL是一個很好的關係型數據庫, 免費, 而且功能很全, 程式又小, 安裝簡單, 現在很多網站都用MYSQL, 在欄位約束上做的差了點兒, 其他的都不錯, 和MS SQL 用著差不多。
Access: 典型的桌面資料庫, 覺得做個單機系統, 比如記帳, 記事兒什麼的還成, 在局域網裡跑個小系統都夠嗆, 資料來源連接很簡單, 因為是Office的資料庫, 所以Windows自帶資料來源。
更多關於資料庫的知識,看一本《資料庫系統概論》就夠了。
二、嘗試使用MySQL資料庫
如果還沒有接觸過資料庫或者說SQL,推薦大家下載並安裝MySQL資料進行嘗試,MySQL資料庫的下載安裝比較簡單,安裝完成就可以使用。
可以訪問MySQL官網進行下載,網址如下(這裡給出的是Windows版下載位址):
http://dev.MySQL.com/downloads/MySQL/
下載MySQL時,需要進行免費註冊,註冊頁面是英文的。下載該工具後,點擊運行,這個程式就能夠聯網自動為你安裝MySQL,並自動進行配置。在安裝過程中,需要你設置密碼,自己設置一個登陸密碼,並記住,下次登陸MySQL時,需要這個密碼。
解壓之後沒有my.ini檔(我的埠設置的3308),截圖中是我增加的。
管理員命令列:
在MySQL安裝目錄的 bin 目錄下執行命令:
mysqld — initialize — console
得到如下結果:
看到有個警告,查了一下mysql建議使用utf8mb4
修改my.ini文件
警告沒有了,上面列印了預設密碼:nj>uUJkpH4/I
然後,安裝服務:
mysqld — install MySQL8.0
因為這是電腦上第二個mysql 所以服務名改成了 MySQL8.0
啟動服務:
net start MySQL8.0
修改初始密碼
登錄mysql之後執行:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
將MySQL和Excel或者其它資料分析工具連接起來
預設安裝的情況下,有一個外掛程式允許MySQL資料庫和Excel相連接,試想一下,我們在MySQL資料庫中通過SQL語言進行大量資料的處理和計算,將計算結果存放在特定的資料表中,再通過Excel連接上MySQL資料庫,將資料讀取到Excel中,用Excel進行分析並繪製圖表,免去了將資料從資料庫匯出再導入Excel的麻煩,是不是就可以提高效率了呢?
後面會分享一篇通過ODBC驅動程式連接一些報表\BI工具來做分析的操作。
關於MySQL的學習推薦書籍《挑戰PHP7/MySQL程式設計與超強專題特訓班(第四版)》。
想瞭解更多的資料分析知識,請關注我的Facebook, 期待你與我互動起來啦~