注:無論是任何一門語言,剛開始入門的時候,語言運行環境的搭建都是一件不輕松的事情。
Python的運行環境
要運行或寫Python代碼,就需要Python的運行環境,主要的Python有以下三類:
- 原生態的Python:就是直接從Python的官網下載,然后安裝使用。這類方法最簡單直接,但是后期不容易維護;
- 一些其他類型的Python發行本:這種類型的Python一般與一些package和其他工具整合在一起,類似於定制版的Python,易於安裝和使用,例如用的比較多的Anaconda發行版;
- 使用docker來提供Python的運行環境:使用該方法,不用在自己電腦上直接安裝Python的,只用在docker中構建好相應的Python的image就好了。
回想自己使用Python的過程,一開始也是直接到Python的官網上下載最新版本的安裝包。安裝完Python后,添加環境變量,在cmd中用pip一個一個安裝需要使用的package。每次都是重復這樣的過程,有時候會遇到一些莫名其妙的問題,比如某些package無法安裝成功;有時候只能下源碼自己編譯安裝。有時候還會需要不同版本的Python,電腦里就會出現多個版本的Python。
現在后面兩類方法用的比較多。
關於開發環境
還記得有段時間接觸到Java,一直分不清楚JRE和JDK的區別。現在終於搞明白了,JRE是運行是Java運行環境(Java Runtime Environment),可以用來運行Java的代碼;JDK是Java開發工具包(Java Developer's Kit),即Java的開發環境,主要用來寫代碼。
寫代碼時,有一個好的集成開發環境(integrated development environment,IDE)會讓我們事半功倍,包括但不限於以下這些優點:
- 語法檢查;
- 提示及命令補全;
- 好看的配色和字體;
- 強大的debug功能;
- 對大型project的管理功能。
我用的比較多的IDE包括:PyCharm,Spyder和Jupyter notebook.
- PyCharm在開發大型項目時是首選,但是平時分析數據時就顯得有些笨重了;
- Spyder主要用於科學計算(與RStudio非常像,可以單行運行);但是對內存要求比較大,數據量比較大的時候容易崩潰;
- Jupyter notebook算是新生代的數據科學界的IDE,非常適合做數據分析。
Anaconda發行版
Anaconda是一種Python語言的免費增值開源發行版,用於進行大規模數據處理, 預測分析, 和科學計算, 致力於簡化包的管理和部署。Anaconda使用軟件包管理系統Conda進行包管理。——wiki
上面是wiki中對Anaconda Python發行版的介紹,其特點就是:為數據科學而定制的版本,利用conda來管理package比原生態的pip更方便。
完整版本的Anaconda
完整版本的Anaconda比較大,最新版的600多兆(windows, 64-Bit, Python3.6),該版本不僅包括Python,還有預裝好的100多個package,省去了自己安裝包的麻煩。但是體積比較大,通常很多包都用不到。
下載鏈接:https://www.anaconda.com/download/
Miniconda
Minicoda只包含conda, Python和少量的包,大小只有50幾兆。安裝好Miniconda后,可以使用conda install來安裝其他python的包
下載鏈接:https://conda.io/miniconda.html
下面以Miniconda為例,安裝和配置Python的運行環境及開發環境(windows 7, 64位)
1. 安裝miniconda
打開上面的鏈接,下載想要安裝的版本后進行安裝。
更多參考安裝指南:https://conda.io/docs/user-guide/install/index.html
安裝完成后,在開始菜單可以看到下面的標志:
2. 安裝需要的package
點擊上面的Anaconda Prompt,打開anaconda的命令行工具。在這個命令行中可以直接使用conda:
- conda info:查看當前虛擬環境的名稱和路徑,配置文件的位置,channel的列表,Python版本等基本情況;
- conda env list: 列出所有的虛擬環境;
- conda list: 列出當前虛擬環境中已經安裝的包;
- conda search packagex: 搜索包packagex,會返回不同版本的包,可以使用"packagex==x.y"來指定安裝x.y版;
- conda install packagex: 安裝包packagex.
由上圖可以看到,現在只有一個虛擬環境——base,在這個環境中有30個預裝的包。
下面安裝常用的幾個用於數據分析的工具包:
指定安裝0.19.1版的scikit-learn: conda install scikit-learn==0.19.1
conda作為anaconda中Python包管理工具,還有其他很多功能,可參考:
https://docs.conda.io/projects/conda/en/latest/commands.html
- 下載pdf
鏈接:https://pan.baidu.com/s/1P5kyPtDqvL8lekROLL0x0Q
提取碼:f5xd
3. 安裝jupyter notebook
安裝jupyter notebook的命令:conda install jupyter
安裝后,可以看到開始菜單多了一個圖標:
4. 運行jupyter notebook
使用時,可以直接從開始菜單中的"Jupyter Notebook"啟動,或是在命令行中輸入jupyter notebook。打開后,會在瀏覽器中打開一個頁面:
鏈接默認為:http://localhost:8888/tree
界面如下:
點擊圖中框出來的"New"菜單,選擇"Python 3"就可以打開一個新的notebook
界面如下:
這時就可以寫代碼了!
退出時,關閉相應的cmd窗口就可以了。
Jupyter Notebook
對於Jupyter Notebook,完全值得單獨拿出來說說。
jupyter notebook是一個交互式的IDE,雖然不像PyCharm這種重型IDE那么強大,但是仍然可以當做IDE來用,而且有一些特色非常適合用來進行數據分析:
- 可以單行運行代碼,這樣就可以一行一行的檢查代碼,查看運行結果,反復嘗試;
- 每次運行后變量都保存在內存中,因此可以重復使用(這對於一些比較耗時的計算過程,尤其有用);
- 可以寫markdown格式的注釋,這樣就可以將整個分析過程非常清晰的表達出來;
- 可以利用Mathjax展示數學公式;
- 可以插入圖片等,可以制作出圖和代碼並茂的非常精致的筆記和文檔(有很多已經出版的書都是完全使用notebook來寫作的).
但是個人感覺jupyter notebook並不適用代碼量比較大的工程類項目。
自己最近幾個月一直在使用這個工具,但是還沒有系統的研究過。這里先放幾個鏈接,后面再來補充:
- 知乎上的一個介紹:https://www.zhihu.com/question/37490497/answer/212044783(你為什么使用 jupyter ,進行分析,而不是用 python 腳本或僅僅利用 excel ? - 子珂的回答)
- datacamp中介紹Jupyter Notebook的文章(包括如何運行R代碼):https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook
- 另一篇文章(包括快捷鍵,其他注意事項等):https://www.dataquest.io/blog/jupyter-notebook-tutorial/
此外,JupyterLab:被稱為下一代Jupyter,對原來的Jupyter Notebook做了很多改進。
參考文檔:https://jupyterlab.readthedocs.io/en/latest/
# 安裝 conda install -c conda-forge jupyterlab # 運行 jupyter lab
由於國內使用默認channel安裝包比較慢,安裝時可以自己設置其他來源的channel,下面使用了清華大學的鏡像:
(更多關於Anaconda 鏡像的使用方法,可以參考清華大學開源軟件鏡像站上的使用幫助)
# 添加channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes # 安裝jupyterlab conda install jupyterlab
在Anaconda中,添加對R的支持
有時候需要用到R,在anaconda中安裝的R默認是由微軟的發行版(Microsoft R Open, MRO)
1. 安裝MRO
conda create -n mro_env r-essentials # 這里創建了一個新的虛擬環境"mro_env"來安裝與R相關的包
2. 安裝IRkernel
安裝好R的虛擬環境后,需要安裝IRKernel才能在在jupyter lab中使用R。第一步結束后進行下面的操作:
conda activate mro_env # 進入新創建的虛擬環境
R # 直接輸入R進入R的命令行界面,在R內部安裝所需的包和IRkernel
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
3. 激活IRkernal
IRkernel::installspec()
完成以上操作之后,再使用之前的命令安裝JupyterLab,就可以在JupyterLab中使用R了:
<完>