Pandasのlocメソッドを使ってDataFrameからデータの一部分だけ取得する方法

スポンサーリンク

今回は、Pythonのloc()関数の機能を詳しく解説します。


スポンサーリンク

Pythonのloc()関数の動作について

Pythonは、データ値を扱ったり操作したりするための関数を組み込んだ様々なモジュールで構成されています。

そのひとつがPandasモジュールです。

Pandasモジュールを使うと、かなり膨大な量のデータを含む大きなデータセットをまとめて処理することができます

このとき、「Pythonのloc()関数」が登場します。

loc()関数は、データセットから簡単にデータの値を取り出すのに役立ちます。

loc()関数を使うと、関数に渡されたインデックス値に基づいて、特定の行や列にフィットしたデータ値にアクセスすることができる。

構文は以下の様な感じです。

pandas.DataFrame.loc[index label]


出力にデータ全体を表示させたいインデックス値を指定する必要がある。

インデックス・ラベルは、以下の値のいずれかです。

  • 単一ラベル – 例: 文字列
  • 文字列のリスト
  • ラベルを持つスライスオブジェクト
  • ラベルの配列のリストなど。

このように、データセットから特定のレコードを取り出すには、 loc() 関数を用いてインデックスのラベルを元に取り出すことができます。

注意:渡されたインデックスがラベルとして存在しない場合、KeyError を返す。

それでは、以下の例でその実装を説明しましょう。


Python の loc() 関数の例

まず、Pandasモジュールのdata frameを使用して、以下のようにデータの値の集合を持つデータフレームを作成します。

import pandas as pd
data = pd.DataFrame([[1,1,1], [4,4,4], [7,7,7], [10,10,10]],
     index=['Python', 'Java', 'C','Kotlin'],
     columns=['RATE','EE','AA'])
print(data)

データフレーム

    RATE    EE  AA
Python  1   1   1
Java    4   4   4
C   7   7   7
Kotlin  10  10  10

定義された値の集合を持つデータフレームを作成した後、以下のように、特定のインデックスのデータ値を持つ行または列の集合を取得することを試してみましょう。

データフレームから1行を抽出する

print(data.loc['Python'])

上記のコマンドで、インデックスラベル「Python」に関連するすべてのデータ値が抽出されました。

結果は以下の通りです。

RATE    1
EE      1
AA      1
Name: Python, dtype: int64

データフレームから複数行を抽出する

以下のコマンドを使用して、複数のインデックスに関連付けられたデータの行と列を同時に抽出してみましょう。

print(data.loc[['Python','C']])

結果は以下の通りです。

          RATE  EE  AA
Python     1    1    1
C          7    7    7

Python の loc() を用いて行の範囲を抽出します。

print(data.loc['Python':'C'])

ここでは、スライスオブジェクトをラベルと同様に使用して、「Python」から「C」までのラベルに関連する行と列を表示しています。

結果は以下の通りです。

          RATE  EE  AA
Python     1   1   1
Java       4   4   4
C          7   7   7

まとめ

ここまでで、このトピックは終了です。

もし何か疑問があれば、お気軽にコメントください。

Pythonに関連するこのような記事のために、曲がったままで、それまで幸せな学習!!。


参考文献

  • Python pandas.loc() 関数 – ドキュメント
タイトルとURLをコピーしました