- Python數據可視化之美:專業圖表繪制指南(全彩)
- 張杰
- 8字
- 2020-05-22 18:04:26
第1章 Python編程基礎
1.1 Python基礎知識
1.1.1 Python3.7的安裝
使用Anaconda可以直接組合安裝Python、Jupyter Notebook和Spyder。Anaconda是一個開源的Python發行版本,用于進行大規模的數據處理、預測分析、科學計算,致力于簡化包的管理和部署。
讀者可以通過搜索Anaconda,找到Anaconda官網,并下載。
需要注意的是:我們要根據電腦的系統(Windows、macOS和Linux)選擇對應的Python版本。對于Windows系統,還需要根據系統的位數選擇32位或64位。另外,筆者推薦使用Python 3.7版本。
Jupyter Notebook:Jupyter Notebook是基于網頁的用于交互計算的應用程序。其可被應用于全過程計算:開發、文檔編寫、運行代碼和展示結果。Jupyter Notebook是以網頁形式打開的程序,可以在網頁頁面中直接編寫代碼和運行代碼,代碼的運行結果也會直接在代碼塊下顯示。如在編程過程中需要編寫說明文檔,則可在同一個頁面中直接編寫,便于進行及時的說明和解釋(見圖1-1-1)。

圖1-1-1 Jupyter Notebook的運行界面
Spyder:Spyder是Python(x,y)的作者為它開發的一個簡單的集成開發環境。和其他的Python開發環境相比,它最大的優點就是可以模仿MATLAB的“工作空間”功能,可以很方便地觀察和修改數組的值。Spyder的界面由許多窗格構成,用戶可以根據自己的喜好調整它們的位置和大小。當多個窗格出現在同一個區域時,將使用標簽頁的形式顯示。例如在圖1-1-2中,可以看到Editor、Object inspector、Variable explorer、File explorer、Console、History log以及兩個顯示圖像的窗格。在View菜單中可以設置是否顯示這些窗格。

圖1-1-2 Spyder運行界面
1.1.2 包的安裝與使用
在計算機程序的開發過程中,隨著程序代碼越寫越多,在一個文件里的代碼就會越來越長,越來越不容易維護。為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件里,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在Python中,一個.py文件就稱之為一個模塊(module)。模塊的名字就是該文件的名字(不包含后綴)。使用模塊不僅可以大大提高代碼的可維護性,而且編寫代碼也不必從零開始。
為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(package)。一個包就是一個文件夾(Python 2規定該文件夾必須包含一個__init__.py文件,Python 3沒有要求),包名就是文件夾名。包的安裝可以直接打開Anaconda 3文件夾中的Anaconda Prompt對話框,輸入conda install<;package>;或者pip install<;package>;,就可以安裝對應的包。也可以使用conda uninstall<;package>;和pip uninstall<;package>;卸載對應的包。模塊和包的導入與使用方法沒有本質區別。我們在使用這些包前,需要提前將這些包導入,使用import語句可以導入4種不同的對象類型。

Python借助外在的包和模塊可以實現網絡爬蟲、數據分析與可視化、機器學習和深度學習等諸多功能(見圖1-1-3)。其中,常用于數據分析處理與機器學習的包如下。

圖1-1-3 常用的Python包
● NumPy、Pandas、DASK和Numba包可用于分析數據的可拓展性與性能;
● SciPy、StatsModel和scikit-learn可用于數據的處理與分析;
● matplotlib、Seaborn、plotnine、Bokeh、Datashader和HoloViews包可實現數據結果的可視化;
● scikit-learn、PyTorch、TensorFlow和theano包可構造并訓練機器學習與深度學習模型。
1.1.3 Python基礎操作
1.Python注釋
注釋的目的是讓閱讀人員能夠輕松讀懂每一行代碼的意義,同時也為后期代碼的維護提供便利。在Python中,單行注釋是以#號開頭的。而Python的多行注釋是由兩個三引號(''')包含起來的。
2.Python的行與縮進
與R、C++等語言相比,Python最具特色的就是使用縮進表示代碼塊,而不需要使用大括號。縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。需要特別注意的是:不一致的代碼塊縮進會導致代碼運行錯誤。
3.變量與對象
Python中的任何數值、字符串、數據結構、函數、類、模塊等都是對象。每個對象都有標識符、類型(type)和值(value)。幾乎所有的對象都有方法與屬性,都可以通過“對象名.方法(參數1,參數2,…,參數n)”或者“對象名.屬性”的方式訪問該對象的內部數據結構。需要注意的是:對象之間的賦值并不是復制。
復制是指復制對象與原始對象不是同一個對象,原始對象發生任何變化都不會影響復制對象的變化,可以分為淺復制(copy)和深復制(deepcopy)。淺復制是復制了對象,但對于對象中的元素,依然使用原始的引用,即只復制指向對象的指針,并不復制對象本身。深復制是指完全地復制一個對象的所有元素及其子元素,可以理解為直接復制整個對象到另一塊內存中。