【Python図解】Pandas DataFrameでデータを指定して抽出する方法(loc,iloc)を解説!

Pythonでこんな悩みはありませんか?

「Pandas DataFrameで行名、列名でデータを抽出したい、、しかしやり方がわからない」
「Pandas DataFrameで行番号、列番号でデータを抽出したい、、しかしやり方がわからない」

こんなお悩みを解決します。
結論をお話しするとpythonのloc、ilocを使用することで、データを抽出できます。

Pandas DataFrameで欲しい箇所のデータを抽出する作業は頻繁に実施しますので、本記事で使い方を覚えていきましょう❗️

locとilocの違い

locとilocの違いは下記のようになります。

loc→行名(行ラベル)、列名(列ラベル)でデータを抽出
iloc→行番号、列番号でデータを抽出

locは「名前」でデータを抽出し、ilocは「番号」でデータを抽出すると覚えておけばok。

違いがなんとなくわかったところで、まずは「loc」の使い方を解説します。

今回は下記のようなPandas DataFrame(以下df)を基に解説していきます。

locの使い方

locの使い方は下記のようになります。

df.loc[行名, 列名]

例えば、dfの行名「3行目」、列名「’Name’」のデータを抽出する場合は、下記のようなコードで実行できます。

df.loc[3, 'Name']

<注意>pandas.DataFrameを作成するとき、行ラベル(行名)が指定されていない場合は、0からの連番が割り振られます。この場合は、行番号と行名(行ラベル)が同じになります。そのためlocを使って指定する際の行名が数字になっています。

locはスライス「:」を使用して範囲指定して使用することが多い

例えば2〜4行目、’Aged〜’height’までのデータを抽出する場合は、下記のようなコードで実行できます。

df.loc[2:4 , 'Age':'height']

このようにスライス「:」を使用することで範囲指定することができます。
よく使われる使い方ですので是非覚えておいてください。

続いてilocの使い方を解説します。

ilocの使い方

ilocの使い方は下記のようになります。

df.iloc[行番号, 列番号]

例えば、行番号「1」、列番号「0」のデータを抽出する場合は、下記のようなコードで実行できます。

df.iloc[1, 0]

<注意>行番号、列番号ともに0からスタートすることに注意してください。0,1,2,3・・・の順番です。

ilocもスライス「:」を使用して範囲指定して使用することが多いです。

先ほどと同様に、1〜2行目、0列目から1列目までのデータを抽出する場合は、下記のようなコードで実行できます。

df.iloc[1:3, 0:2]

スライス「:」を使用して範囲指定してデータを抽出することは非常に多いですので是非試してみてください。

今回はPandas DataFrameでデータを指定して抽出する方法を解説しました。
少しでも皆さんのお役に立てれば幸いです。

また、下記記事にてPandasのメソッドの使い方をまとめていますので是非ご覧ください。

【Python図解】Pandasのメソッド解説記事まとめ
今回の記事では、私がpython初学者だった時に感じた悩みを解決する記事を書いています。 「Pandasのメソッドの解説記事は多いが、全体像がわからない、、」 「Pandasのメソッドは非常に多く調べるのが大変なので、情報を集約して欲しい、...
タイトルとURLをコピーしました