大數(shù)據(jù)分析Python除了循環(huán)遍歷列表之外,for循環(huán)還有很多其他功能,在現(xiàn)實(shí)世界的數(shù)據(jù)科學(xué)工作中,您可能需要將numpy數(shù)組和pandas DataFrames用于其他數(shù)據(jù)結(jié)構(gòu)的循環(huán)。
大數(shù)據(jù)分析Python For循環(huán)教程以如何使用for循環(huán)遍歷列表以外的常見大數(shù)據(jù)分析Python數(shù)據(jù)結(jié)構(gòu)(如元組和字典)開始。然后,我們將深入探討與普通的大數(shù)據(jù)分析Python數(shù)據(jù)科學(xué)圖書館像串聯(lián)使用for循環(huán)numpy,pandas和matplotlib。我們還將仔細(xì)研究該range()函數(shù)及其在編寫循環(huán)時的作用。
快速回顧:大數(shù)據(jù)分析Python For循環(huán)
for循環(huán)是一條編程語句,它告訴大數(shù)據(jù)分析Python遍歷對象集合,并對每個對象依次執(zhí)行相同的操作。基本語法為:
每次大數(shù)據(jù)分析Python遍歷循環(huán)時,變量object都會采用序列中下一個對象的值collection_of_objects,并且大數(shù)據(jù)分析Python將按順序執(zhí)行我們在每個對象上編寫的代碼collection_of_objects。
現(xiàn)在,讓我們深入研究如何使用具有不同種類的數(shù)據(jù)結(jié)構(gòu)的循環(huán)。我們將跳過列表,因?yàn)樯弦唤坛桃呀?jīng)介紹過這些列表。如果您需要進(jìn)一步檢查,請?jiān)诹斜砗脱h(huán)中查看入門教程或Dataquest的交互式任務(wù)。
數(shù)據(jù)結(jié)構(gòu)
元組
元組是序列,就像列表一樣。元組和列表之間的區(qū)別在于元組是不可變的。也就是說,它們不能更改(了解有關(guān)大數(shù)據(jù)分析Python中可變和不可變對象的更多信息)。元組還使用括號代替方括號。
不管這些差異如何,在元組上循環(huán)與列表非常相似。
如果我們有一個元組列表,則可以通過將它們都作為變量包含在for循環(huán)中來訪問列表中每個元組中的各個元素,如下所示:
辭典
除了列表和元組,字典是您在處理數(shù)據(jù)時可能會遇到的另一種常見的大數(shù)據(jù)分析Python數(shù)據(jù)類型,并且for循環(huán)也可以遍歷字典。
大數(shù)據(jù)分析Python字典由鍵值對組成,因此在每個循環(huán)中,我們需要訪問兩個元素(鍵和值)。與其enumerate()像使用列表那樣使用,不如遍歷兩個鍵和每個鍵值對的對應(yīng)值,我們需要調(diào)用該.items()方法。
例如,假設(shè)我們有一個名為“字典”的字典stocks,其中包含股票行情自動收錄器和相應(yīng)的股票價格。我們將使用.items()字典上的方法為每次迭代生成鍵和值:
請注意,名稱鍵和值完全是任意的。我們也可以將它們標(biāo)記為k和v或x和y。
弦樂
如入門教程中所述,for循環(huán)還可以遍歷字符串中的每個字符??焖倩仡櫼幌拢@是如何工作的:
numpy數(shù)組
現(xiàn)在,讓我們看一下常見的大數(shù)據(jù)分析Python數(shù)據(jù)科學(xué)包及其數(shù)據(jù)類型如何使用for循環(huán)。
我們將從研究如何使用numpy數(shù)組循環(huán)開始,因此讓我們從創(chuàng)建一些隨機(jī)數(shù)數(shù)組開始。
在一維numpy數(shù)組上進(jìn)行迭代與在列表上進(jìn)行迭代非常相似:
現(xiàn)在,如果我們要遍歷二維數(shù)組怎么辦?如果我們使用與上面相同的語法來迭代二維數(shù)組,則每次迭代只能迭代整個數(shù)組。
二維數(shù)組是由一對一維數(shù)組構(gòu)成的。要訪問每個元素而不是每個數(shù)組,我們可以使用numpy函數(shù)nditer(),它是一個以數(shù)組作為參數(shù)的多維迭代器對象。
在下面的代碼中,我們將編寫一個for循環(huán),該循環(huán)將z二維數(shù)組作為參數(shù) 傳遞給每個元素nditer():
如我們所見,這首先列出了x中的所有元素,然后列出了y中的所有元素。
記得!當(dāng)遍歷這些不同的數(shù)據(jù)結(jié)構(gòu)時,字典需要一個方法,numpy數(shù)組需要一個function。
熊貓數(shù)據(jù)框
當(dāng)我們使用大數(shù)據(jù)分析Python處理數(shù)據(jù)時,我們經(jīng)常使用pandasDataFrames。值得慶幸的是,我們也可以使用for循環(huán)遍歷那些循環(huán)。
讓我們練習(xí)使用一個小的CSV文件進(jìn)行練習(xí),該文件記錄六個不同國家的GDP,首都和人口。我們將在下面將其讀入pandas DataFrame中。
熊貓的工作方式與numpy有所不同,因此我們將無法簡單地重復(fù)已經(jīng)學(xué)習(xí)的numpy過程。如果我們像遍歷一個numpy數(shù)組一樣嘗試遍歷pandas DataFrame,則只會打印出列名:
相反,我們需要明確提及我們要遍歷DataFrame的行。為此,我們iterrows()在DataFrame上調(diào)用方法,并打印行標(biāo)簽和行數(shù)據(jù),其中一行是整個熊貓系列。
我們還可以從熊貓系列訪問特定值。假設(shè)我們只想打印出每個國家的首都。我們可以指定僅希望從“ Capital”列中輸出,如下所示:
為了使事情比簡單的打印輸出更進(jìn)一步,讓我們使用for循環(huán)添加一列。讓我們添加“人均GDP”列。請記住,這.loc[]是基于標(biāo)簽的。在下面的代碼中,我們將添加該列并通過將每個國家的總GDP除以其人口并將結(jié)果乘以一萬億來計算每個國家的內(nèi)容(因?yàn)镚DP的數(shù)字以萬億為單位)。
對于數(shù)據(jù)框中的每一行,我們將創(chuàng)建一個新標(biāo)簽,并將行數(shù)據(jù)設(shè)置為等于GDP總量除以該國人口,再乘以$ 1T得出數(shù)千美元。
該range()功能
我們已經(jīng)看到了如何使用for循環(huán)迭代任何序列或數(shù)據(jù)結(jié)構(gòu)。但是,如果我們想以特定順序或特定次數(shù)迭代這些序列,該怎么辦?
這可以通過大數(shù)據(jù)分析Python的內(nèi)置range()函數(shù)來完成。根據(jù)傳遞給該函數(shù)的參數(shù)數(shù)量,您可以確定該系列數(shù)字將在哪里開始和結(jié)束以及一個數(shù)字與下一個數(shù)字之間的差值有多大。請注意,類似于列表,range()函數(shù)的計數(shù)從0開始而不是從1開始。
我們可以通過三種方式致電range():
a.范圍(停止)
b.范圍(開始,停止)
c.范圍(開始,停止,步進(jìn))
range(stop)
range(stop)有一個參數(shù),當(dāng)我們要迭代從0開始的一系列數(shù)字時使用,并包括直到但不包括我們設(shè)置為stop的數(shù)字的每個數(shù)字。
range(start, stop)
range(start,stop)有兩個參數(shù),我們不僅可以設(shè)置序列的結(jié)尾,還可以設(shè)置起點(diǎn)。您可以使用range()使用range(A,B)生成從A到B的一系列數(shù)字。
range(start, stop, step)
range(開始,停止,步進(jìn))采用三個參數(shù)。除了最小值和最大值之外,我們還可以設(shè)置序列中一個數(shù)字與下一個數(shù)字之間的差。如果未提供,則默認(rèn)步進(jìn)值為1。
請注意,這對于非數(shù)字序列也是如此。
我們還可以使用序列中元素的索引進(jìn)行迭代。關(guān)鍵思想是首先計算列表的長度,然后在此長度范圍內(nèi)迭代序列。讓我們看一個例子:
在上面的for循環(huán)中,我們查看變量的索引和語言,in關(guān)鍵字以及range()創(chuàng)建數(shù)字序列的函數(shù)。請注意,我們也使用len()在這種情況下,函數(shù),因?yàn)榱斜聿皇菙?shù)字。
對于每次迭代,我們都在執(zhí)行我們的打印語句。因此,對于len(languages)范圍內(nèi)的每個索引,我們都希望打印一種語言。因?yàn)槲覀兊恼Z言序列的長度是6(即計算得出的len(langauges)值),所以我們可以按以下方式重寫語句:
用For循環(huán)繪制
假設(shè)我們要遍歷一個集合,并使用每個元素來生成一個子圖,甚至是單個圖中的每個跡線。例如,讓我們采用流行的虹膜數(shù)據(jù)集(了解有關(guān)此數(shù)據(jù)的更多信息)并使用for循環(huán)進(jìn)行一些繪制??紤]下圖。
上面,我們繪制了每個萼片長度與萼片寬度的關(guān)系圖,但是我們可以通過在每個數(shù)據(jù)點(diǎn)上按每種花的種類分類給圖賦予更多的含義。一種方法是通過使用for循環(huán)將每個點(diǎn)單獨(dú)散布并傳入相應(yīng)的顏色。
如果我們想可視化虹膜數(shù)據(jù)集某些特征的單變量分布怎么辦?我們可以使用來執(zhí)行此操作plt.subplot(),它可以在網(wǎng)格內(nèi)創(chuàng)建一個子圖,可以設(shè)置其列數(shù)和行數(shù)。
暫時不深入了解matplotlib語法,以下是對圖的每個主要組件的簡要說明:
1)plt.subplot()–用于創(chuàng)建我們的2×2網(wǎng)格并設(shè)置整體大小。
2)zip()–這是一個內(nèi)置的大數(shù)據(jù)分析Python函數(shù),使同時循環(huán)遍歷相同長度的多個可迭代對象變得非常簡單。
3)axes.flatten(),其中flatten()是一種numpy數(shù)組方法–這將返回我們數(shù)組(列)的展平版本。
4)ax.set()–允許我們axes使用一個方法設(shè)置對象的所有屬性。
附加操作
嵌套循環(huán)
大數(shù)據(jù)分析Python允許我們在另一個循環(huán)中使用一個循環(huán)。這涉及到一個外部循環(huán),該循環(huán)在其命令內(nèi)部具有一個內(nèi)部循環(huán)。
考慮以下結(jié)構(gòu):
嵌套的for循環(huán)對于在由列表組成的列表中的項(xiàng)目之間進(jìn)行迭代很有用。在一個由列表組成的列表中,如果我們僅使用一個for循環(huán),則程序會將每個內(nèi)部列表作為一項(xiàng)輸出:
為了訪問內(nèi)部列表的每個單獨(dú)項(xiàng),我們定義了一個嵌套的for循環(huán):
在上方,外部for循環(huán)遍歷主列表列表(在此示例中包含兩個列表),內(nèi)部for循環(huán)遍歷各個列表本身。外循環(huán)執(zhí)行2次迭代(針對每個子列表),并且在每次迭代時,我們執(zhí)行內(nèi)循環(huán),打印相應(yīng)子列表的所有元素。
這告訴我們控件從最外層循環(huán)開始,遍歷內(nèi)層循環(huán),然后再次返回到外層for循環(huán),一直持續(xù)到控件覆蓋整個范圍為止,在這種情況下,該范圍是2倍。
繼續(xù)和打破循環(huán)
循環(huán)控制語句從其正常順序更改for循環(huán)的執(zhí)行。
如果我們想在內(nèi)部循環(huán)中濾除特定語言怎么辦?我們可以使用continue語句來執(zhí)行此操作,這使我們可以在觸發(fā)外部條件時跳過循環(huán)的特定部分。
在上面的循環(huán)中,在內(nèi)層循環(huán)中,如果語言等于“德語”,我們將僅跳過該迭代,并繼續(xù)循環(huán)的其余部分。循環(huán)不會終止。
讓我們看下面的數(shù)字示例:
因此,在這里,我們定義了一個循環(huán),該循環(huán)遍歷所有數(shù)字0到9,并對每個數(shù)字求平方。在循環(huán)中,在每次迭代中,我們都在檢查數(shù)字是否可被2整除,這時循環(huán)將繼續(xù)執(zhí)行,當(dāng)我求出偶數(shù)時,將跳過該迭代。
怎么樣一個break語句?這使我們可以在滿足外部條件時完全退出循環(huán)。讓我們使用與上面相同的示例來簡單演示其工作原理:
在上面的示例中,我們的if語句提出了以下條件:如果我們的變量i的值等于7,則循環(huán)將中斷,因此我們的循環(huán)將在0到6之間對整數(shù)進(jìn)行迭代,然后再完全退出循環(huán)。
尋找更多?以下是一些可能有用的其他資源:
1)大數(shù)據(jù)分析Python教程 —我們不斷擴(kuò)展的數(shù)據(jù)科學(xué)大數(shù)據(jù)分析Python教程列表。
2)數(shù)據(jù)科學(xué)課程 -直接在瀏覽器中通過完全交互式的編程,數(shù)據(jù)科學(xué)和統(tǒng)計課程將您的學(xué)習(xí)提升到一個新的水平。
結(jié)論
在大數(shù)據(jù)分析Python For循環(huán)教程中,我們了解了for循環(huán)的一些更高級的應(yīng)用程序,以及如何在典型的大數(shù)據(jù)分析Python數(shù)據(jù)科學(xué)工作流中使用它們。
我們學(xué)習(xí)了如何迭代不同類型的數(shù)據(jù)結(jié)構(gòu),以及如何將循環(huán)與pandas DataFrames和matplotlib一起使用以編程方式創(chuàng)建多個跟蹤或子圖。
最后,我們研究了一些更高級的技術(shù),這些技術(shù)使我們可以更好地控制for循環(huán)的操作和執(zhí)行。
填寫下面表單即可預(yù)約申請免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會?助教全程陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!
?2007-2022/ m.5wd995.cn 北京漫動者數(shù)字科技有限公司 備案號: 京ICP備12034770號 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc