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

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