pandas 學習彙總3 - Series,DataFrame迭代iter( tcy)
阿新 • • 發佈:2018-12-15
迭代iter 2018/12/1 ======================================================================= 1.基本iteration()產生:#系列:值;DataFrame:列標籤;面板:專案標籤 # 迭代Series類似陣列,迭代產生值。其他資料結構如DataFrame遵循迭代物件“鍵”的類似dict s = pd.Series( [1,2,3],index=['a', 'b', 'c']) for col in s: print(col,end=",") #1 ,2 ,3, df = pd.DataFrame({'col1' : [1,2,3], 'col2' : [4,5.0,6]},index=['a', 'b', 'c']) for col in df: print(col) # col1 col2 ======================================================================= 2.iteritems 類似dict遍歷鍵值對: # 系列 :(索引,標量值)對;DataFrame :(列,系列)對;面板 :( item,DataFrame)對 for index,value in s.iteritems(): print('(%s,%s)'%(index,value,),end='') # (a,1)(b,2)(c,3) for col,s0 in df.iteritems(): print(col) print(s0) # col1 # a 1 # b 2 # c 3 # Name: col1, dtype: int64 # col2 # a 4.0 # b 5.0 # c 6.0 # Name: col2, dtype: float64 ===================================================================== 3.迭代DataFrame行 iterrows()迭代DataFrame行返回迭代器,產生索引值及每行Series;沒有保留跨行dtypes itertuples()返回迭代器,為DataFrame每一行產生一個namedtuple。 # 元組的第一個元素是行的相應索引值,而其餘值是行值。 # itertuples()保留值的資料型別快於iterrows() # 例項1: for row_index, row in df.iterrows(): print('%s\n%s' % (row_index, row)) # a # col1 1.0 # col2 4.0 # Name: a, dtype: float64 # b # col1 2.0 # col2 5.0 # Name: b, dtype: float64 # c # col1 3.0 # col2 6.0 # Name: c, dtype: float64 # 例項2: for row in df.itertuples(): print(row) # Pandas(Index='a', col1=1, col2=4.0) # Pandas(Index='b', col1=2, col2=5.0) # Pandas(Index='c', col1=3, col2=6.0) ====================================================================== 4.備註 # pandas物件迭代通常很慢。在許多情況下,不需要在行上迭代,用以下方法之一避免: # 向量化:內建方法或NumPy函式(布林)索引,若無函式可用最好用apply()而不是迭代值。 # 效能很重要用cython或numba編寫內部迴圈。 警告 迭代器返回副本而不是檢視,寫入它將不起作用! ======================================================================