【Python】特定の値でデータフレームを分割する
データフレームを扱う時に、ある値を参照して、
データフレームを分割したいなという時があると思います。
今回はPythonでデータフレームを分割する際の方法をお伝えします。
Pandasに関しては
Pandasに関しては、こちらの書籍が非常に参考になります。
Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,瀬戸山雅人,小林儀匡,滝口開資
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
さて、本題の特定の値でデータフレームを分割する方法をご紹介します。
まずは、データフレームを作成しましょう。
#必要なパッケージのインポート import pandas as pd import numpy as np df = pd.DataFrame({ 'A' : 1., 'B' : pd.Timestamp('20130102'), 'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 'D' : np.array([3] * 4,dtype='int32'), 'E' : pd.Categorical(["test","train","test","train"]), 'F' : 'foo' })
作成されたデータフレームを確認
分割するためのスクリプト
#E列の値を参照してデータフレームを分割する grouped_df = df.groupby('E') for col, split_df in grouped_df: print('split value : ',col) print(split_df)
出力結果
split value : test A B C D E F 0 1.0 2013-01-02 1.0 3 test foo 2 1.0 2013-01-02 1.0 3 test foo split value : train A B C D E F 1 1.0 2013-01-02 1.0 3 train foo 3 1.0 2013-01-02 1.0 3 train foo
さて、どうでしょうか。
データフレームのE列の値(test, train)で、データフレームが分割されていることがわかります。
このようにある値を参照してデータフレームを分割したいときには、
GROUP BYとfor文を使うことで、分けることができます。