python資料分析02語法基礎
在我來看,沒有必要為了資料分析而去精通Python。我鼓勵你使用IPython shell和Jupyter試驗示例程式碼,並學習不同型別、函式和方法的文件。雖然我已盡力讓本書內容循序漸進,但讀者偶爾仍會碰到沒有之前介紹過的內容。
本書大部分內容關注的是基於表格的分析和處理大規模資料集的資料準備工具。為了使用這些工具,必須首先將混亂的資料規整為整潔的表格(或結構化)形式。幸好,Python是一個理想的語言,可以快速整理資料。Python使用得越熟練,越容易準備新資料集以進行分析。
最好在IPython和Jupyter中親自嘗試本書中使用的工具。當你學會了如何啟動Ipython和Jupyter,我建議你跟隨示例程式碼進行練習。與任何鍵盤驅動的操作環境一樣,記住常見的命令也是學習曲線的一部分。
筆記:本章沒有介紹Python的某些概念,如類和麵向物件程式設計,你可能會發現它們在Python資料分析中很有用。 為了加強Python知識,我建議你學習官方Python教程,https://docs.python.org/3/,或是通用的Python教程書籍,比如:
- Python Cookbook,第3版,David Beazley和Brian K. Jones著(O’Reilly)
- 流暢的Python,Luciano Ramalho著 (O’Reilly)
- 高效的Python,Brett Slatkin著 (Pearson)
2.1 Python直譯器
Python是解釋性語言。Python直譯器同一時間只能執行一個程式的一條語句。標準的互動Python直譯器可以在命令列中通過鍵入python
$ python
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 5
>>> print(a)
5
>>>
提示輸入程式碼。要退出Python直譯器返回終端,可以輸入exit()
或按Ctrl-D。
執行Python程式只需呼叫Python的同時,使用一個.py
檔案作為它的第一個引數。假設建立了一個hello_world.py
檔案,它的內容是:
print('Hello world')
你可以用下面的命令執行它(hello_world.py
檔案必須位於終端的工作目錄):
$ python hello_world.py
Hello world
一些Python程式設計師總是這樣執行Python程式碼的,從事資料分析和科學計算的人卻會使用IPython,一個強化的Python直譯器,或Jupyter notebooks,一個網頁程式碼筆記本,它原先是IPython的一個子專案。在本章中,我介紹瞭如何使用IPython和Jupyter,在附錄A中有更深入的介紹。當你使用%run
命令,IPython會同樣執行指定檔案中的程式碼,結束之後,還可以與結果互動:
$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: %run hello_world.py
Hello world
In [2]:
IPython預設採用序號的格式In [2]:
,與標準的>>>
提示符不同。
2.2 IPython基礎
在本節中,我們會教你開啟執行IPython shell和jupyter notebook,並介紹一些基本概念。
執行IPython Shell
你可以用ipython
在命令列開啟IPython Shell,就像開啟普通的Python直譯器:
$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: a = 5
In [2]: a
Out[2]: 5
你可以通過輸入程式碼並按Return(或Enter),執行任意Python語句。當你只輸入一個變數,它會顯示代表的物件:
In [5]: import numpy as np
In [6]: data = {i : np.random.randn() for i in range(7)}
In [7]: data
Out[7]:
{0: -0.20470765948471295,
1: 0.47894333805754824,
2: -0.5194387150567381,
3: -0.55573030434749,
4: 1.9657805725027142,
5: 1.3934058329729904,
6: 0.09290787674371767}
前兩行是Python程式碼語句;第二條語句建立一個名為data
的變數,它引用一個新建立的Python字典。最後一行列印data
的值。
許多Python物件被格式化為更易讀的形式,或稱作pretty-printed
,它與普通的print
不同。如果在標準Python直譯器中列印上述data
變數,則可讀性要降低:
>>> from numpy.random import randn
>>> data = {i : randn() for i in range(7)}
>>> print(data)
{0: -1.5948255432744511, 1: 0.10569006472787983, 2: 1.972367135977295,
3: 0.15455217573074576, 4: -0.24058577449429575, 5: -1.2904897053651216,
6: 0.3308507317325902}
IPython還支援執行任意程式碼塊(通過一個華麗的複製-貼上方法)和整段Python指令碼的功能。你也可以使用Jupyter notebook執行大程式碼塊,接下來就會看到。