Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】Pandasのiloc[]で行を抽出する方法をわかりやすく解説

Pandasは、Pythonにおけるデータ処理やデータ分析で広く利用されている代表的なライブラリです。本記事では、DataFrameから行や列をフィルタリングして必要なデータだけを読み出すことができる .iloc メソッドの使い方について、具体例を交えながら詳しく解説します。

ilocメソッドとは

iloc メソッドは、整数ベースのインデックス(位置指定)によってデータを処理します。このインデックスは、元のデータセットに含まれている場合もあれば、そうでない場合もあります。行については先頭行がインデックス0、次の行が1というように割り当てられます。同様に、列も先頭列がインデックス0、次が1となります。

使用するデータセット

今回の解説では、以下のアヤメ(Iris)データセットを使用します。

Id                SepalLengthCm ...    PetalLengthCm    PetalWidthCm
Iris-setosa-1             5.1 ...              1.4          0.2
Iris-setosa-2             4.9 ...              1.4          0.2
Iris-setosa-3             4.7 ...              1.3          0.2

単一の行を選択する

iloc を使えば、インデックスとなる整数を指定するだけで、単一の行も複数の行も自由に選択できます。以下の例では、行番号0と行番号1のデータをそれぞれ個別に取得しています。

コード例

import pandas as pd

# CSVファイルからデータフレームを作成
data = pd.read_csv("D:\\Iris_readings.csv")

row0 = data.iloc[0]
row1 = data.iloc[1]
print(row0)
print(row1)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

Id            Iris-setosa-1
SepalLengthCm           5.1
SepalWidthCm            3.5
PetalLengthCm           1.4
PetalWidthCm            0.2
Name: 0, dtype: object

Id            Iris-setosa-2
SepalLengthCm           4.9
SepalWidthCm              3
PetalLengthCm           1.4
PetalWidthCm            0.2
Name: 1, dtype: object

複数の行をまとめて選択する

スライス表記を使うことで、必要な範囲の行を一度にまとめて抽出することも可能です。以下の例では、行番号4〜7までの複数行を一括して取得しています。なお、スライスの場合は終了位置のインデックス自体は含まれない点に注意してください。

コード例

import pandas as pd

# CSVファイルからデータフレームを作成
data = pd.read_csv("D:\\Iris_readings.csv")

rows = data.iloc[4:8]
print(rows)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

   Id                 SepalLengthCm  SepalWidthCm  PetalLengthCm  PetalWidthCm
4   Iris-setosa-5               5.0           3.6            1.4           0.2
5   Iris-versicolor-51          7.0           3.2            4.7           1.4
6   Iris-versicolor-52          6.4           3.2            4.5           1.5
7   Iris-versicolor-53          6.9           3.1            4.9           1.5

行と列を同時に選択する

iloc の強力なポイントは、行と列を同時に指定できることです。「行の範囲, 列の範囲」の形式でカンマ区切りで指定するだけで、必要な部分だけを柔軟に切り出せます。

コード例

import pandas as pd

# CSVファイルからデータフレームを作成
data = pd.read_csv("D:\\Iris_readings.csv")

rows_columns = data.iloc[4:8, 0:2]
print(rows_columns)

実行結果

上記のコードを実行すると、行番号4〜7かつ列番号0〜1(Id列とSepalLengthCm列)のデータのみが出力されます。

   Id                 SepalLengthCm
4   Iris-setosa-5               5.0
5   Iris-versicolor-51          7.0
6   Iris-versicolor-52          6.4
7   Iris-versicolor-53          6.9

まとめ

Pandasの .iloc[] を使えば、整数ベースのインデックス指定だけで、単一行・複数行・特定の行列範囲など、DataFrameからあらゆる形でデータを抽出できます。ラベル名ではなく位置でアクセスしたい場面で非常に便利なので、ぜひ使いこなせるようにしておきましょう。

  1. Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説

    Pythonによるデータ分析と可視化の概要 Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。 pandasのインストール方法 pandasをインストールするには、ターミナル

  2. Pythonのbase64モジュールを使ったデータエンコード・デコード入門

    PythonにおけるBase64エンコーディングとはPython標準ライブラリのbase64モジュールは、バイナリデータをプレーンテキスト(ASCII)プロトコルで安全に送信できる形式へ変換するための機能を提供します。メール送信、URLへの埋め込み、HTTP POSTリクエストなど、テキストベースの通信経路でバイナリデータを扱いたい場面で活躍するモジュールです。このモジュールが実装しているのは、RFC 3548で定義されたBase16、Base32、Base64の各アルゴリズム、および事実上の標準となっているAscii85とBase85のエンコーディングです。RFC 3548準拠のエンコーディ