目次
指定の範囲のデータを抽出
PythonのDataFrameに格納されたデータを、範囲を指定したうえで取得する方法をご紹介します
データを加工するときに必須のスキルになるため、必ず覚えてください
事前準備
「Pandas」というデータ解析を実施できるライブラリをインポートします
import pandas as pd
※サンプルデータ:学校のテストの点数
df = pd.read_excel('学校のテスト.xlsx')
データの抽出方法
範囲の指定方法は大きく2パターンあります
それぞれlocとilocを利用します
- 行名・列名を指定する方法(loc)
- 行番号・列番号を指定する方法(iloc)
2パターンとも行・列を指定する方法ですが、行→列の順で記述していきます
また複数行・複数列を抽出する場合は:コロンで区切って「始め」から「終わり」まで指定します
行のみ・列のみ指定したい場合は:コロンのみ記述しましょう
そしてもう片方は「始め」と「終わり」を指定します
行名・列名を指定する方法(loc)
まずはlocを利用したデータの抽出方法をご紹介します
行名・列名を指定することでデータを取り出せます
実際に下記データで実践していきますが、分かりやすいように「名前」をインデックスとして設定しておきます
df.loc['鈴木':'田中','クラス':'部活']
行を「鈴木」から「田中」までを、列は「クラス」から「部活」までを指定しています
df.loc[:,'部活':]
続いて「部活」から「英語(の点数)」までの全ての行を抽出します
「部活」から全ての列を指定するため、:コロンのみ記述しています
行番号・列番号を指定する方法(iloc)
続いて行番号・列番号を指定するilocをご紹介します
基本的には使い方がlocと同じですが、番号(1.2.3…)を指定するため他の関数と組み合わせやすいという特徴があります
Pythonのindex columnの指定は、「0」から始まり、最後の数は含めないという特徴があります
つまり行番号を「1:5」と指定すると、「2行目」から「4行目」まで抽出されます
df.iloc[1:4,2:5]
ilocを使って行番号・列番号を指定して、データを抽出しています
行番号は「1~4」まで、列番号は「2~5」までを指定します
注意点でも記載した通り、最後の番号は含まれません
df.iloc[2:,:5]
今度は行番号は「2」から全てを指定し、列番号は始めから「5」まで(5は含まれないので4まで)を指定しています
まとめ
今回はデータの範囲を指定して抽出する方法をご紹介してきました
loc・ilocは基本的な手法ですが、使い方に少しクセがあります
ぜひ覚えて使ってみてください