Dataframe ilocの使い方

ilocは、locのようにデータの取得や変更をするためのものです。行名・列名を使うlocと異なり、ilocは行番号・列番号を使います。まずは、行番号・列番号について学びます。

行番号や列番号は、0から始まる通し番号です。

これまでのクエストで学んだ行名、列名は自分で自由に設定できるのに対し、行番号や列番号は必ず決まった値になるため、設定するメソッドはありません。また、取得するメソッドもありません。

  • 行名は行についた名前です。行番号は(0から始まる)行の番号です。
  • 列名は列についた名前です。列番号は(0から始まる)列の番号です。
  • 行番号・列番号は必ず決まった値です。行名・列名と違って変更・取得はできません。
df.loc[行名または行名のリスト, 列名または列名のリスト]
df.iloc[行番号または行番号のリスト, 列番号または列番号のリスト]

※ 「:」もlocと同様に使えます。
※ locと同様に、「列番号または列番号のリスト」を省略できます。

演習

import pandas as pd
df = pd.DataFrame(
    [["Alice", 17], ["Bob", 24], ["Carol", 29]],
    index=[10, 20, 30],
    columns=["Name", "Age"],
)
df
NameAge
10Alice17
20Bob24
30Carol29

行名10の行は、df.loc[10]です。また、この行の行番号は0なので、df.iloc[0]で同じ出力結果になります。

print(df.loc[10])
print("----")
print(df.iloc[0])
Name    Alice
Age        17
Name: 10, dtype: object
----
Name    Alice
Age        17
Name: 10, dtype: object

列名Nameの列は、df.loc[:, “Name”] です。また、この列の列番号は0なので、df.iloc[:, 0]で同じ出力結果になります。

print(df.loc[:, "Name"])
print("----")
print(df.iloc[:, 0])
10    Alice
20      Bob
30    Carol
Name: Name, dtype: object
----
10    Alice
20      Bob
30    Carol
Name: Name, dtype: object

loc同様、ilocでも行番号のリスト・列番号のリストを使うことで、複数行・複数列にまたがる範囲指定ができます。次のlocilocを使ったコードは、どちらも同じ出力結果になります。

print(df.loc[[20, 30], ["Name", "Age"]])
print("----")
print(df.iloc[[1, 2], [0, 1]])
     Name  Age
20    Bob   24
30  Carol   29
----
     Name  Age
20    Bob   24
30  Carol   29

コメント

タイトルとURLをコピーしました