( New ) 新連載スタート!2人の会話形式でPythonを学ぶ「週末Pythonゆる講座」はこちら ▶▶

【Python】指定の範囲のデータを抽出する|loc iloc

指定の範囲のデータを抽出

PythonのDataFrameに格納されたデータを、範囲を指定したうえで取得する方法をご紹介します

データを加工するときに必須のスキルになるため、必ず覚えてください

Pythonでloc/ilocを使ってデータを抽出する方法

事前準備

Pandas」というデータ解析を実施できるライブラリをインポートします 

import pandas as pd

※サンプルデータ:学校のテストの点数

学校のイメージ
df = pd.read_excel('学校のテスト.xlsx')
学校のテストのイメージ

データの抽出方法

範囲の指定方法は大きく2パターンあります

それぞれlocilocを利用します

  • 行名・列名を指定する方法(loc
  • 行番号・列番号を指定する方法(iloc

2パターンとも行・列を指定する方法ですが、行→列の順で記述していきます

Pythonでloc/ilocを使ってデータを抽出するイメージ

また複数行・複数列を抽出する場合はコロンで区切って「始め」から「終わり」まで指定します

Pythonでloc/ilocを使ってデータを抽出するイメージ(始めと終わりの指定)

行のみ・列のみ指定したい場合はコロンのみ記述しましょう

そしてもう片方は「始め」と「終わり」を指定します

Pythonでloc/ilocを使ってデータを抽出するイメージ(始めと終わりの指定)

行名・列名を指定する方法(loc)

まずはlocを利用したデータの抽出方法をご紹介します

行名・列名を指定することでデータを取り出せます

実際に下記データで実践していきますが、分かりやすいように「名前」をインデックスとして設定しておきます

学校のテストのイメージ
df.loc['鈴木':'田中','クラス':'部活']
df.loc['鈴木':'田中','クラス':'部活']

行を「鈴木」から「田中」までを、列は「クラス」から「部活」までを指定しています

df.loc[:,'部活':]
df.loc[:,'部活':]

続いて「部活」から「英語(の点数)」までの全ての行を抽出します

「部活」から全ての列を指定するため、コロンのみ記述しています

行番号・列番号を指定する方法(iloc)

続いて行番号・列番号を指定するilocをご紹介します

基本的には使い方がlocと同じですが、番号(1.2.3…)を指定するため他の関数と組み合わせやすいという特徴があります

注意点

Pythonのindex columnの指定は、「0」から始まり最後の数は含めないという特徴があります

つまり行番号を「1:5」と指定すると、「2行目」から「4行目」まで抽出されます

学校のテストのイメージ(index/column番号付き)
df.iloc[1:4,2:5]
df.iloc[1:4,2:5]

ilocを使って行番号・列番号を指定して、データを抽出しています

行番号は「1~4」まで、列番号は「2~5」までを指定します

注意点でも記載した通り、最後の番号は含まれません

df.iloc[2:,:5]
df.iloc[2:,:5]

今度は行番号は「2」から全てを指定し、列番号は始めから「5」まで(5は含まれないので4まで)を指定しています

まとめ

今回はデータの範囲を指定して抽出する方法をご紹介してきました

locilocは基本的な手法ですが、使い方に少しクセがあります

ぜひ覚えて使ってみてください

お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。