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