Python數據分析學習筆記02:Python語言基礎、IPython與Jupyter筆記本
在2012年,現在大家習以為常的許多庫,比如pandas、scikit-learn和statsmodels,那時都相對不成熟。在2017年,有日益增長的關于數據科學、數據分析和機器學習的文獻資料,補充了先前關于通用科學計算的工作,主要針對計算科學家、物理學家和其它研究領域的專業人員。
學習Python編程成為高效軟件工程師的好書確實不少。建議采用IPython控制臺與Jupyter筆記本來做樣例代碼的實驗,查看文檔了解各種類型、函數和方法。
一、Python解釋器
Python是一種解釋性語言。Python解釋器通過一次執行一條語句來運行程序。在命令行鍵入python命令可以調用標準交互Python解釋器:
>>>是python提示符,其后可以鍵入表達式或語句。
鍵入exit()或按組合鍵Ctrl+Z(Windows系統)返回命令行提示符。
運行python程序很簡單,調用python,用一個.py文件作為其第一個參數。
編寫一個python程序hello_world.py:
運行上述python程序:
一些Python程序員以這種方式來執行他們的Python代碼,而那些做數據分析和科學計算的程序員利用IPython或Jupyter筆記本。
- IPython 是一個 for Humans 的 Python 交互式 shell,用了它之后你就不想再用自帶的 Python shell 了,IPython 支持變量自動補全,自動縮進,支持 bash shell 命令,內置了許多實用功能和函數,同時它也是科學計算和交互可視化的最佳平臺。
- Jupyter Notebook 就像一個草稿本,能將文本注釋、數學方程、代碼和可視化內容全部組合到一個易于共享的文檔中,以 Web 頁面的方式展示。它是數據分析、機器學習的必備工具。
在IPython里,使用%run命令執行指定的Python程序。
使用Spyder自帶的IPython控制臺操作:
IPython提示符是 In [數字] ,跟Python提示符 >>> 相對應。
注意:在IPython里,可以按組合鍵
二、IPython基礎
1、運行IPython外殼
你可以通過鍵入并按回車來執行任意Python語句。如果僅僅鍵入一個變量,IPython會呈現這個對象的字符串表示。
前兩行是Python代碼語句;第二條語句創建一個名叫data的變量,指向一個新建的Python詞典。最后一行在控制臺打印變量data的值。
很多種Python對象格式化后更有可讀性,或漂亮打印(pretty-printed),與通常用print函數來打印有所不同。
利用pprint實現漂亮打印效果:
IPython也提供了通過復制粘貼來執行任意代碼塊或完整Python腳本的手段。當然,你也可以用Jupyter筆記本來處理更大的代碼塊。
mydict = {'students': [{'name':'Tom', 'age': 18},{'name':'Jerry', 'age': 19}]}
pprint.pprint(mydict)
# 未超長:
{'students': [{'age': 18, 'name': 'Tom'}, {'age': 19, 'name': 'Jerry'}]}
pprint.pprint(mydict, width=20)
將上述代碼塊全部選中,復制粘貼到IPython控制臺,敲回車執行:
step = 0
def move(p1, p2):
global step
step = step + 1
print('Step ' + str(step) + ': ', p1, '->', p2)
def hanoi(n, x, y, z):
if n == 1:
move(x, z)
else:
hanoi(n-1, x, z, y)
move(x, z)
hanoi(n-1, y, x, z)
hanoi(3, 'A', 'B', 'C')
將上述代碼塊全部選中,復制粘貼到IPython控制臺,敲回車執行:
大家可以看到,在IPython里執行代碼塊還是挺方便的,對于已有的Python程序,簡單的復制粘貼敲回車就可以執行。
2、運行Jupyter筆記本
Jupyter項目主要組件之一就是notebook,一種用于代碼、文本(有或無標簽),數據可視化和其它輸出的交互式文檔。
Jupyter筆記本與內核交互,內核以任何數量的編程語言實現了Jupyter交互計算協議。Python的Jupyter內核采用IPython系統作為其底層行為。
要啟動Jupyter,在終端運行jupyter notebook命令:
在很多平臺上,Jupyter會自動在你默認瀏覽器里打開(除非你啟動時帶了--no-browser參數)。或者,當你啟動了notebook,你可以導航到它給出的http地址,這里是http://localhost:8888/?token=2b9cd7470d199f917f01de16df40907c57c0afc2013e69f6,下圖就是在Chrome瀏覽里Jupyter的登錄頁面。
要創建一個筆記本,單擊【New】按鈕,選擇Python 3選項。在代碼單元格里鍵入Python代碼,然后按組合鍵Shift-Enter執行,如下圖所示:
當你保存筆記本,會創建一個擴展名為.ipynb的文件。這是一種自包含文件格式,包含當前在筆記本里的所有內容(包括任何計算的代碼輸出)。這些東西可以被其他Jupyter用戶加載并編輯。為了加載一個已有的筆記本,將文件放在啟動筆記本的同一個目錄里,或者其子目錄里,然后從Jupyter登錄頁面雙擊那個文件名。
剛才,我保存了筆記本,并且重命名為“demo001”,于是在Jupyter當前目錄下就有了demo001.ipynb文件。
在啟動Jupyter的目錄里保存了demo001.ipynb文件:
內容如下所示:
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello python world!\n"
]
}
],
"source": [
"print(\"hello python world!\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"250\n"
]
}
],
"source": [
"a = 100\n",
"b = 150\n",
"sum = a + b\n",
"print(sum)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
打開已有的Jupyter筆記本文件:
3、Tab補全功能
跟標準的Python外殼相比,IPython外殼具有tab補全功能,現在很多集成開發環境或交互式計算分析環境都提供了此功能。
定義了兩個變量an_apple與an_example,輸入an,按tab鍵,IPython會提示an_apple any an_example Anaconda3。
在一個對象后面鍵入英文句點,按tab鍵會自動提示其方法與屬性:
同理,在模塊后面鍵入英文句點,按tab鍵也會自動提示其函數或常量:
利用tab鍵也可以自動提示模塊的私有屬性和方法,但是必須加上一個下劃線再按tab鍵:
結合%run命令,tab鍵自動補全功能可以為你節省不少敲鍵次數。
4、對象自省功能
在變量或方法名后加一個?,會顯示一些相關信息:
定義一個函數,添加文檔字符串;使用?可以顯示文檔字符串。
用??可以顯示函數的源代碼:
?還可以結合通配符*搜索IPython的命名空間:
注意,python shell不具有對象自省功能:
5、%run命令——運行Python腳本
6、%load命令——加載Python腳本
7、執行剪貼板里的代碼
將上述代碼全部選中,然后復制到剪貼板里。
在IPython里,利用魔法命令%paste,可以執行剪貼板里的代碼:
8、終端鍵盤快捷鍵
Ctrl-L,清屏快捷鍵,在前面我們就已經提到過。
9、關于魔法命令
IPython提供了一些特殊命令,不是Python內置的,命令以%打頭。
魔法命令之后加?也可以自省:
利用%automagic命令可以設置自動魔法命令是ON還是OFF,當設置為ON時,魔法命令可以省掉前面的%;當設置為OFF時,魔法命令不能省掉前面的%。默認情況下,automagic是ON狀態,如下圖所示:
一些魔法命令執行的結果還可以保存到變量里,如下圖所示:
但是有些魔法命令執行的結果無法保存到變量里,只能直接顯示在屏幕上,如下圖所示:
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
