ホームページ >バックエンド開発 >Python チュートリアル >データ選択におけるパンダの「loc」と「iloc」の違いは何ですか?

データ選択におけるパンダの「loc」と「iloc」の違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 03:10:10154ブラウズ

What's the Difference Between Pandas `loc` and `iloc` for Data Selection?

Pandas における iloc と loc の違い:

Pandas を使用したデータ操作では、iloc と loc はよく使用される 2 つのスライス方法であり、混乱を引き起こすことがよくあります。効率的なデータ管理には、それらの根本的な違いを理解することが不可欠です。

ラベルと場所

loc と iloc の主な違いは、データの選択方法にあります。

  • loc: に基づいてデータにアクセスします。 ラベル (行名または列名 (インデックスおよび列ラベル) など)。
  • iloc: オブジェクト内の 整数の位置 に基づいてデータにアクセスします。軸(行/列)

例:

文字を含む非単調インデックスを持つ DataFrame df を考えます:

import pandas as pd

df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd', 'e', 'f']}, index=[49, 48, 47, 0, 1, 2])

loc (ラベルベース) Slicing):

  • df.loc[0]: インデックス ラベル "0" ('d') を持つ行を取得します。
  • df.loc[0:1] ]: ラベル 0 と 1 (「d」と'e').

iloc (位置ベースのスライス):

  • df.iloc[0]: インデックス位置の値を取得します0 ('a').
  • df.iloc[0:1]: インデックス位置で 1 つの行を選択します0 ('a').

主な違い:

次の表は、さまざまなシナリオにおける loc と iloc の違いを示しています:

Object Description loc iloc
0 Single item Value at index label 0 ('d') Value at index location 0 ('a')
0:1 Slice Two rows (labels 0 and 1) One row (first row at location 0)
1:47 Slice with out-of-bounds end Zero rows (empty Series) Five rows (location 1 onwards)
1:47:-1 Slice with negative step Three rows (labels 1 back to 47) Zero rows (empty Series)
[2, 0] Integer list Two rows with given labels Two rows with given locations
s > 'e' Boolean series (indicating true values) One row (containing 'f') NotImplementedError
(s>'e').values Boolean array One row (containing 'f') Same as loc
999 Integer object not in index KeyError IndexError (out of bounds)
-1 Integer object not in index KeyError Returns last value in s
lambda x: x.index[3] Callable applied to series (here returning 3rd item in index) s.loc[s.index[3]] s.iloc[s.index[3]]

以上がデータ選択におけるパンダの「loc」と「iloc」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。