【Python】DataFrameから部分的にデータを抽出する
Pandas/DataFrameで部分的にデータを抽出する方法について紹介します。膨大な量のデータを扱う場合、すべてのデータを参照するのは困難ですしcsvなどに出力する際もExcelなどのソフトで開く場合は行数に制限があります。そのため必要な部分だけ抽出する方法は把握しておいた方が良いでしょう。
以下のデータをベースに解説します。以降のソースコードは以下の末尾に追加されるものと考えてください。
import pandas as pd d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] index = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD'] header = ['data'] df = pd.DataFrame(data=d, columns=header, index=index)
全データを出力すると以下の通りとなります。
先頭n行を抽出
先頭の何行かを抽出する場合はheadメソッドを使います。引数は抽出したい行数です。
print(df.head(5)) # data # A 1 # B 2 # C 3 # D 4 # E 5
末尾n行を抽出
末尾の何行かを抽出する場合はtailメソッドを使います。引数は抽出したい行数です。
print(df.tail(5)) # data # Z 26 # AA 27 # AB 28 # AC 29 # AD 30
中間n行を抽出(インデックス番号で指定)
任意の中間の何行かを抽出する場合は特別なメソッドを使う必要はなく以下のようにインデックス番号で範囲を指定すればOKです。
print(df[5:10]) # data # F 6 # G 7 # H 8 # I 9 # J 10
中間n行を抽出(インデックス名で指定)
同じく任意の中間の何行かを抽出する方法ですが、インデックス名でも範囲指定できます。これはかなり便利な機能と言えます。
print(df['F':'J']) # data # F 6 # G 7 # H 8 # I 9 # J 10
スポンサーリンク