【Python】df.iloc[:, :8]はどういう意味?わかりやすく解説!

B!

 

Pandasで表形式のデータ(DataFrame)を扱っているとき、df.iloc[:, :8] というコードをよく見かけます(8はあくまで例の数字です。2や10とかいろいろな数字が入ります)

一見すると謎の記号のようですが、実はとても直感的な動きをしてくれる便利な構文です。

この記事では df.iloc[:, :8] の意味と使いどころを、初心者にもわかりやすく丁寧に解説します!

そもそも iloc とは?

iloc は 「pandasのDataFrameが持つインデクサ(indexer)」で、行番号・列番号などの“整数の位置”を使ってデータを取り出す機能です。

例えば df.iloc[0, 1] は「0行目1列目の値」を指します。

iloc は関数ではなく、[] を使って指定する特殊な構文なので、df.iloc[...] のように書いて使います。

[]の最初に行の指定、次に列の指定をします。

df.iloc[:, :8] はどういう意味か?

これは「行はすべて、列は左から8列目まで取得する」という意味です。

  • iloc→行番号や列番号でデータを抽出するためのインデックス指定機能
  • :→行をすべて選択
  • :8→列の左から「8列目の1つ前」までを選択(0〜7列目の計8列)

具体例で見てみよう

実際の具体的なコードと出力結果で確認してみましょう。

出力結果:

A B C D E F G H I
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4

ここで次のように指定します:

これは「すべての行」と「左から数えて8列目の“手前”までの列」を意味します。

つまり、A列(0番目)からH列(7番目)までが取り出されます。

要注意ポイント:列番号は0から始まる!

プログラミングではよくあることですが、最初の列は1ではなく「0」番目とカウントします。

実際の列 番号(インデックス)
A列 0
B列 1
C列 2
D列 3
E列 4
F列 5
G列 6
H列 7
I列 8

そのため、:8 と指定すると「0〜7番目の列」、すなわち A〜H列 になります。

この 「1列目=0列目」という感覚のズレが初心者にとって最初の関門ですが、しっかり覚えておくと、他のPython操作でも応用がきくので、少しずつ慣れておきましょう。

ilocのよくある応用パターン

左からN列だけ使いたい

特定の列範囲だけ抽出したい(例:3列目〜6列目)

行と列の範囲を同時に指定したい

注意:列名ではなく「列番号」で指定する点に注意!

iloc は「列番号」を指定する必要があります。

もし、列名で指定したい場合はdf.loc[:, 'A':'H'] のように「列名」で指定可能な loc を使います。

iloc と loc は紛らわしいですが、 ilocの「 i 」はindexの先頭の「 i 」と覚えておくと区別がつきやすくなるはずです。

まとめ

構文 意味
df.iloc[:, :8] 全行・左から8列目まで(A〜H列)を抽出
iloc 行番号・列番号ベースの抽出をするインデクサ

iloc はデータを前処理したり、特定の範囲だけを扱いたい時に非常に便利な書き方なので、使い方に慣れておきましょう!

最新の記事はこちらから