06_select_iloc

iloc

  • iloc는 Index Key(Position) 기반의 인덱싱 방법이다.iloc은 Position(위치) 기반이므로 위치 정수(index key)를 기반으로 행과 열을 지정해야 합니다
  • 직관적으로 loc 보다 iloc가 쉬움. 행렬처럼 생각하면 됨
  • iloc docs를 보면 기본적으로는 라벨 인덱싱지만, boolean 배열이 함께 사용될 수 있다라고 정의되어 있다
  • row indexes, indexes label로 허용되는 인풋은 다음과 같다.
    • 1, 4, 5 와 같은 하나의 단일 인덱스 정수
    • [1,4]와 같은 인덱스 리스트나 배열
    • 1:4 와 같이 인덱스 표현되는 slice 객체(1:4는 [1,2,3,4]와 같은 의미임)
    • boolean 배열
In [1]:
import pandas as pd
import numpy as np

data = np.random.randn(3,4)
index = [2003,2004,2005]
columns = ['Arizona','Boston', 'Chicago','Detroit']
df = pd.DataFrame(data, index = index, columns = columns)

iloc 인풋으로 단일 인덱스나 인덱스의 리스트가 사용되는 경우

In [2]:
print(df.shape)         # 전체 행렬의 크기
df.iloc[:,:]            # 정부를 불러 오는 것은 loc와 같음
print(df.iloc[:,:])

df.iloc[1,1]
print(df.iloc[1,1])
df.iloc[1,3]
(3, 4)
       Arizona    Boston   Chicago   Detroit
2003 -1.170341  2.480056 -0.573056  0.458521
2004 -0.480204  0.340283 -0.714972 -1.002987
2005 -0.758137 -0.503516 -0.087674  1.901958
0.340282845686
Out[2]:
-1.0029874824372769
In [3]:
# index 정수를 사용하므로 for문을 사용할 수 있음
for i in range(3):
    print(i)
    print(df.iloc[1,i])
0
-0.480203716766
1
0.340282845686
2
-0.71497174101

iloc 인풋으로 라벨의 리스트가 입력 되는 경우

In [4]:
# loc인풋으로 라벨의 리스트가 입력 되는 경우
df.iloc[[1,2],[1,3]] 
print(df.iloc[[1,2],[1,3]])
df.iloc[:,[1,3]]
print(df.iloc[:,[1,3]] )
        Boston   Detroit
2004  0.340283 -1.002987
2005 -0.503516  1.901958
        Boston   Detroit
2003  2.480056  0.458521
2004  0.340283 -1.002987
2005 -0.503516  1.901958

loc 인풋으로 라벨의 slice 객체 입력되는 경우

In [5]:
df.iloc[1:3,:]  #2, 3행만의 데이터 열은 전부 
df.iloc[:,1:2]  # 행은 정부 열은 2열만
Out[5]:
Boston
20032.480056
20040.340283
2005-0.503516
In [6]:
df.iloc[:2,:2]  # 2 * 2 행렬
df.iloc[: -1,: -2]  #3 에서 1을 빼는 것.. 4에서 2를 빼는 것
Out[6]:
ArizonaBoston
2003-1.1703412.480056
2004-0.4802040.340283
In [7]:
# loc와 마찬가지로 loc도 index만 사용하고 컬럼을 생략할 수 있다. 

df.iloc[2]
print(df.iloc[2])
print('---array 적용---')
df.iloc[[1,2]]
print(df.iloc[[1,2]])
print('---slicing 적용--')
df.iloc[1:3]
print(df.iloc[1:3])
df[1:3]  #  slicing인 경우에는 iloc도 생략할 수 있음
Arizona   -0.758137
Boston    -0.503516
Chicago   -0.087674
Detroit    1.901958
Name: 2005, dtype: float64
---array 적용---
       Arizona    Boston   Chicago   Detroit
2004 -0.480204  0.340283 -0.714972 -1.002987
2005 -0.758137 -0.503516 -0.087674  1.901958
---slicing 적용--
       Arizona    Boston   Chicago   Detroit
2004 -0.480204  0.340283 -0.714972 -1.002987
2005 -0.758137 -0.503516 -0.087674  1.901958
Out[7]:
ArizonaBostonChicagoDetroit
2004-0.4802040.340283-0.714972-1.002987
2005-0.758137-0.503516-0.0876741.901958


© 2017. All rights reserved.

Powered by ZooFighter v0.12