本篇文章給大家分享的是有關(guān)用Python做數(shù)據(jù)科學(xué)時容易忘記的八個要點分別是什么,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),古丈企業(yè)網(wǎng)站建設(shè),古丈品牌網(wǎng)站建設(shè),網(wǎng)站定制,古丈網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,古丈網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
如果你發(fā)覺自己在編程時一次又一次地查找相同的問題、概念或是語法,你不是一個人!
雖然我們在StackOverflow或其他網(wǎng)站上查找答案是很正常的事情,但這樣做確實比較花時間,也讓人懷疑你是否完全理解了這門編程語言。
我們現(xiàn)在生活的世界里,似乎有著無限的免費資源,而你只需要一次搜索即可獲得。然而,這既是這個時代的幸事,也是一種詛咒。如果沒能有效利用資源,而是對它們過度依賴,你就會養(yǎng)成不良的習(xí)慣,長期處于不利境地。
當(dāng)我谷歌一個問題,發(fā)現(xiàn)有人提了同樣問題,但下面只有一個回答,而且2003年以后就再也沒有新的答案的時候,我真是和那個提問者同病相憐!弱小,可憐又無助!
“你是誰!你在哪兒!最后你發(fā)現(xiàn)了啥!”
就個人而言,我發(fā)現(xiàn)自己也是多次從類似的技術(shù)問答中找代碼(見上文插圖漫畫);而不是花時間學(xué)習(xí)和鞏固概念,以便下次可以自己把代碼寫出來。
網(wǎng)上搜索答案是一種懶惰的行為,雖然在短期內(nèi)它可能是最簡便的途徑,但它終究不利于你的成長,并且會降低工作效率和對語法的熟知能力(咳咳,面試的時候這些知識很重要)。
目標(biāo)
最近,我一直在Udemy學(xué)習(xí)名為Python for Data Science and Machine Learning的數(shù)據(jù)科學(xué)在線課程。在該系列課程的早期課件中,我想起了用Python做數(shù)據(jù)分析時一直被我忽略的一些概念和語法。
為了一勞永逸地鞏固我對這些概念的理解,并為大家免去一些StackOverflow的搜索,我在文章中整理了自己在使用Python,NumPy和Pandas時總是忘記的東西。
我為每個要點提供了簡短的描述和示例。為了給讀者帶來福利,我還添加了視頻和其他資源的鏈接,以便大家更深入地了解各個概念。
單行List Comprehension
每次需要定義某種列表時都要寫for循環(huán)是很乏味的,好在Python有一種內(nèi)置的方法可以用一行代碼解決這個問題。該語法可能有點難以理解,但是一旦熟悉了這種技巧,你就會經(jīng)常使用它。
* Line 8是對for loop的單行簡化
請參閱上圖和下文的示例,比較一下在創(chuàng)建列表時,你通常使用的for循環(huán)樣板和以單行代碼創(chuàng)建這二者之間的差別。
x = [1,2,3,4] out = [] for item in x: out.append(item**2) print(out) [1, 4, 9, 16] # vs. x = [1,2,3,4] out = [item**2 for item in x] print(out) [1, 4, 9, 16]
Lambda 函數(shù)
編程的過程中經(jīng)常為了實現(xiàn)最后的功能,創(chuàng)建一個又一個階段性的函數(shù),這些函數(shù)往往就只用一兩次。這個過程很煩人。這時候Lambda函數(shù)來搭救你了!
Lambda函數(shù)用于在Python中創(chuàng)建小型的,一次性的和匿名的函數(shù)對象。基本上,它們可以讓你“在不創(chuàng)建新函數(shù)的情況下”創(chuàng)建一個函數(shù)。
lambda函數(shù)的基本語法如下:
lambda arguments: expression
所以,只要給它一個表達式,lambda函數(shù)可以執(zhí)行所有常規(guī)函數(shù)可執(zhí)行的操作。請看下面的簡單示例和后文中的視頻,以更好地感受lambda函數(shù)強大的功能。
double = lambda x: x * 2 print(double(5)) 10
Map和Filter
一旦掌握了lambda函數(shù),并學(xué)會將它們與map和filter函數(shù)配合使用,你將擁有一個強大的工具。
具體來說,map函數(shù)接受一個列表并通過對每個元素執(zhí)行某種操作來將其轉(zhuǎn)換為新列表。在下面的示例中,它遍歷每個元素并將其乘以2的結(jié)果映射到新列表。請注意,這里的list函數(shù)只是將輸出轉(zhuǎn)換為列表類型。
# Map seq = [1, 2, 3, 4, 5] result = list(map(lambda var: var*2, seq)) print(result) [2, 4, 6, 8, 10]
filter函數(shù)需要的輸入是列表和規(guī)則,非常類似于map,但它通過將每個元素與布爾過濾規(guī)則進行比較來返回原始列表的子集。
# Filter seq = [1, 2, 3, 4, 5] result = list(filter(lambda x: x > 2, seq)) print(result) [3, 4, 5]
Arange和Linspace
要創(chuàng)建快速簡單的NumPy數(shù)組,可以查看arange和linspace函數(shù)。它們都有特定的用途,但在這里我們看中的是它們都輸出Numpy數(shù)組(而非其使用范圍),這通常更容易用于數(shù)據(jù)科學(xué)。
Arange在給定的范圍內(nèi)返回間隔均勻的值。除了起始值和終止值,你還可以根據(jù)需要定義步長或數(shù)據(jù)類型。請注意,終止值是一個“截止”值,因此它不會被包含在數(shù)組輸出中。
# np.arange(start, stop, step) np.arange(3, 7, 2) array([3, 5])
Linspace與Arange非常相似,但略有不同。Linspace是在指定的范圍內(nèi)返回指定個數(shù)的間隔均勻的數(shù)字。所以給定一個起始值和終止值,并指定返回值的個數(shù),linspace將根據(jù)你指定的個數(shù)在NumPy數(shù)組中劃好等分。這對于數(shù)據(jù)可視化和在定義圖表坐標(biāo)軸時特別有用。
# np.linspace(start, stop, num) np.linspace(2.0, 3.0, num=5) array([ 2.0, 2.25, 2.5, 2.75, 3.0])
Axis的真正意義
在Pandas中刪除列或在NumPy矩陣中對值進行求和時,可能會遇到這問題。即使沒有,那么你也肯定會在將來的某個時候碰到。我們現(xiàn)在來看看刪除列的示例:
df.drop('Row A', axis=0) df.drop('Column A', axis=1)
在我知道自己為什么要這樣定義坐標(biāo)軸之前,我不知道我寫了多少次這行代碼。你可以從上面看出,如果要處理列,就將axis設(shè)為1,如果要處理行,則將其設(shè)為0。
但為什么會這樣呢?我記得我最喜歡的解釋是這個:
df.shape (# of Rows, # of Columns)
從Pandas的dataframe調(diào)用shape屬性時會返回一個元組,其中第一個值表示行數(shù),第二個值表示列數(shù)。如果你想想在Python中是如何建立索引的,即行為0,列為1,會發(fā)現(xiàn)這與我們定義坐標(biāo)軸值的方式非常相似。很有趣吧!
Concat, Merge, 和Join
如果你熟悉SQL,那么這些概念對你來說可能會更容易。無論如何,這些功能基本上就是以特定方式組合dataframe的方法。可能很難評判在什么時候使用哪個最好,所以讓我們都回顧一下。
Concat允許用戶在其下方或旁邊附加一個或多個dataframe(取決于你如何定義軸)。
Merge可以基于特定的、共有的主鍵(Primary Key)組合多個dataframe。
Join,就像merge一樣,可以組合兩個dataframe。但是,它根據(jù)它們的索引進行組合,而不是某些特定的主鍵。
大家可以查看很有幫助的Pandas文檔,了解語法和具體示例和你可能會遇到的特殊情況。
Pandas Apply
apply類似于map函數(shù),不過它是用于Pandas DataFrames的,或者更具體地說是用于Series的。如果你不熟悉也沒關(guān)系,Series在很大程度上與NumPy中的陣列(array)非常相似。
Apply會根據(jù)你指定的內(nèi)容向列或行中的每個元素發(fā)送一個函數(shù)。你可以想象這是多么有用,特別是在對整個DataFrame的列處理格式或運算數(shù)值的時候,可以省去循環(huán)。
透視表
最后要說到的是透視表。如果你熟悉Microsoft Excel,那么你可能已經(jīng)聽說過數(shù)據(jù)透視表。Pandas內(nèi)置的pivot_table函數(shù)將電子表格樣式的數(shù)據(jù)透視表創(chuàng)建為DataFrame。請注意,透視表中的維度存儲在MultiIndex對象中,用來聲明DataFrame的index和columns。
結(jié)語
我的這些Python編程小貼士就到此為止啦。我希望我介紹的這些在使用Python做數(shù)據(jù)科學(xué)時經(jīng)常遇到的重要但又有點棘手的方法、函數(shù)和概念能給你帶來幫助。
而我自己在整理這些內(nèi)容并試圖用簡單的術(shù)語來闡述它們的過程中也受益良多。
以上就是用Python做數(shù)據(jù)科學(xué)時容易忘記的八個要點分別是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁標(biāo)題:用Python做數(shù)據(jù)科學(xué)時容易忘記的八個要點分別是什么
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article18/pdcggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、用戶體驗、App開發(fā)、靜態(tài)網(wǎng)站、定制開發(fā)、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)