Python | Pandas | “iloc”と”loc”の利用方法
Pythonとは,高レベルの汎用プログラミング言語であり,読みやすさとシンプルさで知られている.Web開発やデータサイエンス,人口知能,機械学習など幅広く利用されている.なお,レベルの高低はハードウェアに近いかどうかを意味しており,レベルが低いとハードウェアに近いことを意味している.
Pandasとは,Python向けに人気のあるオープンソースのデータ操作および分析ライブラリーである.異なるフォーマットでの読み書きするツールに加えて,効率的にデータ保存および大規模なデータセットを操作するためのデータ構造を提供する.
Pandasには,2つの"class"である一次元データを利用する"Series"と二次元データを利用する"DataFrame"がある."iloc"と"loc"はこれらのデータを索引したり,選択するのに利用される.
実施環境
各バージョンの確認方法はこちら
OS: Windows11
VS Code: 1.85.1
Python 3.12.0
Pandas 2.1.4
Numpy 1.26.2
“iloc"の利用
“iloc"は,位置選択のindex(索引)をベースとしたinteger-locationである.そのため,例えば二次元データである"DataFrame"の場合,数字を用いて行と列を選択することができる.
pandas | pandas.DataFrame.iloc
参考: “DataFrame"おけるデータ出力
通常のデータ出力との違いを比較するため,"df"に格納したすべてのデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
print(df)
■実行結果
※0行目が最初の行になることに注意する.
A B C
0 1 5 X
1 2 6 Y
2 3 7 Z
3 4 8 W
選択した行とすべての列のデータを出力
通常版
“df.iloc[1:3, :]"により,1~2行目のすべての列を出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting rows by index
selected_rows = df.iloc[1:3, :] # Selects rows with index 1 and 2
print("Selected Rows:")
print(selected_rows)
■実行結果
Selected Rows:
A B C
1 2 6 Y
2 3 7 Z
列の省略版
“df.iloc[1:3]"により,1~2行目のすべての列を出力させる.列は省略することができる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting rows by index
selected_rows = df.iloc[1:3] # Selects rows with index 1 and 2
print("Selected Rows:")
print(selected_rows)
■実行結果
Selected Rows:
A B C
1 2 6 Y
2 3 7 Z
選択した行と列のデータを出力
“df.iloc[1:3, 0:2]"により,1~2行目の0~1列のデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting specific rows and columns by index
subset1 = df.iloc[1:3, 0:2] # Selects rows 1 and 2, columns 0 and 1
print("Selected Subset1:")
print(subset1)
■実行結果
Selected Subset1:
A B
1 2 6
2 3 7
“loc"の利用
“loc"は,label-based indexである.そのため,例えば二次元データである"DataFrame"の場合,ラベルやBoolean Array(ブーリアン配列: False, Trueなど),数字を用いて行と列を選択することができる.
参考: “DataFrame"おけるデータ出力
通常のデータ出力との違いを比較するため,"df"に格納したすべてのデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
print(df)
■実行結果
※0行目が最初の行になることに注意する.
A B C
0 1 5 X
1 2 6 Y
2 3 7 Z
3 4 8 W
選択した行とすべての列のデータを出力
通常版
“df.loc[0:1, :]"により,0~1行目のすべての列を出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting rows by index
selected_rows1 = df.loc[0:1, :] # Selects rows with index 0 and 1
print("Selected Rows1:")
print(selected_rows1)
■実行結果
Selected Rows1:
A B C
0 1 5 X
1 2 6 Y
列の省略版
“df.loc[0:1]"により,0~1行目のすべての列を出力させる.列は省略することができる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting rows by index
selected_rows2 = df.loc[0:1] # Selects rows with index 0 and 1
print("Selected Rows2:")
print(selected_rows2)
■実行結果
Selected Rows2:
A B C
0 1 5 X
1 2 6 Y
選択した行と列のデータを出力
“df.loc[1:3, 'A’:’B’]"により,1~2行目の0~1列のデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
# Selecting specific rows and columns by index
subset1 = df.loc[1:3, 'B':'C'] # Selects rows 1 and 2, columns 'B' and 'C'
print("Selected Subset1:")
print(subset1)
■実行結果
Selected Subset1:
B C
1 6 Y
2 7 Z
3 8 W
特定列のデータで,数字が"x"以上のデータを出力
“df.loc[df['A’] >= 3]"により,"A"列において3以上のデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
subset3 = df.loc[df['A'] >= 3]
print("Subset3, at or more than 3:")
print(subset3)
■実行結果
Subset3, at or more than 3:
A B C
2 3 7 Z
3 4 8 W
複数の特定列のデータで,数字が"x"以上のデータを出力
“df.loc[(df['A’] >= 2) & (df['B’] > 7)]"により,"A"列が2以上かつ"B"列が7超のデータを出力させる.
Pyファイルに以下を入力し,実行する.
import pandas as pd
# Example DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': ['X', 'Y', 'Z', 'W']})
subset4 = df.loc[(df['A'] >= 2) & (df['B'] > 7)]
rint("Subset4, at or more than 2 in A and more than 6 in B:")
print(subset4)
■実行結果
Subset4, at or more than 2 in A and more than 6 in B:
A B C
3 4 8 W
参照
pandas | pandas.DataFrame.iloc
以上