《利用Python進行數據分析》 —— (1)

《利用Python進行數據分析》 —— (1)

Python的學習須要自主探索各類類型,函數和方法的文檔。python

2.1 Python解釋器

在IPython(Jupyter Qtconsole)上,能夠經過%run命令執行文件中的代碼shell

In [16]: %run hellow.py 1,2,3 10
1,2,3
10

2.2 IPython 基礎

2.2.3 Tab補全

  1. 在搜索交互命名空間和補全對象或模塊屬性時有用
  2. 當輸入任意路徑時,按下Tab能夠補全你的計算機文件系統中匹配你輸入內容的值。(與%run命令搭配能夠大大提高效率
  3. tab補全的另外一個應用場景是在函數的關鍵詞參數(包含=)

2.2.4 內省

在變量先後使用問號?,能夠顯示對象的信息:數組

In [17]: b = [1, 2, 3]

In [18]: b?
Type:        list
String form: [1, 2, 3]
Length:      3
Docstring:  
Built-in mutable sequence.

If no argument is given, the constructor creates a new empty list.
The argument must be an iterable if specified.

若是對象是一個函數或實例方法且文檔字符串已經寫好,則文檔字符串會顯示出來。函數

In [19]: def f(x):
    """
    this is a function
    """
    return x + 1

In [20]: f?
Signature: f(x)
Docstring: this is a function
File:      d:\python_data\<ipython-input-19-c86e88907f7c>
Type:      function

??能夠顯示源碼學習

In [23]: f??
Signature: f(x)
Source:   
def f(x):
    """
    this is a function
    """
    return x + 1
File:      d:\python_data\<ipython-input-19-c86e88907f7c>
Type:      function

?還有一個用途,就是像Unix或Windows命令行同樣搜索IPython的命名空間。字符與通配符結合能夠匹配全部的名字。ui

In [22]: np.fi*?
np.fill_diagonal
np.find_common_type
np.finfo
np.fix

2.2.5 %run命令

文件中全部定義的變量(import、函數和全 局變量,除非拋出異常)在運行後,均可以在IPython shell中隨後訪問:this

假如Python腳本須要命令行提供參數(經過sys.argv獲取),則須要在命令的文件路徑後面加上參數進行傳遞。命令行

import sys
fi = sys.argv[1]
se = sys.argv[2]

print(fi)
print(se)
"""
%run file.py [a1, a2, .., an] [b1, b2, .., bn]
"""

若是要在 Jupyter 中你想要將腳本導入一個代碼單元,可使用%load魔術函數。code

經過Ctrl + C結束運行。orm

2.27 終端快捷鍵

  • Ctrl-P 或上箭頭鍵 後向搜索命令歷史中以當前輸入的文本開頭的命令
  • Ctrl-N 或下箭頭鍵 前向搜索命令歷史中以當前輸入的文本開頭的命令
  • Ctrl-R 按行讀取的反向歷史搜索(部分匹配)
  • Ctrl-Shift-v 從剪貼板粘貼文本
  • Ctrl-C 停止當前正在執行的代碼
  • Ctrl-A 將光標移動到行首
  • Ctrl-E 將光標移動到行尾
  • Ctrl-K 刪除從光標開始至行尾的文本
  • Ctrl-U 清除當前行的全部文本譯註12
  • Ctrl-F 將光標向前移動一個字符
  • Ctrl-b 將光標向後移動一個字符
  • Ctrl-L 清屏

2.2.8 魔術命令

%magic展現

2.2.9 matplotlib集成

  • 在IPython 中,%matplotlib
  • 在Jupyter notebook 中, %matplotlib inline

2.3 Python語言基礎

2.3.1.8 鴨子類型

有時候你不關心某個對象是什麼類型,你只關心它是否擁有某個特殊的方法或行爲

例如你想驗證一個對象是否實現了迭代器協議,那麼它必須能夠迭代。

def isiterable(obj):
	try:
		iter(obj)
		return True
	except TypeError: # 不可遍歷
		return False

一般在編寫接受多種類型輸入的函數時,可使用這些功能。

eg:要接受任意序列類型(列表,元組,n維數組),你能夠先判斷是否爲一個列表(或者爲Numpy數組)不然將其轉化爲列表:

if not isinstance(x, list) and isiterable(x):
	x = list(x)

2.3.1.10二元操做符

In [9]: a = [1, 2, 3]

In [10]: b = a

In [11]: c = list(a)

In [12]: a is b
Out[12]: True

In [13]: a is not c
Out[13]: True

值得注意的是list函數老是建立一個新的Python列表(即一份拷貝)。

is==是不一樣的,c is a爲False,c == a爲True。

還值得注意的是//整除符號。若是須要風格的整除除法(去除非整數部分的小數部分),則能夠用整除操做符

2.3.2.2 字符串

字符串是不能夠修改的!!

在遇到有大量反斜槓字符串時能夠經過添加r"XXX"代表該字符串爲原生字符。

字符串格式化,字符串擁有一個format方法。

例如:In [64]: template = '{0 : .2f} {1 : s}, are worth US${2 : d}'。在這字符串中

  • {0 : .2f} 表示格式化第一個參數爲帶有兩位小數的浮點數。

  • {1 : s} 表示格式化第二個參數爲字符串。

  • {2 : d} 表示格式化第三個參數爲一個整數。

2.3.2.7 日期與時間

熟練掌握兩個方法:

  • 第一個strftime將datatime類型轉爲字符串:

  • In [102]: from datetime import datetime, date, time
    In [103]: dt = datetime(2011, 10, 29, 20, 30, 21)
        ...
    In [108]: dt.strftime('%m/%d/%Y %H:%M')
    Out[108]: '10/29/2011 20:30'
  • strptime 能夠將字符串轉換成 datetime 對象:

  • In [109]: datetime.strptime('20091031', '%Y%m%d')
    Out[109]: datetime.datetime(2009, 10, 31, 0, 0)

2.3.3.6 三元表達式

語法以下:

value = 'true-expr' if condition else 'false-expr'

相關文章
相關標籤/搜索