パンダのLOCとILOC:パンダのLOCとILOCの違い

公開: 2020-08-01

目次

パンダのLocとiloc

新しいPython開発者の間で混乱する一般的な原因は、locとilocです。 それらは両方とも非常に類似しているように見え、類似したタスクを実行します。 したがって、これはすべての学生を困惑させる可能性があります。

ilocとlocの違いを知りたい場合は、適切な場所に来ました。この記事では、このトピックについて詳しく説明します。 これらの機能の主な違いを見つけて、概念をよりよく理解するためにそれらが実際に動作していることを確認します。 パンダの詳細については、データサイエンスコースをご覧ください。

始めましょう。

locとilocの違い

1.Pythonのiloc

Pythonでilocを使用して選択できます。 これは整数位置ベースであり、位置で選択するのに役立ちます。 したがって、インデックス5の行を検索する場合、ilocは、名前やラベルに関係なく、データフレームの5番目の行を表示します。

Pythonでのilocの例を次に示します。

>>> mydict = [{'a':1、'b':2、'c':3、'd':4}、

…{'a':100、'b':200、'c':300、'd':400}、

…{'a':1000、'b':2000、'c':3000、'd':4000}]

>>> df = pd.DataFrame(mydict)

>>> df

あいうえお

0 1 2 3 4

1100200300400

2 1000 2000 3000 4000

上記のデータフレームにiloc関数を使用して、スカラー整数で行にインデックスを付けます。

>>> type(df.iloc [0])

<クラス'pandas.core.series.Series'>

>>> df.iloc [0]

a 1

b 2

c 3

d 4

名前:0、dtype:int64

2.パンダの場所

パンダでlocを使用すると、ラベルを使用して複数の行と列にアクセスできます。 ただし、ブール配列でも使用できます。

locを使用してインデックス5の行を検索した場合、5番目の行は取得されません。 代わりに、「5」という名前の行のみが取得されます。

パンダのlocの例を次に示します。

>>> df = pd.DataFrame([[1、2]、[4、5]、[7、8]]、

…index=['cobra'、'viper'、'sidewinder']、

…columns=['max_speed'、'shield'])

>>> df

max_speedシールド

コブラ12

バイパー45

サイドワインダー78

上記は、行を抽出するテーブルです。

>>> df.loc ['viper']

max_speed 4

シールド5

名前:viper、dtype:int64

locとilocの詳細な例

これらの関数の両方を選択に使用しますが、それらの違いを理解するために詳細な例について説明するのが最善です。

この例では、kaggleで利用できる電話会社の顧客データセットを使用します。 これをデータフレームに追加します。

df = pd.read_csv(“ Projects / churn_prediction / Telco-Customer-Churn.csv”)

df.head()

ID 性別シニアシチズン相棒扶養家族在職期間電話MultipleLines インターネット安全
0 7590-VHVEG 女性0 はい番号1 番号電話なしDSL 番号
1 5575-GNVDE 0 番号番号34 はい番号DSL はい
2 3668-QPYBK 0 番号番号2 はい番号DSL はい

このデータセットには21列あります。 デモンストレーションの目的でいくつかだけ示しました。 すでに説明したように、locを使用してラベルでデータを選択します。 ここで、列の名前は、性別、在職期間、OnlineSecurityなどの列ラベルです。 それらはすべて列名であり、ラベルでもあります。

特定のインデックスを割り当てていないため、パンダはデフォルトで行の整数インデックスを作成します。 行ラベルは整数で、0から始まり上に向かっていきます。 この例では、locとilocの動作がどのように異なるかを確認します。

  • 行「1」と列「パートナー」を選択します

df.loc [1、'パートナー']

出力:'いいえ'

これは、行「1」の「パートナー」列に存在する値を示しています。

  • 行ラベル「4」と列「customerID」および「gender」を選択します

df.loc [:4、['customerID'、'gender']]

顧客ID

性別

0

7590-VHVEG

女性

1

5575-GNVDE

2

3668-QPYBK

3

7795-CFOCW

4

9237-HQITU

女性

  • 行ラベル「1」、「2」、「3」、および「依存関係」列を選択します

df.loc [[1,2,3]、'扶養家族']

1いいえ

2いいえ

3いいえ

名前:扶養家族、dtype:オブジェクト

今回は、データフレームをフィルタリングし、ilocまたはlocを適用します。

  • パートナーを持つ顧客の「10」列と「PhoneService」列および「InternetService」列の行ラベルを選択します(パートナーは「yes」である必要があります)

df [df.Partner =='はい']。loc:10、['PhoneService'、'InternetService']]

上記の場合、データベースにフィルターを適用しましたが、インデックスを変更しなかったため、出力では、フィルターに必要な行の複数のラベルが省略されていました。 そこで、ここでloc [:10]を使用して、「10」までのラベルを持つ行を選択しました。

一方、ここでilocを使用してフィルターを適用すると、ラベルに関係なく、ilocが位置によって選択するときに10行が取得されます。 iloc [:10]を適用した場合の結果は次のとおりです。

df [df.Partner =='はい']。iloc[:10、[6,8]]

PhoneService インターネットサービス
0 番号DSL
8 はい光ファイバー
10 はいDSL
12 はい光ファイバー
15 はい光ファイバー
18 はいDSL
21 はい番号
23 はいDSL
24 はいDSL
26 はい光ファイバー

列を選択するには、メソッドを変更する必要があることに注意してください。

読む: Pythonパンダチュートリアル

  • ilocで最初の5列と最初の5行を選択します

df.iloc [:4、:4]

顧客ID 性別高齢者相棒
0 7590-VHVEG 女性0 はい
1 5575-GNVDE 0 番号
2 3668-QPYBK 0 番号
3 7795-CFOCW 0 番号

ilocを使用して、最後から位置を選択できます。 そのためには、負の整数(-1、-2など)を使用して、それらから始める必要があります。

  • 最後の5列と最後の5行を選択します

df.iloc [-5:、-5:]

PaperlessBilling 支払方法月額料金総料金チャーン
7038 はい郵送小切手84.80 1990.5 番号
7039 はいクレジットカード103.20 7362.9 番号
7040 はい電子小切手29.60 346.45 番号
7041 はい郵送小切手74.40 306.6 はい
7042 はい銀行振込105.65 6844.5 番号

ilocでもラムダ関数を使用できます。 (ラムダ関数はPythonの小さな無名関数であり、単一の式を使用できますが、引数はいくつでも使用できます)

  • 15行目までの3行ごとに選択し、「インターネットサービス」列と「パートナー」列のみを表示します

df.iloc [lambda x:(x.index x 3 == 0)&(x.index <= 150] ['Partner'、'InternetService']]

相棒インターネットサービス
0 はいDSL
3 番号DSL
6 番号光ファイバー
9 番号DSL
12 はい光ファイバー
15 はい光ファイバー

間にあるラベルや位置を選択することもできます。

  • 4〜6の列の位置、および20〜25の行の位置を選択します

df.iloc [20:25、4:6]

扶養家族在職期間
20 番号1
21 番号12
22 番号1
23 番号58
24 番号49

これで、ラベルをilocに渡そうとすると、Pandasは次のエラーメッセージを表示します。

ValueError:ロケーションベースのインデックス作成は、[整数、整数スライス(STARTポイントはINCLUDED、ENDポイントはEXCLUDED)、整数のリストライク、ブール配列]タイプのみを持つことができます

位置をlocに渡すと、同様のエラーが発生します。

また読む:パンダのインタビューの質問

Pythonの詳細

生徒は質問をし、答えを見つける必要があります。 この記事がPandasのloc(またはPythonのiloc)に関する質問に答えてくれることを願っています。 これらの関数をさまざまなデータセットで自分で試して、それらがどのように機能するかを理解するのが最善です。

Python、Pandas、および関連トピックについて詳しく知りたい場合は、ブログにアクセスしてください。 私たちの専門家はそこに複数の詳細なリソースを追加します。

データサイエンスについて知りたい場合は、IIIT-B&upGradのデータサイエンスのエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップを提供します。1業界のメンターとの1対1、400時間以上の学習、トップ企業との仕事の支援。

Pandas DataFrameの行を追加するにはどうすればよいですか?

DataFrameに行を挿入するには、loc、iloc、およびixコマンドを使用できます。

1. locは、主にインデックスのラベルに使用されます。 loc 4に挿入すると、インデックスが4のDataFrameエントリを探していることを示していると理解できます。
2. ilocは主に、インデックス内の場所を見つけるために使用されます。 これは、iloc 4に挿入する場合と同じです。これは、インデックス4に存在するDataFrameエントリを検索していることを示します。
3.インデックスが整数ベースの場合、ラベルをixに渡すため、ixの場合は複雑です。 ix 4は、インデックスが4の値をDataFrameで検索していることを示しています。

PythonのPandasのコンテキストでのインデックスの再作成とは何ですか?

DataFrameの行と列のラベルは、インデックスを再作成すると変更されます。 「インデックスの再作成」という用語は、単一の軸に沿ってデータを特定のラベルのセットに揃えるプロセスを指します。 Pandasでは、インデックスの再作成を使用して、DataFrameの行と列のインデックスを変更できます。 多くのpandasシリーズまたはpandasDataFrameに接続された多くのインデックスデータ構造をインデックスで利用できます。

パンダのデータ操作にはどのようなものがありますか?

PandasのDataFrameには、次のようないくつかの重要なデータ操作があります。

1.行と列の選択-行と列の名前を渡すことにより、DataFrame内の任意の行と列を選択できます。 これは1次元になり、DataFrameから選択するとシリーズと見なされます。
2.データフィルタリング-DataFrameでブール式の一部を使用することにより、データをフィルタリングできます。
3. Null値-アイテムにデータが指定されていない場合、アイテムはNull値を受け取ります。 一般にNaNとして表される、異なる列に値を含めることはできません。