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[...]
のように書いて使います。
1 |
df.iloc[行, 列]</code><code inline=""> |
df.iloc[:, :8]
はどういう意味か?
これは「行はすべて、列は左から8列目まで取得する」という意味です。
iloc
→行番号や列番号でデータを抽出するためのインデックス指定機能:
→行をすべて選択:8
→列の左から「8列目の1つ前」までを選択(0〜7列目の計8列)
具体例で見てみよう
実際の具体的なコードと出力結果で確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import pandas as pd # サンプルのデータフレームを作成 df = pd.DataFrame({ 'A': range(5), 'B': range(5), 'C': range(5), 'D': range(5), 'E': range(5), 'F': range(5), 'G': range(5), 'H': range(5), 'I': range(5) }) # 表示(9列) print(df) |
出力結果:
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 |
ここで次のように指定します:
1 2 |
df.iloc[:, :8] |
これは「すべての行」と「左から数えて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列だけ使いたい
1 |
df.iloc[:, :5] # → A〜E列までを使う |
特定の列範囲だけ抽出したい(例:3列目〜6列目)
1 |
df.iloc[:, 3:7] # → D〜G列 |
行と列の範囲を同時に指定したい
1 2 |
df.iloc[1:4, :4] # → 2〜4行目 × A〜D列のデータ |
注意:列名ではなく「列番号」で指定する点に注意!
iloc
は「列番号」を指定する必要があります。
もし、列名で指定したい場合はdf.loc[:, 'A':'H']
のように「列名」で指定可能な loc
を使います。
iloc と loc は紛らわしいですが、 ilocの「 i 」はindexの先頭の「 i 」と覚えておくと区別がつきやすくなるはずです。
まとめ
構文 | 意味 |
---|---|
df.iloc[:, :8] |
全行・左から8列目まで(A〜H列)を抽出 |
iloc |
行番号・列番号ベースの抽出をするインデクサ |
iloc
はデータを前処理したり、特定の範囲だけを扱いたい時に非常に便利な書き方なので、使い方に慣れておきましょう!