1. 程式人生 > >Python資料分析與挖掘學習筆記一:庫和環境搭建

Python資料分析與挖掘學習筆記一:庫和環境搭建

概念介紹:

資料分析:  用適當的統計分析方法對收集來的大量資料進行詳細研究和概括總結,以求最大化地發揮資料的作用,提取有用資訊和形成結論

資料探勘: 從大量資料中通過演算法搜尋隱藏於其中資訊的過程.

資料分析的三大作用:現狀分析、原因分析、預測分析。

資料分析的流程:

1.        明確目的與思路:先決條件、提供方向

2.        資料收集:資料庫、其他媒介(使用爬蟲, 網站下載)

3.        資料處理:清洗、轉化、提取、計算(保留原始資料)

4.        資料分析:統計分析、資料探勘(找規律)

5.        資料展現(建模):圖表->表格->文字

6.        報告撰寫:框架清晰、明確結論、提出建議

資料分析的誤區:

1.分析目的不明確,為分析而分析。

2.缺乏業務知識,分析結果偏離實際:資料分析師的任務不是單純做數學題,資料分析師還必須懂營銷,懂管理,更要懂策略。

3.一味追求使用高階分析方法,熱衷研究模型。

資料分析師的職業要求:

懂業務,懂管理,懂分析,懂工具,還要懂設計。

基本的分析方法有:對比分析法、分組分析法、交叉分析法、結構分析法、漏斗圖分析法、綜合評價分析法、因素分析法、矩陣關聯分析法等;高階的分析方法有:相關分析法、迴歸分析法、聚類分析法、判別分析法、主成分分析法、因子分析法、對應分析法、時間序列等。

懂工具中,常用的資料分析工具有Excel、Access、SPSS、SAS,先學會用Excel,它能解決80%甚至100%的問題。

懂設計中,圖表的設計是大學問,如圖形的選擇、版式的設計、顏色的搭配等,都需要掌握一定的設計原則

常用指標:

平均數

絕對數(總數)

相對數(倍數、百分數、番數(2n))

頻數(重複出現次數)/ 頻率(頻數佔總數比值)

同比(2011年9月/2010年9月)、環比(2011年9月/2011年8月)

相關的模組:

Numpy 可以高效處理資料,提供陣列支援,很多模組都依賴它,比如,pandas,scipy,matplotlib都依賴它

pandas 主要用於進行資料探索和資料分析

matplotlib 作圖模組, 視覺化處理 主要開發2D圖表,百度echart

scipy 主要進行數值計算, 支援矩陣運算, 提供了很多高等數學等資料處理功能

statsmodels 主要用於統計分析

Gensim 主要用於文字挖掘

sklearn , keras 前者機器學習, 後者深度學習

環境搭建:

虛擬環境中: mkvirtualenv -p /user/local/bin/python3 ai

matplotlib==2.2.2

numpy==1.14.2

pandas==0.20.3

TA-Lib==0.4.16

tables==3.4.2

jupyter==1.0.0

使用pip命令安裝

pip install -r requirements.txt

Ta-Lib安裝會出現問題,需要先安裝依賴庫,按照以下步驟安裝:

# 獲取原始碼庫

sudo wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz# 解壓進入目錄

tar -zxvf ta-lib-0.4.0-src.tar.gz

cd ta-lib/# 編譯安裝

sudo ./configure --prefix=/usr  

sudo make

sudo make install# 重新安裝python的TA-Lib庫

pip install TA-Lib

或者一鍵式安裝:

Windows:Anaconda3-5.0.1-Windows-x86_64.exe

Linux: Anaconda3-5.1.0-Linux-x86_64.sh  指令碼直接安裝

Mac:Anaconda3-5.1.0-MacOSX-x86_64.pkg  雙擊安裝

編碼工具:Jupyter Notebook/ipython /pycharm

這裡選擇使用jupyter Notebook

是IPython的加強網頁版,一個開源Web應用程式

是一款程式設計師和科學工作者的程式設計/文件/筆記/展示軟體

.ipynb檔案格式是用於計算型敘述的JSON文件格式的正式規範

傳統軟體開發:工程/目標明確

               需求分析,設計架構,開發模組,測試

資料探勘:藝術/目標不明確

                目的是具體的洞察目標,而不是機械的完成任務

                通過執行程式碼來理解問題

               迭代式地改進程式碼來改進解決方法