Python | Pandas | “iloc”と”loc”の利用方法

2024年1月8日

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など),数字を用いて行と列を選択することができる.

pandas | pandas.DataFrame.loc

参考: “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

pandas | pandas.DataFrame.loc

以上

Pythoniloc,loc,Pandas

Posted by クマガイ