天天看點

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

點選檢視第二章 點選檢視第三章

Python資料分析與資料化營運(第2版)

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

宋天龍 著

第1章 Python和資料化營運

資料化營運是提高利潤、降低成本、優化營運效率、最大化企業财務回報的必要課題。Python作為資料科學界的關鍵工具之一,幾乎可以應用于所有資料化營運分析和實踐的場景。本章将首先介紹Python與資料化營運的基本内容,然後圍繞資料化營運分析所需的Python相關工具進行介紹,最後通過一個入門級别的案例,介紹如何将Python用于資料化營運。

1.1 用Python做資料化營運

Python是什麼?資料化營運又是什麼?為什麼要将Python用于資料化營運?本節先來回答這幾個問題。

1.1.1 Python是什麼

Python是一種面向對象的解釋型計算機程式設計語言,由荷蘭人Guido van Rossum于1989年發明,第一個公開版發行于1991年。Python開發的初衷其實是一個開發程式語言,而非專門用于資料工作和科學計算的資料處理或模組化程式(當然,現在已經是了)。

為什麼我們要選擇Python而非其他語言(例如R)進行資料處理、分析和挖掘呢?這是因為Python先天和後天具有的一些特殊條件和能力,使其成為目前企業(尤其是大資料領域)做資料化營運最為合适的工具。

  • 開源/免費:使用Python(及其第三方庫)無須購買産品、授權或license費用,無論對于個人還是對于企業都是如此。
  • 可移植性:Python程式可以跨Windows、Linux、Mac等多平台運作,這點決定了它的移植性非常強,一次開發,多平台應用。
  • 豐富的結構化和非結構化資料工作庫和工具:Python除了自帶數學計算庫外,還包括豐富的第三方庫和工具,例如用于連接配接Oracle、MySQL、SQLite等資料庫的連接配接庫,資料科學計算庫Numpy、Scipy、Pandas,文本處理庫NLTK,機器學習庫Scikit-Learn、Theano,圖形視訊分析處理和挖掘庫PIL和Opencv,以及開源計算架構TensorFlow等。
  • 強大的資料擷取和內建能力:Python除了可以支援多種類型的檔案(圖像、文本、日志、語音、視訊等)和資料庫內建外,還能通過API、網絡抓取等方式擷取外部資料,内、外部資料源整合、多源資料內建、異構資料并存、多類型資料交錯正是目前企業資料營運的基本形态。
  • 海量資料的計算能力和效率:當面對超過GB甚至TB規模的海量資料時,傳統資料工具通常無法支撐,更不要提計算效率了。Python對于這個規模資料的計算能力和工作效率要遠超過其他資料工作語言。
  • 與其他語言的內建:Python具備“膠水”能力,能與Java、C、C++、MATLAB、R等語言內建使用,這意味着既可以把其他語言寫成的腳本嵌入Python,也可以把Python腳本嵌入其他語言。
  • 強大的學習交流和教育訓練資源:Python已經成為世界上最主流的程式設計語言和資料處理工作的核心工具之一,有非常多的社群、部落格、論壇、教育訓練機構、教育機構提供交流和學習的機會。
  • 開發效率高:Python語言簡潔、規範,使得在使用Python開發程式時用時更少。這對于以效率優先的程式工作或驗證性項目來說非常關鍵,效率決定商機。
  • 簡單易學:Python文法簡單,即使是沒有任何代碼基礎的人也能在幾個小時内掌握基本的Python程式設計技巧,這對于初學者而言至關重要,因為這說明程式設計式資料分析不再遙不可及,他們能像使用Excel一樣使用Python。

總而言之,在具備一定Python經驗和技巧的情況下,幾乎沒有Python無法勝任的工作場景!如果有,那麼用Python調用其他語言或用其他語言調用Python後,就會勝任。

1.1.2 資料化營運是什麼

資料化營運是指通過資料化的工具、技術和方法,對營運過程中的各個環節進行科學分析、引導和應用,進而達到優化營運效果和效率、降低成本、提高效益的目的。

營運是一個範圍“彈性”非常大的概念,最大可以延伸到所有公司的事務管理,最小可能隻包括網站營運管理工作。本書中若無特殊說明,營運的範圍包括會員營運、商品營運、流量營運和内容營運4方面内容。

1.資料化營運的重要意義

資料化營運的核心是營運,所有資料工作都是圍繞營運工作鍊條展開的,逐漸強化資料對于營運工作的驅動作用。資料化營運的價值展現在對營運的輔助、提升和優化上,甚至某些營運工作已經逐漸數字化、自動化、智能化。

具體來說,資料化營運的意義如下:

1)提高營運決策效率。在資訊瞬息萬變的時代,抓住轉瞬即逝的機會對企業而言至關重要。決策效率越高意味着可以在更短的時間内做出決策,進而跟上甚至領先競争對手。資料化營運可使輔助決策更便捷,使資料智能引發主動決策思考,進而提前預判決策時機,并提高決策效率。

2)提高營運決策正确性。智能化的資料工作方式,可以基于資料科學方法進行資料演練,并得出可量化的預期結果,再配合決策層的豐富經驗,會提高營運決策的正确性。

3)優化營運執行過程。資料化營運可以通過标準口徑的資料、資訊和結論,為營運部門提供标準統一、目标明确的KPI管理,結合資料化的工作方法和思路,優化營運過程中的執行環節,進而降低溝通成本、提高工作效率、提升執行效果。

4)提升投資回報。資料化營運過程中,通過對持續的正确工作目标的樹立、最大化工作效率的提升、最優化工作方法的執行,能有效降低企業備援支出,提升機關成本的投資回報。

2.資料化營運的兩種方式

從資料發揮作用的角度來看,資料化營運分為輔助決策式資料化營運和資料驅動式資料化營運。

(1)輔助決策式資料化營運

輔助決策式資料化營運是營運的決策支援,它是以決策主題為中心的,借助計算機相關技術輔助決策者通過資料、模型、知識等進行業務決策,起到幫助、協助和輔助決策者的目的。例如,通過為決策者提供商品促銷銷量資訊,對企業的促銷活動提供有關訂貨、銷售等方面的支援。

(2)資料驅動式資料化營運

資料驅動式資料化營運是指整個營運運作流程以最大化結果為目标,以關鍵資料為觸發和優化方式,将營運業務的工作流程、邏輯、技巧封裝為特定應用,借助計算機技術并結合企業内部流程和機制,形成一體化的資料化工作流程。例如,個性化推薦就是一種資料驅動資料化營運方式。

  • 輔助決策式資料化營運和資料驅動式資料化營運是兩個層次的資料應用,資料驅動相對于輔助決策的實作難度更高、資料價值展現更大。
  • 輔助決策式資料化營運為業務決策方服務,整個過程都由營運人員掌控,資料是輔助角色。

資料驅動式資料化營運的過程由資料掌控,資料是主體,實作該過程需要IT、自動化系統、算法等支援,資料驅動具有自主導向性、自我驅動性和效果導向性。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

3.資料化營運的工作流程

上文我們介紹了資料化營運的兩種方式:輔助決策式資料化營運和資料驅動式資料化營運。其中資料驅動式資料化營運具體取決于應用場景,不同的場景,其具體工作流程不同。有關該部分内容在本書後面章節會具體講到。本節重點介紹資料驅動式資料化營運的工作流程。

資料驅動式資料化營運工作包含資料和營運兩個主體,在實際工作過程中需要二者協同。在某些大型工作項目上,還有可能涉及與IT部門、資訊中心等部門的關聯。其工作流程分為3個階段,如圖1-1所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(1)第1階段:資料需求溝通

該階段主要包括需求産生和需求溝通兩個步驟。

1)需求産生:由營運部門産生的某些資料化營運需求,例如預測商品銷量、找到異常訂單、确定營銷目标人群名單等。

2)需求溝通:針對營運部門提出的需求進行面對面溝通和交流,溝通主要包含3方面:一是業務需求溝通,包括需求産生的背景、要解決的問題、預期達到的效果等;二是資料現狀溝通,包括資料存儲環境、主要字段、資料字典、資料量、更新頻率、資料周期等,如果沒有資料則需要制定資料采集規則并開始采集資料,該過程中可能需要IT部門的協助;三是資料與分析的關聯性溝通,根據與營運人員的溝通,了解業務背景下哪些是常見的、帶有業務背景的資料、不同場景會導緻資料如何變化、分析中會涉及哪些關鍵字段或場景資料等,業務人員豐富的經驗會幫助資料工作者少走很多彎路。

(2)第2階段:資料分析模組化

從這一階段開始進入正式的資料工作流程,包括擷取資料、資料預處理、資料分析模組化和資料結論輸出4個步驟。

1)擷取資料:資料化營運分析所需的資料需要經過特定授權從資料庫或檔案中得到。

2)資料預處理:在該過程中對資料進行品質檢驗、樣本均衡、分類彙總、合并資料集、删除重複項、分區、排序、離散化、标準化、過濾變量、轉置、查找轉換、脫敏、轉換、抽樣、異常值和缺失值處理等。

3)資料分析模組化:運用多種資料分析和挖掘方法,對資料進行分析模組化。方法包括統計分析、OLAP分析、回歸、聚類、分類、關聯、異常檢測、時間序列、協同過濾、主題模型、路徑分析、漏鬥分析等。

4)資料結論輸出:資料結論的輸出有多種方式,常見的方式是資料分析或挖掘模組化報告,另外還包括Excel統計結果、資料API輸出、資料結果傳回資料庫、資料結果直接內建到應用程式中進行自動化營運(例如短信營銷)。

(3)第3階段:資料落地應用

該階段是資料化營運落地的關鍵階段,前期所有的準備和處理工作都通過該階段産生價值。該階段包括資料結論溝通、資料部署應用及後續效果監測和回報3個步驟。

1)資料結論溝通:對于輸出為報告、Excel統計結果等形式的内容,通常都需要與營運對象進行深入溝通,主要溝通的内容是将通過資料得到的結論和結果與業務進行溝通,通過溝通來初步驗證結論的正确性、可靠性和可行性,并對結果進行修正。如果沒有可行性,那麼需要傳回第2階段重新開始資料分析模組化流程。

2)資料部署應用:經過溝通具有可行性的資料結論,可直接應用到營運執行環節。例如,将預測結果作為下一個月的KPI目标,将選擇出來的使用者作為重點客戶進行二次營銷。

3)後續效果監測和回報:大多數的資料化營運分析都不是“一次性”的,尤其當已經進行部署應用之後,需要對之前的資料結論在實踐中的效果做二次驗證,若有必要則需要進行結論的再次修正和意見回報。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

1.1.3 Python用于資料化營運

Python用于資料化營運,将充分利用Python的強大功能和效率來滿足資料化營運的複雜需求。

  • Python可以将資料化營運過程中來源于企業内外部的海量、多類型、異構、多資料源的資料有效整合到一起,提供豐富的內建、開發、分析、模組化和部署應用。
  • Python高效的開發效率能幫助資料化營運在最短的時間内進行概念驗證,并提供科學的預測結果,為資料化營運的快速和準确提供基礎。
  • Python可以将資料工作流程和IT工作流程無縫對接,有利于實作資料工作與營運工作的融合。這也是資料驅動式資料化營運的工作方法,有利于真正實作數字化、智能化的營運工作。

1.2 資料化營運所需的Python相關工具群組件

本書将以Python為主要資料工作工具,重點介紹Python相關工具,包括Python程式、IDE、Python第三方庫、資料庫和用戶端、SSH遠端用戶端、OCR工具和機器學習架構等。

1.2.1 Python程式

1. Python 2還是Python 3

目前,Python仍然是兩個系列的版本并存,一個是Python 2,另一個是Python 3。這兩個版本的文法不完全相容,是以兩個版本的程式調用對方的執行腳本将很可能報錯。

如果沒有特殊需求,大多數場景下選擇Python 3都是一個正确的選擇。但結合特定場景,筆者還是給出以下具體建議:

  • 如果想要成熟、可靠且穩定的程式,選擇Python 2和Python 3都可以。
  • 如果隻是學習或了解一下Python,優選Python 3。
  • 如果是企業内部應用,有曆史程式需要執行和開發,具體看企業用的是哪個版本。
  • 如果你的工作中需要大量的第三方庫,而且是比較早期的庫,那麼使用Python 2。但更多情況下,即使那些隻支援Python 2的庫不再更新了,也有很多替代庫可以實作,是以如果不是必須使用Python 2,還是建議使用Python 3。
  • 如果你的程式需要在Linux伺服器上運作且使用其原生程式,那麼去看看你的Linux伺服器自帶的Python版本(通常Linux伺服器上自帶Python 2的居多)。同樣的,即使Linux原生帶的程式版本低,仍然可以安裝并使用Python 3。
  • 如果上述沒有任何一個場景滿足你的需求,那麼就從Python 3開始吧。

2. 32位還是64位

大多數情況下,如果沒有特殊需求,盡量選擇64位版本。

本書的案例是基于64位Python實作的,版本是Python 3.7。選擇64位的原因是它能應對更大容量的資料應用,用Python 3除了因為這是趨勢外,還有一個重要原因是Numpy已經宣布從2019年1月1日起新功能将隻支援Python 3,相信很多系統和工具也開始慢慢放棄對Python 2的支援了。

3. Python環境的搭建

一般情況下,我們可以直接到Python官網

https://www.python.org

下載下傳需要的版本,然後在安裝好Python程式後根據需要自定義安裝其他相關庫和包。但對大多數初次接觸Python的讀者來講,如果能有“一鍵安裝”就更好了。在此,我們介紹Anaconda。

Anaconda是一個Python發行版本,其包含了conda、Python等180多個科學包及其依賴項,它是科學計算領域非常流行的Python包以及內建環境管理的應用。它的優勢主要表現在以下幾個方面:

  • 預設可以幫你安裝好Python主程式,而不用單獨下載下傳安裝。
  • 常用的資料工作包,包含資料導入、清洗、處理、計算、展示等各個環節的主要包都已經安裝好,如Pandas、Numpy、Scipy、Statsmodels、Scikit-Learn(sklearn)、NetworkX、Matplotlib等。常用的非結構化資料處理工具也一應俱全,如beautifulsoup4、lxml、NLTK、pillow、scikit-image等。
  • 很多包的安裝有依賴,這點在Linux系統上非常常見,而Anaconda已經将這些依賴的問題統統解決。尤其在離線環境下做Python和大量庫的安裝部署工作時,Anaconda大大降低了實施難度,是項目開發過程中必不可少的有效工具。
  • 提供了類似于pip的包管理功能的指令conda,可以對包進行展示、更新、安裝、解除安裝等常用操作。當然,如果你更喜歡pip,仍然可以繼續使用該指令,因為Anaconda預設也安裝了該指令。
  • 多平台、多版本的通用性,而且緊跟Python主程式更新的步伐。Anaconda支援Windows、Mac OS和Linux系統,且同時包含32位和64位的Python版本(Python 2和Python 3全都支援)。
  • 提供了IPyton、Jupyter、Spyder互動環境,可以直接通過界面化的方式引導使用者操作,易用程度非常高,甚至連具體細分的學習資源都準備好了。

要安裝Anaconda環境,隻需要登入

https://www.anaconda.com/download

下載下傳對應版本的安裝包即可,如圖1-2所示。目前Anaconda發行的最新Python版本包括32位和64位的Python 2.7和Python 3.7。本書選擇的是左側畫框的Anaconda3-5.3.1-Windows-x86_64,讀者也可直接從

https://repo.anaconda.com/archive/Anaconda3-5.3.1-Windows-x86_64.exe

下載下傳。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

下載下傳完成後,會在本地計算機中存在一個名為“Anaconda3-5.3.1-Windows-x86_64.exe”的安裝包,安裝過程隻需使用預設配置即可。

1.2.2 Python互動環境Jupyter

通過Anaconda安裝的環境,預設會帶有IPython和Jupyter;如果使用Python原生環境安裝(通過Python官網下載下傳的安裝包安裝),也會有預設的互動環境。在資料分析領域,筆者推薦使用Jupyter,原因是資料分析師在做資料工作時,不僅需要做資料互動性分析、模組化,還需要做資料結果展示和互動介紹等,這些最好在一體化環境中完成,而不需要多種工具配合完成,這也正是Jupyter的優勢。

1. IPython和Jupyter的關系

IPython是一個基于Python的互動式shell,比預設的Python shell好用得多,它支援變量自動補全、自動縮進、互動式幫助、魔法指令、系統指令等,内置了許多很有用的功能和函數。

從IPython 4.0開始,IPython衍生出了IPython和Jupyter兩個分支。在該分支正式出現之前,IPython其實已經擁有了ipython notebook功能,是以,Jupyter更像一個ipython notebook的更新版。IPython和Jupyter都是非常好的、用于Python學習和應用的互動式工具。在做資料工作時二者的主要差異如下:

1)IPython仍然是一個基于指令行視窗的指令行工具,基本上所有的功能都需要使用指令實作。而Jupyter則是一個基于Web的互動環境(沒錯,它的運作需要一個浏覽器),除了指令行以外還有互動功能可供使用,例如運作、暫停、重新開機等。在IPython中,這些都是需要操作者通過指令的方式操作,而在這裡則可以像使用Office一樣做基本管理。

2)IPython是基于Python的互動開發工具,功能純粹且相對單一。而Jupyter除了代碼工作外,還可以整合網頁、圖檔等,它與Matplotlib結合在可視化方面應用比較多,甚至連CODE及輸出的結果都可以儲存為擴充名為ipynb的檔案,友善大家分享和交流。另外它還包含了多組程式的執行、支援markdown做注釋、檔案操作和管理功能等。

3)IPython應用的語言主要是圍繞Python的,包括語言開發、設計、調試等;而Jupyter除了Python互動工作外,還可以用于C、C++、C#、Fortan、Java、R、Haskell等幾十種語言,未來應該還會支援更多的語言及相關工作功能。

是以,綜合二者的應用差異性,IPython是一個開發類工具,Jupyter則更像一個學習、示範和互動的開放式工具。在我們實際工作中,如果是開發方向的,更側重于選擇IPython;而以資料分析為目的的,選擇Jupyter則更合适。本書之後的章節中,将使用Jupyter來做所有功能和代碼的介紹和示範。

那麼IPython和Jupyter到底是什麼關系?直覺上看,Jupyter是一個Web服務,它本身不能執行任何程式,若執行程式則需要依賴于其“核心”(有關核心的部分,會在下面介紹到)。預設情況下,當在Jupyter中發起程式執行請求後,Jupyter會将請求轉發給對應的核心執行,預設的Jupyter的Python是調用IPython,是以Jupyter天然就繼承了IPython的功能和特性,包括各種魔術函數等。由于Jupyter和其核心是功能拆分的,是以Jupyter也可以執行其他核心,例如R等。

2. Jupyter的安裝和啟動

(1)安裝Jupyter

如果使用Anaconda安裝Python環境,則預設已經安裝了Jupyter。如果讀者自定義安裝,則可以通過指令pip install jupyter安裝。

(2)啟動Jupyter

在指令行視窗中輸入jupyter-notebook或jupyter notebook然後回車(或直接從Windows開始菜單中的Anaconda 3(64-bit)目錄下也能找到該入口,如圖1-3所示),預設浏覽器會打開指令行視窗以及新的TAB,并進入Jupyter線上頁面視窗,如圖1-4所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

3. Jupyter的基本操作

在圖1-6中,可以看到共分為3個功能區:圖中①是主功能區,②是檔案和目錄功能區,③是檔案和目錄清單。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
  • 主功能區:Files(預設視圖)展示了所有該空間下檔案和目錄的詳細資訊,可在該區域對檔案和目錄做管理;Running區展示了目前正在運作的Jupyter程式,可在該功能區關閉特定程式;Clusters展示了由IPython提供的并行功能項資訊。
  • 檔案和目錄功能區:對檔案和目錄做新增、删除、移動、上傳等操作。
  • 檔案和目錄清單:檢視特定目錄和檔案,直接單擊可檢視檔案詳情。

這裡我們簡單介紹Jupyter的使用方法和常用操作。

(1)建立Python檔案

單擊右上角New按鈕,選擇目前Python版本對應的檔案Python 3,進入檔案編輯視窗,如圖1-7所示。這裡也可以建立其他檔案,單擊Text File即可。如果目前Jupyter還安裝了其他核心,則也可以建立其他核心檔案,例如R。

(2)編輯Python檔案

在檔案編輯視窗中,功能區包括3個部分,如圖1-8所示。

  • 圖中①區域為菜單功能區,包括檔案、編輯、視圖、元件、核心、小部件以及幫助菜單。由于裡面的功能菜單,讀者一看便知道是什麼意思。後面主要介紹編輯中的常用操作。
  • 圖中②區域為代碼相關操作,包括儲存、新增、運作、停止等功能,是與代碼本身相關的常用操作。
  • 圖中③區域為代碼區,在該區域内輸入代碼并使用②區域中的功能之後,可直接顯示代碼運作結果。
    帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(3)儲存與恢複

儲存直接使用Ctrl+S快捷鍵即可,此時将生成一個檢查點版本。與儲存不同的是,恢複有不同的場景應用。

  • 撤銷或回退。如果檔案中進行了多次修改,但是想傳回之前的操作,可直接使用Ctrl+Z快捷鍵,該操作與是否儲存無關。
  • 恢複到上個檢查版本。在很多場景下,第1個版本已經完成,第2個版本修改了很多功能,可能無法确認第2個版本具體修改了哪些地方。此時可以用Jupyter中的“Revert to Checkpoint”來恢複上一個檢查點的版本,如圖1-9所示。
    帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(4)導出檔案

在Jupyter中編輯完成後,可以導出為多種檔案,例如常用的Python檔案、Jupyter專用檔案、PDF檔案等,如圖1-10所示。如果後期可能二次修改或使用,那麼存為Jupyter或Python檔案;如果要想将結果分享出去,可儲存為Jupyter、PDF或HTML檔案;如果希望分享出去的結果不被他人編輯,那麼選擇PDF或HTML檔案。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(5)單元格輸入和輸出

單元格(Cell)類似于Excel中的單元格,用來輸入和輸出内容。單元格的輸入格式包括4類,如圖1-11所示。

  • Code:目前檔案核心的代碼,本書為Python代碼。
  • Markdown:一種可以使用普通文本編輯器編寫的标記語言,通過簡單的标記文法,它可以使普通文本内容具有一定的格式。
  • Raw NBConvert:類似于純文字的格式,輸入内容即輸出内容,是以是“原樣輸出”的格式。
  • Heading:标題格式,類似于Word中的标題一、标題二等,不過Jupyter已經不建議在這裡設定了,而是使用Markdown語言中的#來設定标題。

在輸入格式上,寫代碼時選擇Code,而做單獨子產品的注釋時使用Markdown。單元格的内容輸出具體取決于Code内容。

(6)單元格常用編輯功能

單元格的常用編輯功能非常簡單,圖示如圖1-12所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
  • ①儲存和檢查點,快捷鍵Ctrl+S
  • ②在目前單元格下建立單元格
  • ③剪切目前單元格
  • ④粘貼所選擇的單元格
  • ⑤在目前單元格下粘貼單元格
  • ⑥和⑦将目前單元格上移或下移
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(7)執行Python程式

執行Python檔案是以單元格為機關的,操作指令如下:

  • 執行目前單元格代碼,單擊該單元格前的或按快捷鍵Ctrl + Enter。
  • 執行目前單元格代碼并且移動到下一個單元格,單擊菜單功能欄中的或使用快捷鍵Shift + Enter。
  • 執行目前單元格代碼,建立并移動到下一個單元格,使用快捷鍵Alt + Enter。
  • 重新開機核心并重新執行所有單元格程式,單擊。
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

以上執行指令操作僅僅是利用Jupyter提供的功能執行單元格的程式,但很多情況下,我們可能需要執行外部檔案或程式,例如執行test.py檔案。此時,我們可以在單元格中輸入以下任一指令實作程式執行。

  • %run test.py:調用IPython的魔術指令執行該檔案。
  • !Python 3 test.py:調用系統的Python指令執行該檔案。
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(8)将外部程式加載到單元格

Jupyter允許直接将外部程式加載到單元格,例如已經寫好的類或方法,使用%load file_name.py即可實作。整個過程如圖1-15中的①②③④所示。

  • test.py的檔案中有兩行代碼,如圖中的①。
  • 在Jupyter的單元格中輸入%load test.py,如圖中的②。
  • 執行該單元格,單元格會預設将%load test.py注釋掉(即加#注釋),然後加載test.py中的内容到單元格,如圖中的③。
  • 再次執行該單元格,Jupyter會執行單元格中的代碼,即從test.py加載的代碼,如圖中的④。
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

4. Jupyter的魔術指令

Jupyter支援IPython中的魔術指令。所謂魔術指令指的是IPython提供的特殊指令,它将常用的操作以%開頭的指令封裝起來,使用時非常友善。以下是筆者常用的魔術指令。

  • %matplotlib inline:一般情況下,Python的可視化都會用到Matplotlib庫。要在Jupyter中使用該庫并把結果內建到Jupyter中,需要使用%matplotlib inline指令,如圖1-16所示。
    帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
  • %ls:檢視目前目錄下的檔案或檔案夾詳細清單資訊。
  • %cd:切換工作路徑。
  • %run:執行特定Python檔案。要中斷程式,按Ctrl+C快捷鍵。
  • %paste和%cpaste:粘貼在剪切闆中的内容。前者實作粘貼代碼後立即執行,無須确認,更适合一小段功能确認的代碼,直接執行;後者實作粘貼代碼後,需要使用者輸入“—”或按Ctrl+D快捷鍵确認,适合大量的代碼,尤其是不同的代碼可能來自不同的片段的情況,需要粘貼到一起做二次編輯或确認。
  • %pwd:檢視目前Python工作路徑和目錄。
  • %time、%timeit、%%time和%%timeit:這3個指令都是用來做代碼執行時間測試的,%time用來測試單個單元格或單行指令一次的執行時間;

    %timeit與%time類似,但可以基于次數做測試并傳回平均時間,例如測試10次或100次,若不指定,預設為測試1000次;如果要測試的代碼不隻有一行,這時就需要%%time和%%timeit了,它們與前兩個的差別主要在于支援多行程式測試。

  • %hist:顯示指令的輸入(可選輸出)曆史,在查找曆史指令操作時非常有用。
  • %quickref:顯示IPython的快速參考。
  • %magic:顯示所有魔術指令的詳細文檔。

另外,還有一些是資料分析師不常用,但資料開發工程師會經常用到的指令。

  • %debug:從最新的異常跟蹤的底部進入互動式調試器,在debug時常用。
  • %pdb:在異常發生後自動進入調試器。
  • %prun statement:通過cProfile執行statement,并列印分析器的輸出結果。
  • %bookmark:将特定路徑儲存為書簽,以後使用時可直接使用cd指令定位到書簽名而無須完整路徑。
  • %alias:為特定指令定義别名,尤其當指令中包含衆多參數時很有用。
  • %xdel和%reset:二者都是删除變量或名稱,前者删除單個對象,後者删除目前互動空間全部變量或名稱。
    帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

如果要執行Jupyter中其他語言的單元格程式,隻需在特定單元格的開頭使用相關的魔術指令來聲明。

  • %%bash:執行UNIX和Linux的shell指令。
  • %%HTML:執行HTML程式。
  • %%Python 2:執行Python 2程式。
  • %%Python 3:執行Python 3程式。
  • %%ruby:執行Ruby程式。
  • %%perl:執行Perl程式。

當然,要執行這些程式的前提是已經安裝了對應的核心。具體過程會在下節中介紹。

5. Jupyter新核心安裝和使用

(1)檢視可用核心

在系統終端指令行中輸入jupyter kernelspec list來檢視目前Jupyter可用核心,例如筆者環境的核心隻有Python 3,如圖1-17所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(2)安裝新核心

使用Anaconda安裝新核心将非常簡單,例如:安裝R核心使用conda install -c r r-essentials指令即可。整個過程的耗時較長,使用者需耐心等待。安裝完成後會有如圖1-18所示的指令行的提示資訊。

此時,重新啟動Jupyter,在建立(New)時,出現新的可選核心R。另外,再次通過jupyter kernelspec list也能看到目前可用核心清單發生變化,如圖1-19所示。

6. Jupyter執行Shell指令及安裝第三方庫

Jupyter調用終端指令行指令隻需要在單元格中的指令前面加!即可。

  • !ping www.baidu.com :測試ping服務。
  • !ipconfig:檢視Windows的網絡配置資訊。

同樣,我們也可以直接調用終端的指令安裝第三方包。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(1)檢查pip指令是否可用

安裝Python第三方庫,可通過pip、easy_install(目前已經不推薦使用)、conda(Anaconda安裝方式提供)以及預設的setup方法安裝。筆者更傾向于使用pip指令安裝,其次使用setup指令安裝。

原生的Python程式(Python 2 ≥2.7.9或者Python 3 ≥3.4)或通過Anaconda安裝的環境,自帶pip指令,一般情況下可從Windows終端指令行直接使用。如果無法使用pip指令,可通過以下兩個步驟确認:

1)确認pip指令已經安裝。直接在Python安裝目錄下檢視是否有pip檔案即可,例如Windows環境下是否有pip.exe。

2)檢視pip指令執行路徑是否存在于環境變量的Path。以Windows為例,具體方法是:單擊“計算機”,滑鼠右鍵在彈出的菜單中單擊“屬性”,在彈出的視窗中選擇“進階系統設定”,在系統變量中找到名為path的變量,單擊下方的“編輯”按鈕,最後會彈出一個編輯系統變量的視窗,在此編輯變量值欄中的字元串。目的是将需要執行的腳本或程式目錄加入系統變量中,這樣在指令行視窗輸入指令時,系統會自動查找在系統中變量對應的目錄或名稱。路徑的寫法參照原有的變量值寫法:路徑包含完整路徑名,以英文分号結束。

例如,下面是筆者将Anaconda3的相關執行指令路徑加入Path中的路徑:C:Anacon-da3;C:Anaconda3Scripts;整個過程如圖1-20所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(2)使用pip指令安裝

在Jupyter單元格中,直接使用!pip package_name即可實作安裝,其中的package_name可以是本地檔案,也可以是遠端伺服器檔案。一般情況下,pip包會自動查找最新比對的版本安裝。

例如,以下3種方法可實作相同的安裝效果:

(3)使用setup指令從源碼安裝

每個第三方庫都有一個源碼檔案壓縮包,格式為.tar.gz或.zip,例如pandas-0.19.2.tar.gz、numpy-1.12.1.zip。将壓縮包從pypi(或其他官方資源)中下載下傳到要安裝的伺服器或本機并解壓(這些步驟都非常簡單),然後在Jupyter單元格的指令行視窗執行如下指令:

cd [解壓後的包含了setup.py的路徑]

!Python 3 setup.py install

上述代碼會預設執行完成指令,如果環境配置正确,會有成功安裝提示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(4)如何批量安裝Python第三方庫

在某些情況下,例如遷移Python程式或者更新、重裝等,往往在現有伺服器或主機上已經安裝了大量的庫,此時如果要在新的環境上安裝,則需要重新安裝很多第三方庫。此時,我們需要一種能夠批量安裝第三方庫的方法。整個實作過程如下:

1)批量導出第三方庫清單。

實作批量安裝第三方庫,首先要有一份安裝清單,這份清單可以從原來要遷移的主機或伺服器中擷取。具體方法為:打開系統終端,然後輸入如下指令:

!pip freeze > requirements.txt

該指令的意思是,将現有第三方庫以requirements格式導出至requirements.txt檔案中。執行完成後,在執行路徑下會産生一個新的檔案,名為requirements.txt。打開該檔案,會發現裡面包括了所有的第三方庫,如下是部分庫:

adal==1.0.1

alabaster==0.7.10

anaconda-client==1.6.5

anaconda-navigator==1.6.9

anaconda-project==0.8.0

2)批量安裝第三方庫清單到新的環境。

在新的Python環境下,執行如下指令實作安裝:

!pip install -r requirements.txt

該指令的意思是,從requirements.txt中讀取要安裝的第三方庫Python庫清單,并按指定的版本安裝到現有Python環境中。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

在我們導出的requirements.txt的内容中,可以看到每行都是一個包,且每個包都指定了版本,指定的方法是用“==”,這就是pip能看懂的格式。除了這些格式外,還有以下幾種常用的格式可以指定批量安裝清單,并且這些安裝方法可以适用于本節之前提到的場景。不同場景下的requirements.txt内容格式如下:

  • 直接批量安裝第三方庫,而不指定具體版本。此時直接寫第三方庫的名稱即可,例如本書中的示例。

    adal

alabaster

anaconda-client

anaconda-navigator

anaconda-project

在這種場景下,一般都是個人直接指定名稱,唯一需要注意的就是手動指定時,安裝包的名稱要寫對。例如skleran在安裝時的名稱是scikit-learn。

  • 指定特定的版本範圍,而不是某個版本。此時的檔案内容為:

    adal==1.0.1 # 指定版本

alabaster>=0.7.10 # 指定最低版本

anaconda-client!=1.6.5 # 指定不等于的版本

anaconda-project>0.8.0 # 指定特定版本範圍

  • 指向其他的requirements.txt檔案。常用于非常大的項目,安裝檔案往往比較多,此時會有多個清單檔案可供指定。此時的檔案内容為:

    -r requirements2.txt

-r requirements3.txt

  • 指向特定的安裝源檔案。之前我們提到過可以直接使用本地或雲端源檔案安裝Python程式的方法,這種方法也可以寫到requirements.txt裡面。寫法如下:

    ./downloads/numpy-1.9.2-cp34-none-win32.whl

http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl

pip本身是一個非常強大的第三方包/庫管理工具,包括下載下傳、安裝、更新、解除安裝、搜尋、檢視過期和版本等功能。有關pip的更多資訊,具體查閱

https://pip.pypa.io/en/stable/

7. Jupyter的擴充和插件

Jupyter的擴充和插件(Jupyter-contrib extensions)的很多功能會增加資料工作的便利性。要實作擴充,需經過兩個步驟(以下步驟建議系統終端進行):

1)安裝Python擴充包,使用pip install jupyter_contrib_nbextensions或conda install -c conda-forge jupyter_contrib_nbextensions即可完成,具體提示資訊如圖1-21所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

2)安裝JavaScript和CSS檔案。此步驟将Nbextensions的JavaScript和CSS檔案複制到jupyter伺服器的搜尋目錄中,并編輯一些jupyter配置檔案。通過指令jupyter contrib nbextension install --user --skip-running-check實作。完成結束後資訊如圖1-22所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

上述過程結束後,重新開機Jupyter程式,會發現原有的主導航菜單欄中多了一個“Nbextensions”,如圖1-23所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

單擊“Nbextensions”切換到擴充和插件視圖,要啟用對應的功能隻需勾選即可,筆者的配置項如圖1-24所示。在此介紹幾個常用擴充和插件。

  • Collapsible Headings:該擴充在大型Jupyter檔案中很有用,可折疊的标題能收起/放開Notebook中的特定内容,使整個頁面看起來更整潔。
  • Codefolding:上面的功能是折疊标題,這裡的功能是折疊代碼,尤其當代碼段比較長且功能較多時常用。
  • Table of Contents:自動生成目錄,該功能類似于Word中的導航視圖,都是在左側提供一個基于标題的目錄導航清單,在檔案功能較多時,查找和浏覽非常友善。
  • Ruler:用于顯示每行代碼目标字元數長度,預設每行字元數為78。特定長度的代碼更利于閱讀,這是程式設計中的基本原則。
  • Comment/Uncomment Hotkey:通過Alt+C快捷鍵對代碼進行注釋,可以注釋一行也可以注釋多行,也可以二次鍵入取消注釋。
  • Autopep8:代碼的規則和美化是程式員的必修課,在Jupyter中可以選擇自動美化功能,勾選該選項即可根據PEP8規範美化代碼,在代碼中使用Alt+A快捷鍵即可。當然,該功能需要同步使用pip install autopep8安裝所需包才能實作。
  • ScrollDown:當系統輸出的内容過長時,自動出現滾動條。
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

更多關于Jupyter擴充和插件的說明,請見

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html

8. Jupyter的配置

配置Jupyter不是必需的步驟,但更好的配置能提高使用技能和程式設計效率。配置之前,需要手動生成一個配置檔案,在指令行中輸入jupyter notebook --generate-config。完成之後,系統會有如下提示:Writing default config to: C:UsersAdministrator.jupyterjupyter_notebook_config.py。

此時,我們根據上述輸出資訊,進入配置檔案的路徑:C:UsersAdministrator.jupyter,然後使用文本編輯器,例如Notepad,打開jupyter_notebook_config.py。

如果僅僅在目前個人PC上使用,基本不需要做過多設定;但如果需要作為Web服務,提供給其他人使用,那麼需要設定IP、密碼、授權、端口等很多内容。這裡僅介紹個人PC的預設工作目錄設定。

筆者的Jupyter預設工作目錄是C:UsersAdministrator,但筆者想要将其設定為本書附件的根目錄。方法是:使用搜尋功能找到“c.NotebookApp.notebook_dir =”代碼行,取消其注釋(去掉前面的#),并在後面設定具體目錄:D:[書籍]python資料分析與資料化營運9_再版附件。

在實作上述設定後,需要将“開始-所有程式-Anaconda3(64-bit)”中的快捷方式的目标值最後面的%USERPROFILE%删除并儲存,如圖1-25所示。重新開機一個新的Jupyter任務即可。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

Jupyter的應用廣泛,限于篇幅無法展開,有關Jupyter的更多使用方法和技巧,請查閱

http://jupyter.readthedocs.io/en/latest/

。本書的代碼部分,将使用Jupyter Notebook完成,讀者可在附件中找到。

1.2.3 Python第三方庫

Python第三方庫包括互動開發庫、科學計算庫、機器學習庫、自然語言庫、資料庫連接配接庫、圖像處理庫、網絡爬蟲庫、圖像展示庫等。本節介紹的第三方庫大多是書中用到的主要庫,在各章中還會提到一些小衆的應用庫。

1.科學計算庫

(1)Numpy

NumPy(Numeric Python的簡稱)是Python科學計算的基礎工具包,也是Python做資料計算的關鍵庫之一,同時又是很多第三方庫的依賴庫。預設情況下,Anaconda中已經安裝了該包,如果讀者系統環境中沒有該包,安裝會稍微費點功夫。原因是之後我們用到的sklearn的安裝,會依賴帶有MKL子產品的Numpy包,而這個包目前需要自己安裝。有需要的讀者,可直接從

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

中下載下傳,例如numpy-1.15.2+mkl-cp37- cp37m-win_amd64.whl。

安裝成功之後,使用import numpy導入。有關Numpy的安裝和更多資訊,請查閱

http://www.numpy.org/
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(2)Scipy

Scipy(Scientific Computing Tools for Python的簡稱)是一組專門用于科學和工程計算不同場景的主題工具包,它提供的主要功能側重于數學、函數等相關方面,例如積分和微分方程求解等。預設情況下,Anaconda中已經安裝了該包,如果讀者系統環境中沒有該包,可在Jupyter中使用!pip install scipy指令安裝即可。安裝成功之後,使用import scipy導入。有關Scipy的安裝和更多資訊,請查閱

https://www.scipy.org/install.html

(3)Pandas

Pandas(Python Data Analysis Library的簡稱)是一個用于Python資料分析的庫,它的主要作用是進行資料分析。Pandas提供用于進行結構化資料分析的二維的表格型資料結構DataFrame,類似于R中的資料框,能提供類似于資料庫中的切片、切塊、聚合、選擇子集等精細化操作,為資料分析提供了便捷方法。另外,Pandas還提供了時間序列的功能,用于金融行業的資料分析。預設情況下,Anaconda中已經安裝了該包,如果讀者系統環境中沒有該包,可在Jupyter中使用!pip install pandas指令完成安裝。安裝成功之後,使用import pandas導入。有關Pandas的安裝和更多資訊,具體查閱

http://pandas.pydata.org

(4)Statsmodels

Statsmodels是Python的統計模組化和計量經濟學工具包,包括一些描述性統計、統計模型估計和統計測試,內建了多種線性回歸模型、廣義線性回歸模型、離散資料分布模型、時間序列分析模型、非參數估計、生存分析、主成分分析、核密度估計,以及廣泛的統計測試和繪圖等功能。預設情況下,Anaconda中已經安裝了該包,如果讀者系統環境中沒有該包,可在Jupyter中使用!pip install statsmodels指令完成安裝。安裝成功之後,使用import statsmodels導入。有關Statsmodels的安裝和更多資訊,具體查閱

http://statsmodels.sourceforge.net/index.html

(5)Imblearn

Imblearn是用于樣本均衡處理的重要第三方庫,它具有多種樣本處理的內建模式,包括過抽樣、欠抽樣等。讀者若需要可先在系統終端的指令行使用!pip install imbalanced-learn或!conda install -c glemaitre imbalanced-learn安裝;安裝成功後,在Jupyter中使用import imblearn(注意導入的庫名)檢查安裝是否正确,具體查閱

https://imbalanced-learn.readthedocs.io/en/stable/install.html

(6)gplearn

gplearn擴充了scikit-learn機器學習庫,用符号回歸執行遺傳程式設計(GP)。遺傳程式設計主要有兩個對象經常使用,一個是gplearn.genetic.SymbolicRegressor,另一個是gplearn.genetic.SymbolicTransformer。讀者可使用!pip install gplearn安裝該庫,通過from gplearn.genetic import SymbolicTransformer測試是否正确安裝。有關該庫更多資訊,具體查閱

https://gplearn.readthedocs.io/en/stable/intro.html

2. 機器學習庫

(1)scikit-learn

scikit-learn(有時也稱為SKlearn)是一個基于Python的機器學習綜合庫,内置監督式學習和非監督式學習兩類機器學習方法,包括各種回歸、K近鄰、貝葉斯、決策樹、混合高斯模型、聚類、分類、流式學習、人工神經網絡、內建方法等主流算法,同時支援預置資料集、資料預處理、模型選擇和評估等方法,是一個非常完整的機器學習工具庫。scikit-learn是Python資料挖掘和機器學習的主要庫之一。預設情況下,Anaconda中已經安裝了該包,如果讀者系統環境中沒有該包,可在Jupyter中使用!pip install sklearn指令完成安裝(注意庫名稱為sklearn)。安裝成功之後,使用import sklearn導入。有關scikit-learn的安裝和更多資訊,具體查閱

http://scikit-learn.org/stable/index.html
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

(2)XGBoost

GBDT、XGBoost、LightGBM都是在競賽和工業界使用頻繁且經過檢驗效果非常好的機器學習庫,都能有效地應用到分類、回歸、排序問題,并且是內建類機器學習算法的典型代表。GBDT是以決策樹(CART)為基學習器(Base estimateor)的Gradient Boosting算法,XGBoost擴充和改進了GDBT,XGBoost得益于并行化的處理,其算法運作更快,并且更适合大資料的分布式處理(這可能是它最核心的亮點之一)。另外,由于XGBoost的基學習器除了CART外,還可以用線性分類器,是以其适用的場景更廣。除此以外,它在分割點的查找、缺失值或資料稀疏問題處理等方面也做了相對優化,是以XGBoost準确率也相對高一些。該庫的安裝直接使用!pip install xgboost指令即可,使用import xgboost驗證是否成功安裝。有關該庫的更多資訊,請具體查閱

https://xgboost.readthedocs.io/en/latest/

(3)LightGBM

LightGBM是微軟推出的梯度boosting架構,也使用基于學習算法的決策樹,它與XGB-oost,有相同的特性,例如都基于分布式的學習架構,都支援大規模資料處理和計算,都有更高的準确率。它比XGBoost的主要優化點在于通過多種方式減少記憶體的使用,例如基于Histogram的決策樹算法、帶深度限制的Leaf-wise的葉子生長政策、Cache命中率優化等。是以,它也是非常好的并行內建學習方法。LightGBM的安裝官網的過程略顯複雜,讀者可直接使用!pip install lightgbm指令安裝,之後使用import lightgbm測試安裝是否成功。有關該庫的更多資訊,請具體查閱

https://lightgbm.readthedocs.io/en/latest/

(4)TPOT

TPOT是一款Python自動化機器學習工具,它使用遺傳程式設計方式優化機器學習管道(pipelines)。它通過探索不同的pipelines來測試效果,并自動找到最适合資料的pipelines方案。它本身基于sklearn做了二次封裝,通過一定算法來自動尋找所用的算法以及參數。該庫需要讀者手動安裝,如果讀者已經通過Aanconda安裝了Python環境,那麼需要先通過!pip install deap update_checker tqdm stopit指令驗證相關元件,再通過!pip install tpot指令安裝該庫,完成後使用import tpot測試是否成功。但如果沒有Anaconda環境,那麼安裝過程略顯複雜,請讀者參考

https://epistasislab.github.io/tpot/installing/

查閱更多資訊。

3.自然語言處理庫

(1)結巴分詞

由于NLTK本身不支援中文分詞,是以在針對中文的處理過程中,我們會引入其他分詞工具,例如結巴分詞。結巴分詞是國内的Python文本處理工具包,分詞模式分為3種模式:精确模式、全模式和搜尋引擎模式,支援繁體分詞、自定義詞典等,是非常好的Python中文分詞解決方案,可以實作分詞、詞典管理、關鍵字抽取、詞性标注等。結巴分詞預設不在Anaconda的安裝包中,讀者可在Jupyter中直接使用!pip install jieba指令安裝即可。安裝成功之後,使用import jieba導入。有關結巴分詞的安裝和更多資訊,具體查閱

https://github.com/fxsjy/jieba/

(2)Gensim

Gensim是一個專業的主題模型(主題模型發掘文字中隐含主題的一種統計模組化方法)Python工具包,用來提供可擴充統計語義、分析純文字語義結構以及檢索語義上類似的文檔。Gensim預設不在Anaconda的安裝包中,讀者可在Jupyter中直接使用!pip install gensim指令安裝。安裝成功之後,使用import gensim導入。更多資訊請查閱

http://radimrehurek.com/gensim/

4.資料庫連接配接庫

資料庫存儲是企業資料存儲的基本方式,資料庫類型包括MySQL、Oracle、SQL Server、DB2、Sybase等,基于大資料場景下還會包括Hive、Hbase、MongoDB、Redis等的資料存儲。

(1)MySQL連接配接庫

為了友善讀者練習和應用,本書使用MySQL資料庫進行資料存儲、查詢等操作。MySQL連接配接庫需要自己安裝。要使Python連接配接MySQL,既可以通過MySQL官方連接配接程式,也可以使用第三方庫來實作。

1)使用MySQL官方程式。到

https://dev.mysql.com/downloads/connector/python/

直接下載下傳對應版本Python的程式。由于在筆者撰寫此書時,Windows官方對Python 3的支援僅到3.5版本,而筆者的Python程式是3.7版本,是以暫時沒有官方支援的程式版本。

2)使用第三方庫PyMySQL。在Python 2中,我們可以使用第三方庫MySQLdb,而在Python 3中,我們使用PyMySQL連接配接MySQL資料庫。直接在Jupyter中使用!pip install pymysql指令即可完成安裝。安裝成功之後,使用import pymysql導入。更多資訊請查閱

https://pypi.python.org/pypi/PyMySQL

(2)MongoDB連接配接庫

由于不同企業的大資料平台的資料存儲不同,并且即使是同一種存儲方案,也會由于系統環境和存儲元件的版本不同導緻适配和連接配接的差異,本節僅以MongoDB連接配接包為例進行說明。

MongoDB是由C++語言編寫的分布式檔案存儲的資料庫,它是以Key-Value(鍵值對)形式面向文檔存儲的非關系型資料庫。Python連接配接MongoDB需要手動安裝,可以使用PyMongo(MongoDB官方驅動程式),在Jupyter中可通過!pip install pymongo指令進行安裝。安裝成功之後,使用import pymongo導入。有關PyMongo的安裝和更多資訊,具體查閱

http://api.mongodb.com/python/current/tutorial.html

5. HTML處理庫

網絡是企業重要的外部資料來源,是以擷取和處理HTML的資訊是Python資料接入和處理的重要能力。

Beautiful Soup

Beautiful Soup是網頁資料解析和格式化處理工具,從嚴格意義上來講它不是一個純抓取類的工具,因為它不具備抓取能力,通常配合Python的urllib、urllib2等庫一起使用。Beautiful Soup預設已經在Anaconda的安裝包中,讀者環境沒有該包可在Jupyter中直接使用!pip install beautifulsoup4(注意後面有個“4”)指令完成安裝。安裝成功之後,使用import bs4(注意導入的庫名與安裝的庫名不一緻)導入。有關Beautiful Soup的安裝和更多資訊,具體查閱

https://www.crummy.com/software/BeautifulSoup/

6.圖形展示庫

圖形展示是資料可視化的必要内容,在Python中,通常使用Matplotlib實作圖形展示。

(1)Matplotlib

Matplotlib是Python的2D繪圖庫,它以各種硬拷貝格式和跨平台的互動式環境生成出版品質級别的圖形,開發者僅編寫幾行代碼,便可以生成繪圖、直方圖、功率譜、條形圖、錯誤圖、散點圖等。Matplotlib預設已經在Anaconda的安裝包中,如果讀者環境沒有該包,可在Jupyter中直接使用!pip install matplotlib指令完成安裝。安裝成功之後,使用import matpl-otlib導入。更多具體資訊請查閱

http://matplotlib.org

(2)Pyecharts

在Web端流行的Echart幾乎是圖形展示的代名詞。它支援衆多的圖形展示,功能非常強大。Pyecharts則可以調用Echart來生成各種各樣的圖形,例如關系圖、樹形圖、地圖、瀑布圖等,本書也會用該庫做展示。Pyechart需要讀者手動安裝,在Jupyter中執行!pip install pyecharts指令安裝即可,通過from pyecharts import Bar導入特定的庫,本代碼導入的是條形圖。有關該庫的該庫的更多資訊,請通路pyecharts.org。

7.圖像處理庫

圖像處理提供針對視訊和圖像資料的輸入、分析、處理和挖掘的功能,Python最常用的圖像和視訊處理庫是Pillow和OpenCV。

(1)PIL和Pillow

PIL(Python Imaging Library的簡稱)是一個常用的圖像輸入、處理和分析的庫,提供了多種資料處理、變換的操作方法和屬性。但是由于PIL僅支援到2.7版本且已經很久沒有更新,是以一群志願者基于PIL釋出了其新的分支Pillow。Pillow同時支援Python 2和Python 3,并且加入很多新的功能,是以我們可以直接使用Pillow來代替PIL。Pillow預設已經在Aanconda的安裝包中,讀者環境中如果沒有,可在Jupyter中使用!pip install pillow指令安裝。安裝成功之後,在Jupyter中使用import PIL(注意大小寫且注意導入的包名稱)導入。有關該庫的更多資訊,請查閱

https://pillow.readthedocs.io/en/latest/index.html

(2)OpenCV

OpenCV是一個強大的圖像和視訊工作庫。它提供了Python、C、C++、和Java接口,支援Windows、Linux、Mac OS、iOS和Android。OpenCV的設計效率很高,它以優化的C / C ++編寫,庫可以利用多核處理。除了對圖像進行基本處理外,還支援圖像資料模組化,并預制了多種圖像識别引擎。OpenCV預設不在Anaconda的安裝包中,讀者可通過!pip install opencv-python和!pip install opencv-contrib-python兩個指令分别安裝OpenCV開發包及擴充。上述操作完成後,在Jupyter中使用import cv2(注意庫名)導入。有關OpenCV的安裝和更多資訊,請查閱

http://opencv.org
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

8.其他庫

本書中根據實際案例,還會安裝不同的第三方庫/包,具體會在場景中說明,在此不一一列出。

1.2.4 資料庫和用戶端

在本書中,大多數案例資料都會直接從資料庫中讀取,這是因為實際應用中的營運資料基本上也是在資料庫中直接擷取并進行初步的資料探查工作,是以資料庫是開展資料工作的基礎工具。為了提高資料庫的操作和使用效率,并能使更多讀者開始入門資料庫應用,我們會使用用戶端工具,通過界面化的方式降低資料庫的應用難度。資料庫我們選擇MySQL,用戶端使用Navicat。

關于MySQL和Navicat軟體的下載下傳,網絡資源非常豐富,請讀者自行尋找并下載下傳安裝,筆者的MySQL為64位、5.7.21版本。

資料庫安裝并配置完成之後,通過Navicat用戶端進行連接配接。方法是:單擊頂部菜單“檔案-建立連接配接-MySQL”,在彈出的對象框中輸入如下資訊,如圖1-26所示。

  • 連接配接名:用來識别不同連接配接的名稱。
  • 主機名/IP位址:本地使用127.0.0.1,遠端伺服器填寫實際IP位址。
  • 端口(埠):在配置MySQL時設定的端口,預設為3306(具體取決于配置MySQL時的設定)。
  • 使用者名和密碼:在配置MySQL時建立的使用者名(預設為root)和密碼(配置過程中自定義輸入的)。
    帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

輸入完成後,單擊“連接配接測試”,如果資訊配置正确并且MySQL服務可用,那麼會傳回“連接配接成功”字樣。

如果傳回狀态提示無法連接配接,如“Can't connect to MySQL server on 'localhost' (10061) (2003)”,那麼可能是MySQL沒有啟動。具體啟動方法是:

單擊電腦左下角的“開始-運作”,輸入指令services.msc,在打開的“服務管理器”中找到MySQL并輕按兩下。在打開的屬性視窗中,單擊“啟動”按鈕,服務便可啟動,如圖1-27所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

有關使用用戶端以及Python直接操作資料庫的具體應用,會在後續案例中陸續介紹。

1.2.5 SSH遠端用戶端

對于資料工作而言,如果隻是在本機上做資料分析處理和模組化工作,通常隻能利用有限的個人電腦性能實作有限規模的資料計算能力。當資料計算量或資料規模很大時,通常會選擇在本地進行資料測試,然後到伺服器上運作Python程式。此時,我們需要一個能在本機和伺服器之間進行資料、資訊和指令互動的SSH遠端用戶端工具。

對大多數資料工作者而言,本地電腦作業系統以Windows居多,而伺服器作業系統以Linux系統居多,是以SSH遠端用戶端工具的主要作用就是連接配接Windows和Linux。此類工具很多,包括XShell、SecureCRT等,筆者使用的是SecureCRT,如圖1-28所示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

1.3 内容延伸:Python的OCR和tensorflow

1.3.1 OCR工具:Tesseract-ocr

OCR(Optical Character Recognition,光學字元識别)是一個非常“古老”的話題,原因是這項工作在上世紀90年代就已經普遍流行。但在大資料的背景下,我們要做的不是識别普通的光學字元(光學掃描文字),而是把範圍擴大到識别更多領域的文字資訊,例如手寫識别、工業銘牌文字識别等非标準化、非印刷體、非傳統資料錄入的文字資訊識别。

tesseract-ocr是一個Google支援的開源OCR圖文識别項目,支援超過200種語言(包括中文),并支援自定義訓練字元集,支援跨Windows、Linux、Mac OSX多平台使用。

不同的平台安裝tesseract-ocr和配置差異較大,下面以Windows為例說明其安裝過程。

1)進入

https://sourceforge.net/projects/tesseract-ocr-alt/files/

下載下傳名為“tesseract-ocr-setup-3.02.02.exe”的安裝包。

2)安裝下載下傳tesseract-ocr-setup-3.02.02.exe。

安裝成功之後,在系統終端指令行視窗輸入tesseract,可直接調用ocr指令。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

有關tesseract-ocr的更多資訊,具體請查閱

https://github.com/tesseract-ocr/tesseract/wiki

1.3.2 機器學習架構:TensorFlow

TensorFlow是谷歌基于DistBelief進行研發的第二代人工智能學習系統,它是使用圖模型将複雜的資料結構傳輸至人工智能神經網中進行分析和處理的架構,被廣泛用于語音識别或圖像識别等多項機器深度學習領域。

在TensorFlow出現之前,我們之前介紹的scikit-learn幾乎是Python機器學習中最流行的工具(或者至少是最流行的工具之一),借助谷歌的強大号召力以及在人工智能領域的技術實力,TensorFlow正在慢慢凸顯其優勢,已經成為目前機器學習領域開源工具最流行的架構。TensorFlow支援跨平台的應用,最新版本已經支援Windows。從1.4.0開始的版本,Tensorflow已經支援X86架構的個人PC,但僅限于Python 3版本以上。

在Windows上安裝Tensorflow,使用!pip install tensorflow指令即可實作。安裝完成後,在Jupyter中輸入import tensorflow時沒有錯誤資訊,就說明該包已經成功安裝。

有關TensorFlow的更多資訊,具體查閱www.tensorflow.org 。

1.4 第1個用Python實作的資料化營運分析執行個體、銷售預測

1.4.1 案例概述

本節通過一個簡單的案例,來介紹如何使用Python進行資料化營運分析。

案例場景:每個銷售型公司都有一定的促銷費用,促銷費用可以帶來銷售量的顯著提升。當給出一定的促銷費用時,預計會帶來多大的商品銷售量?

在“附件-chapter1”中的data.txt文檔中存儲了模組化所需的原始資料及chapter1.ipynb中案例完整代碼。以下是原始資料概況。

  • 來源:生成的模拟資料,非真實資料。
  • 用途:用來做第1個銷售預測案例。
  • 次元數量:1。
  • 記錄數:100。
  • 字段變量:第1列是促銷費用money,第2列是商品銷售量amount。
  • 資料類型:全部是浮點型。
  • 是否有缺失值:否。

1.4.2 案例過程

下面逐漸解析整個分析和實踐過程。

第1步導入庫

本案例中,我們使用以下幾個庫。

  • Pandas:讀取資料和基本處理。
  • sklearn:線性回歸方法庫,包含linear_model和MSE/R2兩個檢驗庫。
  • matplotlib:圖形展示庫,用來在模組化前做多個字段關系分析,以确認模組化思路。

代碼如下:

import pandas as pd

from matplotlib import pyplot as plt

from sklearn import linear_model

from sklearn.metrics import mean_squared_error, r2_score

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

第2步讀取資料

本案例中的資料為txt檔案,我們使用Python預設的讀取檔案的方法。代碼如下:

raw_data = pd.read_csv('data.txt')

本示例沒有使用傳統的open方法,而是用了Pandas自帶的讀取csv資料庫。事實上,對于資料檔案的讀取,一般都不會用原生的open方法,類似于Pandas、Numpy等帶很多可以讀取多種格式資料檔案的方法。由于程式檔案和資料檔案處于同一個目錄下,是以無須指定路徑;也可以通過相對路徑和絕對路徑來設定完整路徑。

指定相對路徑:'../data/data.txt',含義是“data.txt”位于目前Python工作目錄的父級目錄中的data檔案夾中。

指定絕對路徑:'d:/python_data/data/data.txt',該方式中的絕對路徑需要注意使用正斜杠/,而不是Windows預設的反斜杠;如果一定要使用反斜杠,那麼需要寫成'd:\python_data\data\data.txt',用轉義字元表示。

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運
帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

第3步資料預處理

在本階段,主要實作對讀取的清單資料進行清洗轉換,以滿足資料分析展示和資料模組化的需要。代碼如下:

num = int(raw_data.shape[0]*0.7)

x,y = raw_data[['money']],raw_data[['amount']]

x_train,x_test = x[:num],x[num:]

y_train,y_test = y[:num],y[num:]

第1行的目的是設定一個用于确認資料交叉檢驗比例的門檻值條件,預設是用70%的資料做訓練,用剩餘30%的資料做測試。

第2行是設定模組化用的x(促銷費用money)和y(商品銷售量amount)。

第3行和第4行分别用于按照第1行設定的記錄數将訓練集和測試集區分開。具體原理後續我們會講到。

第4步探索性資料分析

到現在為止我們已經擁有了格式化的資料,但到底對這兩列資料集應該使用哪種模型還未知,是以先通過散點圖來觀察一下。代碼如下:

plt.scatter(x_train, y_train)

代碼的意思是用一個散點圖來展示x_train和y_train。代碼執行後會出現如圖1-29所示的散點圖。

通過散點圖發現,x_train與y_train的關系呈現明顯的線性關系:當x_train增大時,y_train增大;當x_train減小時,y_train減小。初步判斷可以選擇線性回歸進行模型拟合。

第5步資料模組化

模組化階段我們使用sklearn中的線性回歸子產品實作,代碼如下:

model = linear_model.LinearRegression()

model.fit(x_train, y_train)

帶你讀《Python資料分析與資料化營運(第2版)》之一:Python和資料化營運第1章 Python和資料化營運

代碼model = linear_model.LinearRegression()的作用是建立一個模型對象,後續所有的模型操作都基于該對象産生。

代碼model.fit(x_train, y_train)的作用是将x_train和y_train分别作為自變量和因變量輸入模型進行訓練。

第6步模型評估

模型已經建立完成,本階段進行模型拟合的校驗和模型評估,代碼如下:

predict_test_y = model.predict(x_test)

print("Mean squared error: %.0f"% mean_squared_error(y_test, predict_test_y))

print('Variance score: %.2f' % r2_score(y_test, predict_test_y))

模型的評估基于簡單的交叉檢驗方法進行,即先用訓練集的資料做訓練,然後用測試集的x_test預測得到的值與真實的y_test做對比。檢驗中用到了兩個名額,MSE和R2,有關這些名額的具體用法後續會陸續提到。

Mean squared error: 65823229

Variance score: 0.72

上述的結果反映了目前的模型情況,由于該模型沒有經過細緻調參以及多次檢驗來做更多優化,是以初步得到的結果來看還算可以。

第7步線性回歸參數

由于模型是線性回歸,是以我們可以試着把線性回歸的方程寫出來,便于了解和應用。

model_coef = model.coef_

model_intercept = model.intercept_

print('coef is: ',model_coef)

print('intercept is: ',model_intercept)

代碼model_coef = model.coef_的作用是擷取模型的自變量的系數并指派為model_coef,代碼model_intercept = model.intercept_的作用是擷取模型的截距并指派為model_intercept。輸出結果如下:

coef is: [[2.20734937]]

intercept is: [9301.37803984]

通過上述步驟我們可以獲得線性回歸方程y = model_coefx + model_intercept,即y= 2.20734937x+ 9301.37803984。

第8步銷售預測應用

我們已經擁有了一個可以預測的模型,現在我們給定促銷費用(x)為84610,銷售預測代碼如下:

new_x = 84610

pre_y = model.predict([[new_x]])

print(pre_y)

代碼new_x = 84610的作用是建立促銷費用常量,用來做預測時的輸入。代碼pre_y = model.predict(new_x)的作用是将促銷費用常量new_x輸入模型進行預測,将預測結果指派為pre_y。代碼print(pre_y)的作用是列印輸出銷售預測值。

代碼執行後,會輸出[[196065.20852406]],這就是預測的銷售量。為了符合實際銷量必須是整數的特點,後續可以對該資料做四舍五入。

1.4.3 案例小結

本案例看似篇幅很長,其實代碼本身隻用了20多行,實作了導入庫、擷取資料、資料預處理、資料展示分析、資料模組化、模型評估和銷售預測的完整步驟,麻雀雖小五髒俱全。

案例場景雖然簡單,但完整地示範了如何從輸入資料到輸出結果的整個過程。其中,我們用到了以下基礎知識:

  • 使用Pandas讀取資料檔案。
  • 使用Pandas做切片等資料預處理工作。
  • 使用Matplotlib進行散點圖展示。
  • 使用sklearn進行線性回歸的訓練和預測。
  • 使用交叉檢驗配合mean_squared_error和r2_score做模型效果評估。
  • 使用print列印輸出結果。

這是本書的第1個完整案例,目的是引導讀者快速進入使用Python進行資料化營運的場景中來。筆者并不希望讓讀者陷入複雜的邏輯和太多知識當中,以下内容僅做拓展思考之用:

  • 通過散點圖初步判斷線性回歸是比較好的拟合模型,是否有其他回歸方法會得到更好的效果?例如廣義線性回歸、SVR(SVM中的回歸)、CART(分類回歸樹)等。
  • 通過圖形法觀察資料模型,隻适合用于二維資料,如果資料輸入的次元超過2個呢?
  • 本案例中的資料量比較小,如果資料量比較大,假如有1000萬條,如何進行資料歸約?
  • 回歸模型除了案例中的評估名額外,還有哪些名額可以做效果評估?

1.5 本章小結

内容小結:本章分别從Python和資料化營運的關系,資料化營運所需要的Python相關工具元件入手,介紹了有關Python和資料化營運的理念、關系、流程和工具,并通過一個小案例示範了如何通過Python進行銷售預測。

重點知識:有關Python的相關工具部分,這些内容是本書後續所有工作的基礎,希望讀者能在本機上進行安裝、測試和學習。尤其是本書的代碼執行個體都是基于Jupyter操作的,這是做資料分析、互動和展示的優秀工具。

外部參考:限于篇幅,本章沒有對Python和相關工具的基礎知識進行講解,隻是介紹了涉及案例中的部分内容。是以,很多知識需要讀者額外“補習”,除了Python基礎知識和科學計算以外,還有資料庫、Tesseract、TensorFlow等工具,它們将構成資料基礎工作和資料延伸工作的基石。作為本章内容的延展,筆者列出了相關資源,希望給予讀者必要參考。

(1)Python參考資源

以下列出了與Python相關的主要的官方參考資源和資訊。

Python官方網站:

https://www.python.org/

。Python最權威的網站,包含有關Python的幫助手冊、新聞、事件、應用、案例、社群等,并提供官方Python所有版本和環境的安裝程式和安裝包。

Python pypi第三方庫:

https://pypi.org/

。原來的pupi.python.org将重定向到新的網址。Python使用pip指令安裝時,請求的資源就來源于該網站,這裡彙聚了衆多第三方Python程式的軟體倉庫。

Stack Overflow:

http://stackoverflow.com/

。Stack Overflow是一個與程式相關的IT技術問答網站,使用者可以在網站上免費送出、浏覽和檢索問題。大多數情況下,你的問題都不是第一次出現,是以有問題了不妨先在這裡找找答案。

Python内部幫助文檔和資訊:在指令行視窗使用help()和dir()指令。例如:通過dir(numpy.mean)查找numpy庫下面的mean函數的大部分屬性,通過help(numpy.mean)獲得該函數的具體介紹、參數解釋、應用舉例等詳細資訊。這是針對特定知識點最為主要的學習參考資源。

(2)Python學習書籍

大多數情況下,通過上述方法可以了解到Python基本知識,但以下圖書資源會幫助你更加深入地了解Python及其相關庫的工作方式和邏輯,尤其是對于資料挖掘、機器學習等領域的認知。

《利用Python進行資料分析(Python for Data Analysis)》,是Python用于資料分析的專業書籍,介紹了Python中用于資料分析的幾個主要科學計算和展示庫Nunpy、Pandas、Matplotlib等。雖然書中對這些庫的講解略粗,但全書的邏輯體系完整,适合作為資料分析和挖掘工作者的入門閱讀資料。

《Python資料分析與挖掘實戰》,是從資料工作流的方式展開介紹Python的資料應用,書籍的邏輯結構較為完整,後面也有部分案例的介紹,适合對Python有一定了解的資料工作者閱讀。

《機器學習實戰(Machine learning in action)》,這是使用Python進行機器學習的專業書籍,需要讀者具有相當的算法、程式和模型專業知識,适合中進階資料挖掘和模組化工程師閱讀。

《集體智慧程式設計》,這是使用Python進行機器學習的專業書籍,與傳統機器學習書籍不同的是,該書沒有按照算法分類進行分别闡述,而是從應用的角度分場景介紹。書中需要讀者了解工程、算法和模型知識,更适合中進階資料挖掘、模組化工程師、程式員閱讀。

《Python基礎教程》,這是一本純Python程式設計語言的介紹書籍,其中主要圍繞每個方法、條件、函數、對象、屬性等進行介紹,适合程式員以及想深入了解Python工作原理和邏輯的讀者查閱。

(3)MySQL相關

資料分析師或挖掘工程師對資料庫的應用語言主要集中在DDL(本機操作)和DML(本機和伺服器操作)上,而DCL和TCL涉及相對較少。是以建議讀者重點了解前兩種語言的相關知識。

MySQL官方資源:

https://dev.mysql.com/doc/

。所有有關MySQL的官方資訊和知識都可以在這裡找到。

MySQL第三方教程:

http://www.runoob.com/mysql/mysql-tutorial.html

。言簡意赅地介紹MySQL的基本用法,并且是全中文的按照用法主題分類,适合作為知識查找工具。

《深入淺出MySQL》,這是一本比較完整地闡述MySQL的開發、設計、運維、管理等方面内容的書籍,内容全面,并且有适合初學者的章節。

(4)Tesseract-OCR相關

有關tesseract的資源不多,目前主要是官方資訊。

Tesseract wiki:

。頁面右側按照不同的主題頁面展示,可直接點選對應标題檢視。

Tesseract介紹:

https://github.com/tesseract-ocr/docs

。各種會議和示範的PPT材料和介紹資訊。

Tesseract訓練資料集:

https://github.com/tesseract-ocr/tessdata

。注意頁面中是Tesseract 4版本用的資料集,其他版本請檢視頁面底部資訊入口。

Tesseract語言檔案:

https://github.com/tesseract-ocr/langdata

。按照語言類别歸類到檔案,用來為特定的語言做重新訓練時的主要過程資料和檔案。

(5)TensorFlow相關

TensorFlow作為2015年年底“剛”開源的機器學習架構,其學習資源增長非常快,其學習資源不多,原因是開源之後即使有大型公司或團隊使用,也需要經過一定時間的技術實踐和應用。

Tensorflow官方網站:

http://www.tensorflow.org/

。要打開這個網站需要一定的工具或技巧。

Tensorflow中文社群:

http://www.tensorfly.cn/

。相當于漢化版的官方網站。

TensorFlow中文社群論壇:

https://www.tensorflowers.cn/

。這是TensorFlow與Caicloud (才雲)聯合發起和建立的TensorFlow中文社群論壇。

《TensorFlow技術解析與實戰》:目前Tensorflow的書籍已經不少,但是有層次、有邏輯且實戰性強的綜合書籍不多,這本書算是一本。

谷歌機器學習官方資源:

https://developers.google.cn/machine-learning/crash-course/

。雖然這是有關機器學習的,但是也涉及Tensorflow的應用講解。

極客學院的Tensorflow官方文檔中文版:

http://wiki.jikexueyuan.com/project/tensorflow-zh/

。在Tensorflow剛開源1個多月,極客學院就組織了很多人進行翻譯。

應用實踐:讀者可以自己手寫一個Python工作(比如預測)案例,也許在這個過程中會出現很多意想不到的問題,但别擔心,總有很多途徑可以解決這些問題,并且解決問題的過程正是學習的過程,通過簡單的練習可以掌握Python工作的基本原理和方法。