Python是一種流行的高級編程語言,因其易於學習、簡單且易讀的語法而備受歡迎。Python提供了許多內置庫和方法,用於實現不同的任務和解決各種問題。在這些方法中,iterrows()是Python提供的一個重要工具之一,它可用於有效地迭代數據幀(DataFrame)中的數據。
一、iterrows()如何工作?
iterrows()是Pandas庫中一個重要的迭代器函數。它可以很方便地遍歷一個數據幀中的所有行。當你使用iterrows()迭代數據幀時,每行將變成一個元組(Tuple),包含行索引和行數據。例如,下面的代碼展示了如何使用iterrows()迭代一個包含三個行、兩個列的數據幀:
import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]}) for index, row in df.iterrows(): print(index, row)
在這個例子中,我們用pd.DataFrame創建了一個名為df的數據幀,該數據幀包含兩個列’a’和’b’,以及三行數據。我們採用for循環遍歷df中的所有行,並用iterrows()把每行轉換為元組(包括行索引和所有數據)。在循環的每個迭代中,我們用print()函數打印出每個元組的內容。輸出如下所示:
0 a 1 b 4 1 a 2 b 5 2 a 3 b 6 dtype: int64
可以看到輸出結果中,每一行的都被轉化為了行索引和行上的數值。因為該數據幀有兩列,所以元組也有兩個元素,這是一個不錯的方式來訪問每一行數據的不同列。
二、iterrows()有什麼優點?
iterrows()有很多讓人感到驚訝和歡喜的優點。以下是其中最受歡迎的一些:
1.方便
iterrows()對於處理大型、迭代數據幀非常方便。它不需要複雜的語法和計算量,也不需要編寫任何功能。只需要一個簡單的for循環就足夠了。
2.高效
iterrows()是一個非常高效的函數。當你處理大型數據幀時,Pandas會在後台優化處理方法並分配數據,進而提高計算速度。這意味着iterrows()不會佔用大量的時間和系統資源。
3.可存儲多個變量
iterrows()可用於遍歷和訪問大型數據結構。利用iterrows()可以在許多變量上進行迭代,更容易提取不同列數據。此外,iterrows()可以在一個簡單和清晰的語法下,同時處理多個返回值。
三、iterrows()的應用
1.數據操作
iterrows()可以將數據轉換為更易於處理的格式。例如,你可以通過迭代一個數據幀來查找特定列中包含的最小值。
import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]}) min_val = float('inf') for i, row in df.iterrows(): if row['a'] < min_val: min_val = row['a'] print("The minimum value is: ", min_val)
在本例中,我們創建了一個數據幀,然後用iterrows()迭代了每行數據。在迭代中,我們用if語句查找每一行數據幀中‘a’列的最小值。當它找到最小值時,我們將其存儲在一個變量中,而不是在所有迭代上進行設置和重複計算。這種方法避免了因重複計算而導致的性能問題,並提高了運行效率。
2.數據清理
iterrows()可以用於數據清洗。例如,你可以使用iterrows()在數據中過濾特定的行或列。
import pandas as pd df = pd.DataFrame({ 'name': ['Adam','Bob','John','Mike'], 'age': [25,22,20,30], 'income': [5000,4000,6000,8000]}) for index, row in df.iterrows(): if row['income'] <= 5000: df = df.drop(index=index) print(df)
在本例中,我們使用iterrows()迭代了數據幀中的每一行,找到income低於等於5000的行,並刪掉所有在該區間內的行。在循環的這個過程中儘可能減少計算量,這樣可以提高代碼效率。
3.數據增強
iterrows()也對於數據增強十分有用,因為它可以使增強數據變得初步安全。例如,你可以使用iterrows()在數據幀中根據日期過濾和殺死日期之外的行:
import pandas as pd df = pd.DataFrame({ 'date': ['20191201','20191202','20191203'], 'value': [1,2,3]}) for index, row in df.iterrows(): if row['date'] != '20191201': df.drop(index=index, inplace=True) print(df)
無論哪種方式,數據增強都需要嚴格管理,iterrows()這個內置函數對於數據增強非常方便,減少了手寫代碼中的許多重複部分。
四、總結
iterrows() 是 Python Pandas 庫中一個高效的迭代器功能。可以根據它的目的在多種方案中快速實現循環,並降低總迭代時間。正如本文介紹的那樣,iterrows()是一個非常方便、高效的工具。當你學習Pandas的時候,iterrows()是值得掌握的一項技術。希望本文對你學習iterrows()起到了很好的幫助作用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197932.html