LoginSignup
14
13

More than 3 years have passed since last update.

pandas.DataFrame.locの使い方まとめ

Posted at

「loc」は、DataFrameの内で条件を満たした行、列を抽出することができます。pandasを利用していると頻繁に出てくる「loc」ですが、データの指定方法にバリエーションがあるので、その辺をまとめていきたいと思います。

データ指定について

locは、大きく分けると以下のデータ指定が可能です。

  • 単一ラベル
  • ラベルリスト
  • ラベルのスライスオブジェクト
  • 真偽値リスト
  • 条件式の指定

色々な使い方がありますね・・・ (゜_゜)
プログラムを書くときも注意が必要ですが、読むときにどのパターンで実装されているか冷静に見分けないと、「????」ってなりそうです。それぞれのサンプルコードを書いてみて動作を確認してみようと思います。

実際に使ってみた

今回動作確認で利用するデータは自分で作ったものです。

import pandas as pd
loc_sample_data = pd.read_csv("loc_sample_data.csv",index_col="item_name")
loc_sample_data.head()

キャプチャ.JPG

行インデックスはitem_name、列はprice、stock、producing_areaで構成されています。

単一インデックスラベルの指定

抽出したい行のインデックスラベル(単一)を指定してデータを抽出します。
今回はitemCの抽出をしていきます。

loc_sample_data.loc["itemC"]

キャプチャ1.JPG

抽出できました。抽出されたデータはSeries型です。

インデックスラベルリストの指定

上の例は単一行のみの抽出ですが、複数行を指定/抽出することが可能です。複数指定する場合はリストで指定します。
今度はitemA、itemDの抽出をしていきます。

loc_sample_data.loc[["itemA", "itemD"]]

キャプチャ2.JPG

抽出できました。抽出されたデータはDataFrame型でした。

単一の行ラベル、列ラベルの指定

行と列のそれぞれのラベルを指定してデータを抽出することも可能です。今回は行→itemB、列→producing_areaを指定してデータ抽出します。

loc_sample_data.loc["itemB", "producing_area"]

キャプチャ3.JPG
抽出できました。抽出されたデータstr型です。今回の例では抽出されたデータstr型ですが、これはDataFrame内に格納されているデータの内容で変わります。

スライスを利用した行ラベル、列ラベルの指定

スライスを利用して行、列を複数指定することができます。これを利用してitemA、itemBのpriceを抽出します。

loc_sample_data.loc["itemA":"itemB","price"]

キャプチャ4.JPG

抽出できました。これ使うかな・・・?

真偽値リストを使ったデータ指定

抽出元のデータフレームと同じ長さ(行数)の真偽値リストを指定することで、Trueの行のみを抽出することができます。今回はitemBとitemDを抽出してみる。

loc_sample_data.loc[[False, True, False, True]]

キャプチャ5.JPG
抽出できました。これ単発だと使う機会なさそうですが、事前に各行ごとに抽出条件を満たすかどうかを判定し、リストを作成したら使い道がありそうですね。

条件式を利用したデータ指定

一番使いそうなやつですね。今回はpriceが500より大きいデータ(itemC、itemD)を抽出してみます。

loc_sample_data.loc[loc_sample_data["price"] > 500]

キャプチャ6.JPG

抽出できました。やっぱこれ単体だったら一番使いそう。

条件式を利用して特定列だけ抽出

さっきの条件式に加えて、特定の列を指定して抽出します。条件は先ほど同様ですが、今回はproducing_area列のみを抽出します。

loc_sample_data.loc[loc_sample_data["price"] > 500, ["producing_area"]]

キャプチャ7.JdPG.JPG

最後に

色々使い方ありますが、必ず身に付けた方が良いのは条件式を利用したデータ抽出ですかね。今回ちょっと長くて疲れたので終わりにします。それではまた次回の投稿でー!

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13