loc인덱싱은 판다스에서 데이터프레임을 인덱싱과 슬라이싱하는 방법입니다
파이썬의 리스트에서 list[0] 혹은 list[1:5] 와 같이 인덱싱과 슬라이싱을 하는데
마찬가지로 데이터프레임도 인덱싱과 슬라이싱을 할수 있는겁니다
loc 인덱싱은 레이블로 인덱싱을 했는데
데이터 프레임도 리스트처럼 위치(인덱스의 숫자)로 인덱싱을 할수있는데 그게 바로 iloc인덱싱입니다
먼저 데이터프레임의 위치를 넘버링 하는 방식은 다음과 같습니다
행은 위에서부터 0부터 넘버링이 되고 열은 왼쪽열부터 0부터 넘버링이 됩니다
데이터프레임은 2차원이기때문에 인덱싱할때
[ , ] 대괄호안에 콤마로 구분해서 각각의 차원의 인덱싱을 2차원 평면의 (x, y) 좌표처럼 설정합니다
df.iloc[행위치(숫자), 열위치(숫자)]
loc 인덱싱은 대상이 단수면 "숫자1"로 가능하고 복수면 ["숫자1", "숫자2",..,"숫자n] 같은 리스트 형식으로 가능합니다
슬라이싱은 "시작위치(숫자)": "끝위치(숫자)" 로 가능하며 시작위치의 경계만 포함되고 끝위치는 포함되지 않습니다
그 점은 리스트와 동일합니다
예시를 보시면 이해가 더욱 편하실겁니다
예
import pandas as pd
df = pd.DataFrame([[81, 94, 79, 80],[71, 62, 77, 78],[71, 75, 95, 99]],
index=['송중기', '김나현', '박효신'],
columns=['국어', '수학', "영어", "과학"])
이 df를 아래의 iloc 인덱싱 결과와 비교해보면 됩니다
1. 송중기 행을 인덱싱
df.iloc[0]
[ , ] 없이 하나만 입력하면 디폴트는 행의 인덱싱입니다 행의 위치가 0인 즉 가장 첫행이 시리즈로 출력된겁니다
그림으로 표현하면 아래와 같습니다
시리즈는 축이 없기때문에 모든 시리즈는 세로 방향으로 세워졌습니다.
다만 보기에만 그런거지 시리즈는 열이든 행이든 모두 될수있습니다
df의 columns가 df.iloc[0] 에서는 index가 됩니다.
df.iloc[0]은 시리즈라서 columns는 없습니다
2. 송중기와 박효신의 복수의 행을 인덱싱
df.iloc[[0,2]]
행을 송중기와 박효신의 복수로 인덱싱한것입니다.
그래서 결과도 데이터프레임이 되었네요
데이터프레임은 리스트와 달리 복수의 인덱싱을 동시에 할수있는데 복수의 인덱싱은 리스트 형식으로 넣어야합니다.
고로 대괄호 안에 다시 대괄호가 들어가는 구조가 됩니다
3. 행과 열 모두 인덱싱
df.iloc[0, 0]
81
행과 열을 모두 인덱싱 하였습니다 고로 해당 값만 나오게됩니다
4. 행은 슬라이싱 열은 인덱싱
df.iloc[0:2, 0]
행을 슬라이싱 열은 인덱싱을 했습니다. 그래서 결과는 시리즈
그림으로 표현하면 아래와 같습니다
5. 행, 열 모두 슬라이싱
df.iloc[0:2, 0:3]
결과는 행은 송중기에서 김나현까지, 열은 국어에서 영어까지 잘려진데이터프레임입니다
관련 공식문서
iloc 관련 강의
'판다스 > 함수 cheat sheet' 카테고리의 다른 글
[pandas] sort_values (0) | 2022.12.30 |
---|---|
[pandas] merge_asof (0) | 2022.12.29 |
[pandas] merge (0) | 2022.12.29 |
[pandas] read_excel (0) | 2022.12.29 |
[pandas] #01 loc 인덱싱 (0) | 2022.02.17 |