Pythonでこんな悩みはありませんか?
「Pandas DataFrameで行名、列名でデータを抽出したい、、しかしやり方がわからない」
「Pandas DataFrameで行番号、列番号でデータを抽出したい、、しかしやり方がわからない」
こんなお悩みを解決します。
結論をお話しするとpythonのloc、ilocを使用することで、データを抽出できます。
Pandas DataFrameで欲しい箇所のデータを抽出する作業は頻繁に実施しますので、本記事で使い方を覚えていきましょう❗️
locとilocの違い
locとilocの違いは下記のようになります。
iloc→行番号、列番号でデータを抽出
locは「名前」でデータを抽出し、ilocは「番号」でデータを抽出すると覚えておけばok。
違いがなんとなくわかったところで、まずは「loc」の使い方を解説します。
今回は下記のようなPandas DataFrame(以下df)を基に解説していきます。
locの使い方
locの使い方は下記のようになります。
df.loc[行名, 列名]
例えば、dfの行名「3行目」、列名「’Name’」のデータを抽出する場合は、下記のようなコードで実行できます。
df.loc[3, 'Name']
locはスライス「:」を使用して範囲指定して使用することが多い。
例えば2〜4行目、’Aged〜’height’までのデータを抽出する場合は、下記のようなコードで実行できます。
df.loc[2:4 , 'Age':'height']
このようにスライス「:」を使用することで範囲指定することができます。
よく使われる使い方ですので是非覚えておいてください。
続いてilocの使い方を解説します。
ilocの使い方
ilocの使い方は下記のようになります。
df.iloc[行番号, 列番号]
例えば、行番号「1」、列番号「0」のデータを抽出する場合は、下記のようなコードで実行できます。
df.iloc[1, 0]
ilocもスライス「:」を使用して範囲指定して使用することが多いです。
先ほどと同様に、1〜2行目、0列目から1列目までのデータを抽出する場合は、下記のようなコードで実行できます。
df.iloc[1:3, 0:2]
スライス「:」を使用して範囲指定してデータを抽出することは非常に多いですので是非試してみてください。
今回はPandas DataFrameでデータを指定して抽出する方法を解説しました。
少しでも皆さんのお役に立てれば幸いです。
また、下記記事にてPandasのメソッドの使い方をまとめていますので是非ご覧ください。