Python学習メモ「PandasのSeriesやDataFrameでイテレーション」
今回はPandasのSeriesとDataFrameのイテレーターについてまとめます。下記のサイトを参考にしました。
sinhrks.hatenablog.com
実際の使い方(Seriesの場合)
大きく2つのイテレーションメソッドがあります。
1.格納されている値だけを取り出すパターン
「for 変数 in Series名:」で実行できます。
例
s = pd.Series([5, 10, 15], index=['X', 'Y', 'Z']) for val in s: print(val)
実行結果
5 10 15
変数valには5,10,15と格納されている値が繰り返し代入されているのが分かります。
2.格納されている値とそのindexを取り出すパターン
「for 変数1, 変数2 in Series名.iteritems():」で実行できます。変数1にはindexが、変数2には値が入ります。
例
s = pd.Series([5, 10, 15], index=['X', 'Y', 'Z']) for key, val in s.iteritems(): print(key) print(val) print('')
実行結果
X 5 Y 10 Z 15
変数keyにはX,Y,Zとindexが、valには5,10,15と格納されている値が繰り返し代入されているのが分かります。
実際の使い方(DataFrameの場合)
大きく3つのイテレーションメソッドを持ちます。
1.列名だけを取り出すパターン
「for 変数 in DataFrame名:」で実行できます。
例
df = pd.DataFrame({'X' : [5,10,15], 'Y' : [20,25,30], 'Z' : [35,40,45]}, index=list("abc")) print ("dfの中身") print df print "" print ("「for 変数 in df:」の実行") for col in df: print col print ""
実行結果
dfの中身 X Y Z a 5 20 35 b 10 25 40 c 15 30 45 「for 変数 in df:」の実行 X Y Z
2.列名とその列の値を取り出すパターン
「for 変数1, 変数2 in DataFrame名.iteritems():」で実行できます。変数1には列名が、変数2にはその列の全要素が入ります。
例
df = pd.DataFrame({'X' : [5,10,15], 'Y' : [20,25,30], 'Z' : [35,40,45]}, index=list("abc")) print ("dfの中身") print df print "" print ("「for 変数1, 変数2 in df.iteritems():」の実行") for key, col in df.iteritems(): print (key) print (col) print ""
実行結果
dfの中身 X Y Z a 5 20 35 b 10 25 40 c 15 30 45 「for 変数1, 変数2 in df.iteritems():」の実行 X a 5 b 10 c 15 Name: X, dtype: int64 Y a 20 b 25 c 30 Name: Y, dtype: int64 Z a 35 b 40 c 45 Name: Z, dtype: int64
3.行名とその行の値を取り出すパターン
「for 変数1, 変数2 in DataFrame名.iterrows():」で実行できます。変数1には行名が、変数2にはその行の全要素が入ります。
例
df = pd.DataFrame({'X' : [5,10,15], 'Y' : [20,25,30], 'Z' : [35,40,45]}, index=list("abc")) print ("dfの中身") print df print "" print ("「for 変数1, 変数2 in df.iterrows():」の実行") for key, row in df.iterrows(): print (key) print (row) print ""
実行結果
dfの中身 X Y Z a 5 20 35 b 10 25 40 c 15 30 45 「for 変数1, 変数2 in df.iterrows():」の実行 a X 5 Y 20 Z 35 Name: a, dtype: int64 b X 10 Y 25 Z 40 Name: b, dtype: int64 c X 15 Y 30 Z 45 Name: c, dtype: int64
まとめ
・Seriesのイテレーション
1.格納されている値だけを取り出すパターン
→「for 変数 in Series名:」
2.格納されている値とそのindexを取り出すパターン
→「for 変数1, 変数2 in Series名.iteritems():」
変数1にはindexが、変数2には値が入る。
・DataFrameのイテレーション
1.列名だけを取り出すパターン
→「for 変数 in DataFrame名:」
2.列名とその列の値を取り出すパターン
→「for 変数1, 変数2 in DataFrame名.iteritems():」
変数1には列名が、変数2に列の全要素が入る。
3.行名とその行の値を取り出すパターン
→「for 変数1, 変数2 in DataFrame名.iterrows():」
変数1には行名が、変数2には行の全要素が入る。
Javaでいうところの「拡張for」に似ていますね。
終わり。