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
Name | Age | |
---|---|---|
10 | Alice | 17 |
20 | Bob | 24 |
30 | Carol | 29 |
行名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
でも行番号のリスト・列番号のリストを使うことで、複数行・複数列にまたがる範囲指定ができます。次のloc
とiloc
を使ったコードは、どちらも同じ出力結果になります。
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
コメント