1:mport random

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供文成網(wǎng)站建設(shè)、文成做網(wǎng)站、文成網(wǎng)站設(shè)計(jì)、文成網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、文成企業(yè)網(wǎng)站模板建站服務(wù),十多年文成做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
#導(dǎo)入random模塊 用于生產(chǎn)隨機(jī)數(shù)功能
2:a ?= random.randint(97, 122)
#利用random.randint()函數(shù)生成一個(gè)隨機(jī)整數(shù)a,使得97=a=122
#對應(yīng)從“a”到“z”的ASCII碼
3:c = chr(a)
#將a表示的ASCII碼轉(zhuǎn)換為對應(yīng)的字母,這里的c就是你要的隨機(jī)字母
4:print c
#將字母輸出,完成
延展閱讀:
Python具有豐富和強(qiáng)大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對其中[3]??有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫。需要注意的是在您使用擴(kuò)展類庫時(shí)可能需要考慮平臺問題,某些可能不提供跨平臺的實(shí)現(xiàn)。
python主要應(yīng)用領(lǐng)域:
1、云計(jì)算:
PYTHON語言算是云計(jì)算最火的語言,?典型應(yīng)用OpenStack。
2、WEB前端開發(fā)
python相比php\ruby的模塊化設(shè)計(jì),非常便于功能擴(kuò)展;多年來形成了大量優(yōu)秀的web開發(fā)框架,并且在不斷迭代;如目前優(yōu)秀的全棧的django、框架flask,都繼承了python簡單、明確的風(fēng)格,開發(fā)效率高、易維護(hù),與自動化運(yùn)維結(jié)合性好。
python已經(jīng)成為自動化運(yùn)維平臺領(lǐng)域的事實(shí)標(biāo)準(zhǔn);眾多大型網(wǎng)站均為Python開發(fā),Youtube,?Dropbox,?豆瓣。
3、人工智能應(yīng)用
基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開python的支持,目前世界優(yōu)秀的人工智能學(xué)習(xí)框架如Google的TransorFlow?、FaceBook的PyTorch以及開源社區(qū)的神經(jīng)網(wǎng)絡(luò)庫Karas等是用python實(shí)現(xiàn)的。
甚至微軟的CNTK(認(rèn)知工具包)也完全支持Python,而且微軟的Vscode都已經(jīng)把Python作為第一級語言進(jìn)行支持。
4、系統(tǒng)運(yùn)維工程項(xiàng)目
Python在與操作系統(tǒng)結(jié)合以及管理中非常密切,目前所有l(wèi)inux發(fā)行版中都帶有python,且對于linux中相關(guān)的管理功能都有大量的模塊可以使用,例如目前主流的自動化配置管理工具:SaltStackAnsible(目前是RedHat的)。
目前在幾乎所有互聯(lián)網(wǎng)公司,自動化運(yùn)維的標(biāo)配就是python+Django/flask,另外,在虛擬化管理方面已經(jīng)是事實(shí)標(biāo)準(zhǔn)的openstack就是python實(shí)現(xiàn)的,所以Python是所有運(yùn)維人員的必備技能。
5、金融理財(cái)分析
量化交易,金融分析,在金融工程領(lǐng)域,Python語言不但在用,且用的最多,而且重要性逐年提高。原因:作為動態(tài)語言的Python,語言結(jié)構(gòu)清晰簡單,庫豐富,成熟穩(wěn)定,科學(xué)計(jì)算和統(tǒng)計(jì)分析都很牛逼,生產(chǎn)效率遠(yuǎn)遠(yuǎn)高于c,c++,java,尤其擅長策略回測。
5、大數(shù)據(jù)分析
Python語言相對于其它解釋性語言最大的特點(diǎn)是其龐大而活躍的科學(xué)計(jì)算生態(tài),在數(shù)據(jù)分析、交互、可視化方面有相當(dāng)完善和優(yōu)秀的庫(python數(shù)據(jù)分析棧:Numpy?Pandas?ScipyMatplotlipIpython)
并且還形成了自己獨(dú)特的面向科學(xué)計(jì)算的Python發(fā)行版Anaconda,而且這幾年一直在快速進(jìn)化和完善,對傳統(tǒng)的數(shù)據(jù)分析語言如R?MATLAB?SAS?Stata形成了非常強(qiáng)的替代性。
參考資料:百度百科_Python
一些小提示和小技巧可能是非常有用的,特別是在編程領(lǐng)域。有時(shí)候使用一點(diǎn)點(diǎn)黑客技術(shù),既可以節(jié)省時(shí)間,還可能挽救“生命”。
一個(gè)小小的快捷方式或附加組件有時(shí)真是天賜之物,并且可以成為真正的生產(chǎn)力助推器。所以,這里有一些小提示和小技巧,有些可能是新的,但我相信在下一個(gè)數(shù)據(jù)分析項(xiàng)目中會讓你非常方便。
Pandas中數(shù)據(jù)框數(shù)據(jù)的Profiling過程
Profiling(分析器)是一個(gè)幫助我們理解數(shù)據(jù)的過程,而Pandas Profiling是一個(gè)Python包,它可以簡單快速地對Pandas 的數(shù)據(jù)框數(shù)據(jù)進(jìn)行 探索 性數(shù)據(jù)分析。
Pandas中df.describe()和df.info()函數(shù)可以實(shí)現(xiàn)EDA過程第一步。但是,它們只提供了對數(shù)據(jù)非常基本的概述,對于大型數(shù)據(jù)集沒有太大幫助。 而Pandas中的Profiling功能簡單通過一行代碼就能顯示大量信息,且在交互式HTML報(bào)告中也是如此。
對于給定的數(shù)據(jù)集,Pandas中的profiling包計(jì)算了以下統(tǒng)計(jì)信息:
由Pandas Profiling包計(jì)算出的統(tǒng)計(jì)信息包括直方圖、眾數(shù)、相關(guān)系數(shù)、分位數(shù)、描述統(tǒng)計(jì)量、其他信息——類型、單一變量值、缺失值等。
安裝
用pip安裝或者用conda安裝
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代碼是用很久以前的泰坦尼克數(shù)據(jù)集來演示多功能Python分析器的結(jié)果。
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代碼就能實(shí)現(xiàn)在Jupyter Notebook中顯示完整的數(shù)據(jù)分析報(bào)告,該報(bào)告非常詳細(xì),且包含了必要的圖表信息。
還可以使用以下代碼將報(bào)告導(dǎo)出到交互式HTML文件中。
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas實(shí)現(xiàn)交互式作圖
Pandas有一個(gè)內(nèi)置的.plot()函數(shù)作為DataFrame類的一部分。但是,使用此功能呈現(xiàn)的可視化不是交互式的,這使得它沒那么吸引人。同樣,使用pandas.DataFrame.plot()函數(shù)繪制圖表也不能實(shí)現(xiàn)交互。 如果我們需要在不對代碼進(jìn)行重大修改的情況下用Pandas繪制交互式圖表怎么辦呢?這個(gè)時(shí)候就可以用Cufflinks庫來實(shí)現(xiàn)。
Cufflinks庫可以將有強(qiáng)大功能的plotly和擁有靈活性的pandas結(jié)合在一起,非常便于繪圖。下面就來看在pandas中如何安裝和使用Cufflinks庫。
安裝
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
用法
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是時(shí)候展示泰坦尼克號數(shù)據(jù)集的魔力了。
df.iplot()
df.iplot() vs df.plot()
右側(cè)的可視化顯示了靜態(tài)圖表,而左側(cè)圖表是交互式的,更詳細(xì),并且所有這些在語法上都沒有任何重大更改。
Magic命令
Magic命令是Jupyter notebook中的一組便捷功能,旨在解決標(biāo)準(zhǔn)數(shù)據(jù)分析中的一些常見問題。使用命令%lsmagic可以看到所有的可用命令。
所有可用的Magic命令列表
Magic命令有兩種:行magic命令(line magics),以單個(gè)%字符為前綴,在單行輸入操作;單元magic命令(cell magics),以雙%%字符為前綴,可以在多行輸入操作。如果設(shè)置為1,則不用鍵入%即可調(diào)用Magic函數(shù)。
接下來看一些在常見數(shù)據(jù)分析任務(wù)中可能用到的命令:
% pastebin
%pastebin將代碼上傳到Pastebin并返回url。Pastebin是一個(gè)在線內(nèi)容托管服務(wù),可以存儲純文本,如源代碼片段,然后通過url可以與其他人共享。事實(shí)上,Github gist也類似于pastebin,只是有版本控制。
在file.py文件中寫一個(gè)包含以下內(nèi)容的python腳本,并試著運(yùn)行看看結(jié)果。
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一個(gè)pastebin url。
%matplotlib notebook
函數(shù)用于在Jupyter notebook中呈現(xiàn)靜態(tài)matplotlib圖。用notebook替換inline,可以輕松獲得可縮放和可調(diào)整大小的繪圖。但記得這個(gè)函數(shù)要在導(dǎo)入matplotlib庫之前調(diào)用。
%run
用%run函數(shù)在notebook中運(yùn)行一個(gè)python腳本試試。
%run file.py
%%writefile
%% writefile是將單元格內(nèi)容寫入文件中。以下代碼將腳本寫入名為foo.py的文件并保存在當(dāng)前目錄中。
%%latex
%%latex函數(shù)將單元格內(nèi)容以LaTeX形式呈現(xiàn)。此函數(shù)對于在單元格中編寫數(shù)學(xué)公式和方程很有用。
查找并解決錯誤
交互式調(diào)試器也是一個(gè)神奇的功能,我把它單獨(dú)定義了一類。如果在運(yùn)行代碼單元時(shí)出現(xiàn)異常,請?jiān)谛滦兄墟I入%debug并運(yùn)行它。 這將打開一個(gè)交互式調(diào)試環(huán)境,它能直接定位到發(fā)生異常的位置。還可以檢查程序中分配的變量值,并在此處執(zhí)行操作。退出調(diào)試器單擊q即可。
Printing也有小技巧
如果您想生成美觀的數(shù)據(jù)結(jié)構(gòu),pprint是首選。它在打印字典數(shù)據(jù)或JSON數(shù)據(jù)時(shí)特別有用。接下來看一個(gè)使用print和pprint來顯示輸出的示例。
讓你的筆記脫穎而出
我們可以在您的Jupyter notebook中使用警示框/注釋框來突出顯示重要內(nèi)容或其他需要突出的內(nèi)容。注釋的顏色取決于指定的警報(bào)類型。只需在需要突出顯示的單元格中添加以下任一代碼或所有代碼即可。
藍(lán)色警示框:信息提示
p class="alert alert-block alert-info"
bTip:/b Use blue boxes (alert-info) for tips and notes.
If it’s a note, you don’t have to include the word “Note”.
/p
黃色警示框:警告
p class="alert alert-block alert-warning"
bExample:/b Yellow Boxes are generally used to include additional examples or mathematical formulas.
/p
綠色警示框:成功
p class="alert alert-block alert-success"
Use green box only when necessary like to display links to related content.
/p
紅色警示框:高危
p class="alert alert-block alert-danger"
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
/p
打印單元格所有代碼的輸出結(jié)果
假如有一個(gè)Jupyter Notebook的單元格,其中包含以下代碼行:
In [1]: 10+5
11+6
Out [1]: 17
單元格的正常屬性是只打印最后一個(gè)輸出,而對于其他輸出,我們需要添加print()函數(shù)。然而通過在notebook頂部添加以下代碼段可以一次打印所有輸出。
添加代碼后所有的輸出結(jié)果就會一個(gè)接一個(gè)地打印出來。
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
恢復(fù)原始設(shè)置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'選項(xiàng)運(yùn)行python腳本
從命令行運(yùn)行python腳本的典型方法是:python hello.py。但是,如果在運(yùn)行相同的腳本時(shí)添加-i,例如python -i hello.py,就能提供更多優(yōu)勢。接下來看看結(jié)果如何。
首先,即使程序結(jié)束,python也不會退出解釋器。因此,我們可以檢查變量的值和程序中定義的函數(shù)的正確性。
其次,我們可以輕松地調(diào)用python調(diào)試器,因?yàn)槲覀內(nèi)匀辉诮忉屍髦校?/p>
import pdb
pdb.pm()
這能定位異常發(fā)生的位置,然后我們可以處理異常代碼。
自動評論代碼
Ctrl / Cmd + /自動注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。
刪除容易恢復(fù)難
你有沒有意外刪除過Jupyter notebook中的單元格?如果答案是肯定的,那么可以掌握這個(gè)撤消刪除操作的快捷方式。
如果您刪除了單元格的內(nèi)容,可以通過按CTRL / CMD + Z輕松恢復(fù)它。
如果需要恢復(fù)整個(gè)已刪除的單元格,請按ESC + Z或EDIT撤消刪除單元格。
結(jié)論
在本文中,我列出了使用Python和Jupyter notebook時(shí)收集的一些小提示。我相信它們會對你有用,能讓你有所收獲,從而實(shí)現(xiàn)輕松編碼!
鏈接:
提取碼:7234
煉數(shù)成金:Python數(shù)據(jù)分析。Python是一種面向?qū)ο蟆⒅弊g式計(jì)算機(jī)程序設(shè)計(jì)語言。也是一種功能強(qiáng)大而完善的通用型語言,已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定。Python 具有腳本語言中最豐富和強(qiáng)大的類庫,足以支持絕大多數(shù)日常應(yīng)用。 Python語法簡捷而清晰,具有豐富和強(qiáng)大的類庫。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言制作的各種模塊(尤其是C/C++)輕松地聯(lián)結(jié)在一起。
課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數(shù)據(jù)分析方法的使用,并結(jié)合實(shí)例,讓學(xué)員能從中借鑒學(xué)習(xí)。
課程目錄:
Python基礎(chǔ)
Python的概覽——Python的基本介紹、安裝與基本語法、變量類型與運(yùn)算符
了解Python流程控制——條件、循環(huán)語句與其他語句
常用函數(shù)——函數(shù)的定義與使用方法、主要內(nèi)置函數(shù)的介紹
.....
迭代器是 23 種設(shè)計(jì)模式中最常用的一種(之一),在 Python 中隨處可見它的身影,我們經(jīng)常用到它,但是卻不一定意識到它的存在。在關(guān)于迭代器的系列文章中(鏈接見文末),我至少提到了 23 種生成迭代器的方法。有些方法是專門用于生成迭代器的,還有一些方法則是為了解決別的問題而“暗中”使用到迭代器。
在系統(tǒng)學(xué)習(xí)迭代器之前,我一直以為 range() 方法也是用于生成迭代器的,現(xiàn)在卻突然發(fā)現(xiàn),它生成的只是可迭代對象,而并不是迭代器! (PS:Python2 中 range() 生成的是列表,本文基于Python3,生成的是可迭代對象)
于是,我有了這樣的疑問:為什么 range() 不生成迭代器呢?在查找答案的過程中,我發(fā)現(xiàn)自己對 range 類型的認(rèn)識存在一些誤區(qū)。因此,本文將和大家全面地認(rèn)識一下 range ,期待與你共同學(xué)習(xí)進(jìn)步。
1、range() 是什么?
它的語法:range(start, stop [,step]) ;start 指的是計(jì)數(shù)起始值,默認(rèn)是 0;stop 指的是計(jì)數(shù)結(jié)束值,但不包括 stop ;step 是步長,默認(rèn)為 1,不可以為 0 。range() 方法生成一段左閉右開的整數(shù)范圍。
對于 range() 函數(shù),有幾個(gè)注意點(diǎn):(1)它表示的是左閉右開區(qū)間;(2)它接收的參數(shù)必須是整數(shù),可以是負(fù)數(shù),但不能是浮點(diǎn)數(shù)等其它類型;(3)它是不可變的序列類型,可以進(jìn)行判斷元素、查找元素、切片等操作,但不能修改元素;(4)它是可迭代對象,卻不是迭代器。
2、 為什么range()不生產(chǎn)迭代器?
可以獲得迭代器的內(nèi)置方法很多,例如 zip() 、enumerate()、map()、filter() 和 reversed() 等等,但是像 range() 這樣僅僅得到的是可迭代對象的方法就絕無僅有了(若有反例,歡迎告知)。這就是我存在知識誤區(qū)的地方。
在 for-循環(huán) 遍歷時(shí),可迭代對象與迭代器的性能是一樣的,即它們都是惰性求值的,在空間復(fù)雜度與時(shí)間復(fù)雜度上并無差異。我曾概括過兩者的差別是“一同兩不同”:相同的是都可惰性迭代,不同的是可迭代對象不支持自遍歷(即next()方法),而迭代器本身不支持切片(即 getitem () 方法)。
雖然有這些差別,但很難得出結(jié)論說它們哪個(gè)更優(yōu)。現(xiàn)在微妙之處就在于,為什么給 5 種內(nèi)置方法都設(shè)計(jì)了迭代器,偏偏給 range() 方法設(shè)計(jì)的就是可迭代對象呢?把它們都統(tǒng)一起來,不是更好么?
事實(shí)上,Pyhton 為了規(guī)范性就干過不少這種事,例如,Python2 中有 range() 和 xrange() 兩種方法,而 Python3 就干掉了其中一種,還用了“李代桃僵”法。為什么不更規(guī)范點(diǎn),令 range() 生成的是迭代器呢?
關(guān)于這個(gè)問題,我沒找到官方解釋,以下純屬個(gè)人觀點(diǎn) 。
zip() 等方法都需要接收確定的可迭代對象的參數(shù),是對它們的一種再加工的過程,因此也希望馬上產(chǎn)出確定的結(jié)果來,所以 Python 開發(fā)者就設(shè)計(jì)了這個(gè)結(jié)果是迭代器。這樣還有一個(gè)好處,即當(dāng)作為參數(shù)的可迭代對象發(fā)生變化的時(shí)候,作為結(jié)果的迭代器因?yàn)槭窍男偷模粫诲e誤地使用。
而 range() 方法就不同了,它接收的參數(shù)不是可迭代對象,本身是一種初次加工的過程,所以設(shè)計(jì)它為可迭代對象,既可以直接使用,也可以用于其它再加工用途。例如,zip() 等方法就完全可以接收 range 類型的參數(shù)。
也就是說,range() 方法作為一種初級生產(chǎn)者,它生產(chǎn)的原料本身就有很大用途,早早把它變?yōu)榈鞯脑挘瑹o疑是一種畫蛇添足的行為。
對于這種解讀,你是否覺得有道理呢?歡迎就這個(gè)話題與我探討。
3、range 類型是什么?
以上是我對“為什么range()不產(chǎn)生迭代器”的一種解答。順著這個(gè)思路,我研究了一下它產(chǎn)生的 range 對象,一研究就發(fā)現(xiàn),這個(gè) range 對象也并不簡單。
首先奇怪的一點(diǎn)就是,它竟然是不可變序列!我從未注意過這一點(diǎn)。雖然說,我從未想過修改 range() 的值,但這一不可修改的特性還是令我驚訝。
翻看文檔,官方是這樣明確劃分的——有三種基本的序列類型:列表、元組和范圍(range)對象。(There are three basic sequence types: lists, tuples, and range objects.)
這我倒一直沒注意,原來 range 類型居然跟列表和元組是一樣地位的基礎(chǔ)序列!我一直記掛著字符串是不可變的序列類型,不曾想,這里還有一位不可變的序列類型呢。
那 range 序列跟其它序列類型有什么差異呢?
普通序列都支持的操作有 12 種。range 序列只支持其中的 10 種,不支持進(jìn)行加法拼接與乘法重復(fù)。
那么問題來了:同樣是不可變序列,為什么字符串和元組就支持上述兩種操作,而偏偏 range 序列不支持呢?雖然不能直接修改不可變序列,但我們可以將它們拷貝到新的序列上進(jìn)行操作啊,為何 range 對象連這都不支持呢?
且看官方文檔的解釋:
…due to the fact that range objects can only represent sequences that follow a strict pattern and repetition and concatenation will usually violate that pattern.
原因是 range 對象僅僅表示一個(gè)遵循著嚴(yán)格模式的序列,而重復(fù)與拼接通常會破壞這種模式…
問題的關(guān)鍵就在于 range 序列的 pattern,仔細(xì)想想,其實(shí)它表示的就是一個(gè)等差數(shù)列啊(喵,高中數(shù)學(xué)知識沒忘…),拼接兩個(gè)等差數(shù)列,或者重復(fù)拼接一個(gè)等差數(shù)列,想想確實(shí)不妥,這就是為啥 range 類型不支持這兩個(gè)操作的原因了。由此推論,其它修改動作也會破壞等差數(shù)列結(jié)構(gòu),所以統(tǒng)統(tǒng)不給修改就是了。
4、小結(jié)
回顧全文,我得到了兩個(gè)偏冷門的結(jié)論:range 是可迭代對象而不是迭代器;range 對象是不可變的等差序列。
若單純看結(jié)論的話,你也許沒有感觸,或許還會說這沒啥了不得啊。但如果我追問,為什么 range 不是迭代器呢,為什么 range 是不可變序列呢?對這倆問題,你是否還能答出個(gè)自圓其說的設(shè)計(jì)思想呢?(PS:我決定了,若有機(jī)會面試別人,我必要問這兩個(gè)問題的嘿~)
由于 range 對象這細(xì)微而有意思的特性,我覺得這篇文章寫得值了。本文是作為迭代器系列文章的一篇來寫的,所以對于迭代器的基礎(chǔ)知識介紹不多,另外,還有一種特殊的迭代器也值得單獨(dú)成文,那就是生成器了。
?我使用python這門語言也有三年了,被其簡潔、易讀、強(qiáng)大的庫所折服,我已經(jīng)深深愛上了python。其pythonic語言特性,對人極其友好,可以說,一個(gè)完全不懂編程語言的人,看懂python語言也不是難事。
?在數(shù)據(jù)分析和交互、探索性計(jì)算以及數(shù)據(jù)可視化等方面,相對于R、MATLAB、SAS、Stata等工具,Python都有其優(yōu)勢。近年來,由于Python庫的不斷發(fā)展(如pandas),使其在數(shù)據(jù)挖掘領(lǐng)域嶄露頭角。結(jié)合其在通用編程方面的強(qiáng)大實(shí)力,我們完全可以只使用Python這一種語言去構(gòu)建以數(shù)據(jù)為中心的應(yīng)用程序。
?由于python是一種解釋性語言,大部分編譯型語言都要比python代碼運(yùn)行速度快,有些同學(xué)就因此鄙視python。但是小編認(rèn)為,python是一門高級語言,其生產(chǎn)效率更高,程序員的時(shí)間通常比CPU的時(shí)間值錢,因此為了權(quán)衡利弊,考慮用python是值得的。
Python強(qiáng)大的計(jì)算能力依賴于其豐富而強(qiáng)大的庫:
Numpy
Numerical Python的簡稱,是Python科學(xué)計(jì)算的基礎(chǔ)包。其功能:
1. 快速高效的多維數(shù)組對象ndarray。
2. 用于對數(shù)組執(zhí)行元素級計(jì)算以及直接對數(shù)組執(zhí)行數(shù)學(xué)運(yùn)算的函數(shù)。
3. 線性代數(shù)運(yùn)算、傅里葉變換,以及隨機(jī)數(shù)生成。
4. 用于將C、C++、Fortran代碼集成到Python的工具。
除了為Python提供快速的數(shù)組處理能力,NumPy在數(shù)據(jù)分析方面還有另外一個(gè)主要作用,即作為在算法之間傳遞數(shù)據(jù)的容器。對于數(shù)值型數(shù)據(jù),NumPy數(shù)組在存儲和處理數(shù)據(jù)時(shí)要比內(nèi)置的Python數(shù)據(jù)結(jié)構(gòu)高效得多。此外,由低級語言(比如C和Fortran)編寫的庫可以直接操作NumPy數(shù)組中的數(shù)據(jù),無需進(jìn)行任何數(shù)據(jù)復(fù)制工作。
SciPy
是一組專門解決科學(xué)計(jì)算中各種標(biāo)準(zhǔn)問題域的包的集合,主要包括下面這些包:
1. scipy.integrate:數(shù)值積分例程和微分方程求解器。
2. scipy.linalg:擴(kuò)展了由numpy.linalg提供的線性代數(shù)例程和矩陣分解功能。
3. scipy.optimize:函數(shù)優(yōu)化器(最小化器)以及根查找算法。
4. scipy.signal:信號處理工具。
5. scipy.sparse:稀疏矩陣和稀疏線性系統(tǒng)求解器。
6. scipy.special:SPECFUN(這是一個(gè)實(shí)現(xiàn)了許多常用數(shù)學(xué)函數(shù)(如伽瑪函數(shù))的Fortran庫)的包裝器。
7. scipy.stats:標(biāo)準(zhǔn)連續(xù)和離散概率分布(如密度函數(shù)、采樣器、連續(xù)分布函數(shù)等)、各種統(tǒng)計(jì)檢驗(yàn)方法,以及更好的描述統(tǒng)計(jì)法。
8. scipy.weave:利用內(nèi)聯(lián)C++代碼加速數(shù)組計(jì)算的工具。
注:NumPy跟SciPy的有機(jī)結(jié)合完全可以替代MATLAB的計(jì)算功能(包括其插件工具箱)。
SymPy
是python的數(shù)學(xué)符號計(jì)算庫,用它可以進(jìn)行數(shù)學(xué)表達(dá)式的符號推導(dǎo)和演算。
pandas
提供了使我們能夠快速便捷地處理結(jié)構(gòu)化數(shù)據(jù)的大量數(shù)據(jù)結(jié)構(gòu)和函數(shù)。你很快就會發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。
pandas兼具NumPy高性能的數(shù)組計(jì)算功能以及電子表格和關(guān)系型數(shù)據(jù)庫(如SQL)靈活的數(shù)據(jù)處理功能。它提供了復(fù)雜精細(xì)的索引功能,以便更為便捷地完成重塑、切片和切塊、聚合以及選取數(shù)據(jù)子集等操作。
對于使用R語言進(jìn)行統(tǒng)計(jì)計(jì)算的用戶,肯定不會對DataFrame這個(gè)名字感到陌生,因?yàn)樗醋杂赗的data.frame對象。但是這兩個(gè)對象并不相同。R的data.frame對象所提供的功能只是DataFrame對象所提供的功能的一個(gè)子集。也就是說pandas的DataFrame功能比R的data.frame功能更強(qiáng)大。
matplotlib
是最流行的用于繪制數(shù)據(jù)圖表的Python庫。它最初由John D. Hunter(JDH)創(chuàng)建,目前由一個(gè)龐大的開發(fā)人員團(tuán)隊(duì)維護(hù)。它非常適合創(chuàng)建出版物上用的圖表。它跟IPython(馬上就會講到)結(jié)合得很好,因而提供了一種非常好用的交互式數(shù)據(jù)繪圖環(huán)境。繪制的圖表也是交互式的,你可以利用繪圖窗口中的工具欄放大圖表中的某個(gè)區(qū)域或?qū)φ麄€(gè)圖表進(jìn)行平移瀏覽。
TVTK
是python數(shù)據(jù)三維可視化庫,是一套功能十分強(qiáng)大的三維數(shù)據(jù)可視化庫,它提供了Python風(fēng)格的API,并支持Trait屬性(由于Python是動態(tài)編程語言,其變量沒有類型,這種靈活性有助于快速開發(fā),但是也有缺點(diǎn)。而Trait庫可以為對象的屬性添加檢校功能,從而提高程序的可讀性,降低出錯率。) 和NumPy數(shù)組。此庫非常龐大,因此開發(fā)公司提供了一個(gè)查詢文檔,用戶可以通過下面語句運(yùn)行它:
from enthought.tvtk.toolsimport tvtk_doc
tvtk_doc.main()
Scikit-Learn
是基于python的機(jī)器學(xué)習(xí)庫,建立在NumPy、SciPy和matplotlib基礎(chǔ)上,操作簡單、高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析。其文檔、實(shí)例都比較齊全。
小編建議:初學(xué)者使用python(x, y),其是一個(gè)免費(fèi)的科學(xué)和工程開發(fā)包,提供數(shù)學(xué)計(jì)算、數(shù)據(jù)分析和可視化展示。非常方便!
其官網(wǎng):(由于某種原因,國內(nèi)上不去,需要翻墻)
下載地址:(小編到網(wǎng)上搜到的一個(gè)地址,親測可以用)
下圖展示了python(x, y) 強(qiáng)大功能。
分享文章:用python做生產(chǎn)函數(shù),python在制造業(yè)中的運(yùn)用
分享網(wǎng)址:http://chinadenli.net/article27/dsihccj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、移動網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)