Python 100 Days Day66 Introduction to Data Analysis
25 Sep 2022 | beginner pythonauthor: jackfrued
數據分析概述
當今世界對信息技術的依賴程度在不斷加深,每天都會有大量的數據產生,我們經常會感到數據越來越多,但是要從中發現有價值的信息卻越來越難。這里所說的信息,可以理解為對數據集處理之後的結果,是從數據集中提煉出的可用於其他場合的結論性的東西,而從原始數據中抽取出有價值的信息的這個過程我們就稱之為數據分析,它是數據科學工作的一部分。
定義:數據分析是有針對性的收集、加工、整理數據並采用統計、挖掘等技術對數據進行分析和解釋的科學和藝術。
數據分析師的職責和技能棧
HR在發布招聘需求時,通常將數據工程、數據分析、數據挖掘等崗位都統稱為數據分析崗位,但是根據工作性質的不同,又可以分為偏工程的數據治理方向、偏業務的數據分析方向、偏算法的數據挖掘方向、偏開發的數據開發方向、偏產品的數據產品經理。我們通常所說的數據分析師主要是指業務數據分析師,很多數據分析師的職業生涯都是從這個崗位開始的,而且這個崗位也是招聘數量最多的崗位。業務數據分析師在公司通常不屬於研發部門而屬於運營部門,所以這個崗位也稱為數據運營或商業分析,這類人員通常也被稱為“BI工程師”。通常招聘信息對這個崗位的描述(JD)是:
- 負責相關報表的輸出。
- 建立和優化指標體系。
- 監控數據波動和異常,找出問題。
- 優化和驅動業務,推動數字化運營。
- 找出潛在的市場和產品的上升空間。
根據上面的描述,作為業務數據分析師,我們的工作不是給領導一個簡單淺顯的結論,而是結合公司的業務,完成監控數據、揪出異常、找到原因、探索趨勢等工作。作為數據分析師,不管是用 Python 語言、Excel、SPSS或其他的商業智能工具,工具只是達成目標的手段,數據思維是核心技能,從實際業務問題出發到最終發現數據中的商業價值是終極目標。數據分析師在很多公司只是一個基礎崗位,精於業務的數據分析師可以向數據分析經理或數據運營總監等管理崗位發展;對於熟悉機器學習算法的數據分析師來說,可以向數據挖掘工程師或算法專家方向發展,而這些崗位除了需要相應的數學和統計學知識,在編程能力方面也比數據分析師有更高的要求,可能還需要有大數據存儲和處理的相關經驗。數據治理崗位主要是幫助公司建設數據倉庫或數據湖,實現數據從業務系統、埋點系統、日志系統到分析庫的轉移,為後續的數據分析和挖掘提供基礎設施。數據治理崗位對 SQL 和 HiveSQL 有著較高的要求,要求能夠熟練的使用 ETL 工具,此外可能還需要對 Hadoop 生態圈有一個很好的認知。作為數據產品經理,除了傳統產品經理的技能棧之外,也需要較強的技術能力,例如要了解常用的推薦算法、機器學習模型,能夠為算法的改進提供依據,能夠制定相關埋點的規範和口徑,雖然不需要精通各種算法,但是要站在產品的角度去考慮數據模型、指標、算法等的落地
以下是我總結的數據分析師的技能棧,僅供參考。
- 計算機科學(數據分析工具、編程語言、數據庫)
- 數學和統計學(數據思維、統計思維)
- 人工智能(機器學習中的數據挖掘算法)
- 業務理解能力(溝通、表達、經驗)
- 總結和表述能力(商業PPT、文字總結)
數據分析的流程
我們提到數分析這個詞很多時候可能指的都是狹義的數據分析,這類數據分析主要目標就是生成可視化報表並通過這些報表來洞察業務中的問題。廣義的數據分析還包含了數據挖掘的部分,不僅要通過數據實現對業務的監控和分析,還要利用機器學習算法,找出隱藏在數據背後的知識,並利用這些知識為將來的決策提供支撐。簡單的說,一個完整的數據分析應該包括基本的數據分析和深入的數據挖掘兩個部分。
基本的數據分析工作一般包含以下幾個方面的內容,當然因為行業和工作內容的不同會略有差異。
- 確定目標(輸入):理解業務,確定指標口徑
- 獲取數據:數據倉庫、電子表格、三方接口、網絡爬蟲、開放數據集等
- 清洗數據:缺失值/重覆值/異常值處理、數據變換(格式化、規範化)、離散化等
- 數據透視:運算、統計、分組、聚合、可視化
- 數據報告(輸出):數據發布,工作成果總結匯報
- 分析洞察(後續):解釋數據的變化,提出對應的方案
深入的數據挖掘工作通常包含以下幾個方面的內容,當然因為行業和工作內容的不同會略有差異。
- 確定目標(輸入):理解業務,明確挖掘目標
- 數據準備:數據采集、數據描述、數據探索、質量判定等
- 數據加工:提取數據、清洗數據、數據變換、特殊編碼、降維、特征選擇等
- 數據建模:模型比較、模型選擇、算法應用
- 模型評估:交叉檢驗、參數調優、結果評價
- 模型部署(輸出):模型落地、業務改進、運營監控、報告撰寫
數據分析相關庫
使用 Python 從事數據科學相關的工作是一個非常棒的選擇,因為 Python 整個生態圈中,有大量的成熟的用於數據科學的軟件包(工具庫)。而且不同於其他的用於數據科學的編程語言(如:Julia、R),Python 除了可以用於數據科學,能做的事情還很多,可以說 Python 語言幾乎是無所不能的。
三大神器
- NumPy:支持常見的數組和矩陣操作,通過
ndarray類實現了對多維數組的封裝,提供了操作這些數組的方法和函數集。由於 NumPy 內置了並行運算功能,當使用多核 CPU 時,Numpy會自動做並行計算。 - Pandas:pandas 的核心是其特有的數據結構
DataFrame和Series,這使得 pandas 可以處理包含不同類型的數據的負責表格和時間序列,這一點是NumPy的ndarray做不到的。使用 pandas,可以輕松順利的加載各種形式的數據,然後對數據進行切片、切塊、處理缺失值、聚合、重塑和可視化等操作。 - Matplotlib:matplotlib 是一個包含各種繪圖模塊的庫,能夠根據我們提供的數據創建高質量的圖形。此外,matplotlib 還提供了 pylab 模塊,這個模塊包含了很多像 MATLAB 一樣的繪圖組件。
其他相關庫
- SciPy:完善了 NumPy 的功能,封裝了大量科學計算的算法,包括線性代數、稀疏矩陣、信號和圖像處理、最優化問題、快速傅里葉變換等。
- Seaborn:seaborn 是基於 matplotlib 的圖形可視化工具,直接使用 matplotlib 雖然可以定制出漂亮的統計圖表,但是總體來說還不夠簡單方便,seaborn 相當於是對 matplotlib 做了封裝,讓用戶能夠以更簡潔有效的方式做出各種有吸引力的統計圖表。
- Scikit-learn:scikit-learn 最初是 SciPy 的一部分,它是 Python 數據科學運算的核心,提供了大量機器學習可能用到的工具,包括:數據預處理、監督學習(分類、回歸)、無監督學習(聚類)、模式選擇、交叉檢驗等。
- Statsmodels:包含了經典統計學和經濟計量學算法的庫。
Comments