【Python】Pandas loc と ilocの違いとは? 初心者向けにわかりやすく解説

locとiloc

Pandasのlocとilocは値を抽出するためのメソッドです。
まずはサンプルとなるデータフレームを作成します。

import pandas as pd
df = pd.DataFrame([[10, 20], [25, 50]], index=["1行", "2行"], columns=["1列", "2列"])

loc

まずは、locの動作から確認してみましょう。
locは行名もしくは列名を指定することで特定の値を抽出できます。行名や列名をラベルと置き換えて頂いても問題ありません。
1列目と2列目を抽出してみましょう。

pirnt(df.loc["1行", :])

上記を実行すると次のように出力されます。

1列    10
2列    20
Name: 1行, dtype: int64

他にも次のように書くこともできます。

print(df.loc[: , ["1列", "2列"]])

上記を実行すると次のように出力されます。

    1列  2列
1行  10  20
2行  25  50

存在しない列にアクセスするとNaNになります。

print(df.loc[: , ["1列", "5列"]])

上記を実行すると次のように出力されます。

    1列  5列
1行  10 NaN
2行  25 NaN

iloc

次にilocの動作を見ていきましょう。
ilocはindexを指定することで特定の値を抽出できます。つまり、行、列を番号(数字が0のインデックス)で指定します。

# df.iloc[行, 列]
print(df.iloc[1:2])# index指定が可能

上記を実行すると次のように出力されます。

    1列  2列
2行  25  50

また、ilocはスライス表記を用いることが出来るため次のように記述することも可能です。

print(df.iloc[:, -1])  # 負のインデックスを使い、末尾の要素から位置指定し2列目の全ての行を取得。
1行    20
2行    50
Name: 2列, dtype: int64

関連:DataFrameの[]と[[]]に関して カラム取得方法を理解しよう!

おわりに

この記事ではpandasnのloc と iloc の違いを学びました。
まとめると、locは行名(インデックスラベル)もしくは列名(カラムラベル)を指定し、ilocは行や列の番号(インデックス)を指定するということでした。

データ分析や統計学を効率的に学ぶには…

データ分析や統計学を独学で学ぶのは大変かと思います。独学での学習が大変だと少しでも感じられました方は、オンラインプログラムを利用を是非ご検討ください。

AI Academy Bootcampでは6ヶ月データサイエンティストや機械学習エンジニアに質問し放題かつ、体系的に学べる動画コンテンツや450種類以上のテキストコンテンツで学べて35,000(税込)で受講出来ます。

是非サービスを活用し、効率よく、統計学や機械学習を身につけてみてください。