ランドML

機械学習とかの備忘録

【Pandas】データ抽出(at, iat, iloc, loc, 条件指定)

使用データ

以下の例では次のDataFrameを使用しています。

import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 
    index=["Zero", "One", "Two"], 
    columns=["X", "Y", "Z"])

使用するデータ

iat(index・column番号から)

  • dataFrame.iat[index番号, columns番号]によりアクセスする。
  • 負の数-nを指定すると、末尾からn番目の要素を取り出す。 iat
コード 取得できる値
df.iat[2, 0] 7
df.iat[2, -1] 9
df.iat[-2, 1] 5

at(index・column名から)

dataFrame.at[index名, columns名] によりアクセスする。

at

コード 取得できる値
df.at['One', 'X'] 4
df.at['Two', 'Z'] 9

iloc(番号による範囲取得)

  • dataFrame.iloc[n]とすることで、n番目のindexのみを取得することができる。
  • ilocにおいても、iatと同じように負の数を指定することが可能。
  • 「m:n」とすることで、m ~ n-1番目のみを取得することができる。n番目は含まれない点に注意。

iloc

loc(文字列による範囲取得)

locも基本的な考え方は、ilocと同様である。

  • dataFrame.loc[:, 'A']
  • dataFrame['A']
  • dataFrame.A

3は短く記述できるが、index名にスペースなどの特殊文字を含む場合は使用できない。個人的には2がオススメ。

loc

条件を満たす行 or 列のみ取得

  • dataFrame[条件式]とすることで、条件式を満たすindexのみを取得。
  • dataFrame.loc[条件式]とすることでも、同様の処理が可能。
  • 条件を複数指定でき、各条件を括弧で括った上で、andの場合は「&」、orの場合は「|」で条件を列挙する。
  • また、dataFrame.loc[条件式, column名]とすることで、条件を満たすcolumnsのみを抽出することも可能。