DataFrameの一部を抽出するloc属性の解説

locアイキャッチ pandas

【宣伝】pandasのオススメの本の紹介

このブログでも詳しくpandasの使い方を紹介していますが、体系的に学びたい方や、本の方が良いという方には以下の本をオススメしておきます。

pandasライブラリ活用入門[第2版]

準備

loc属性, iloc属性を使ってDataFrameの一部を抽出する方法を説明する。
この記事ではloc属性について説明する。

説明のために以下のDataFrameを用意する。「コードでDataFrameを用意する方法」についても別の記事で説明している。

import pandas as pd # ※以降のコードでは省略する

df = pd.DataFrame({
    "student_id": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    "name": ["taro", "hanako", "jiro", "fuyumi", "sigeru", "satoshi", "misuzu", "taro", "saburo", "ichiro"],
    "math": [50, 68, 90, 35, 49, 77, 88, 91, 80, 100],
    "english": [10, 99, 55, 54, 30, 29, 67, 45, 46, 88]
})
df
サンプルDataFrame

index, columnsを指定して抽出するloc属性

index, columnsの値を使ってDataFrameから一部を抽出することができる。

index, columnsについては以下の記事で解説した。

1行抽出する

loc属性にindexを指定することで該当行を抽出することができる。

df.loc[3] # indexが3の行を抽出する

リストを使って複数行抽出する

loc属性にindexのリストを指定することで該当行を抽出することができる。

df.loc[ [0, 8, 2] ] # indexが0,8,2の行を抽出する

numpyの配列を使って複数行抽出する

loc属性にnumpyの配列を指定することで同様に該当行を抽出することができる。

import numpy as np

arr = np.array([2,7,1])
df.loc[arr]

スライスを使って複数行抽出する

別の記事で解説するilocや、一般のPythonのスライスと異なり、locは終端のindexを含んで抽出されることに注意。(終端indexの5の行も抽出される)
注意してないとバグるポイントなので要注意。

df.loc[2:5]

1列抽出する

loc属性はカンマ( , )の前に抽出する行の指定、後ろに抽出する列の指定ができる。

この例のコロン( : )は全行抽出することを意味する。カンマの後ろには抽出する列名を指定する。

df.loc[:, "name"]

リストを使って複数列抽出する

前節の”name”の部分をカラム名のリストにすることで複数列抽出できる。

df.loc[:, ["name", "math", "english"]]

Python入門【pandas編】

このブログでは「Python入門【pandas編】」の記事群を整備中です。興味のある方は下のリンク先をチェックしてみてください。

コメント

タイトルとURLをコピーしました