코드
# 데이터 2개로 분리
df1 = df.iloc[:30,] # 0~30행 데이터
df2 = df.iloc[31:60,] # 31~60행 데이터
print(df1.shape, df2.shape)
- 원했던 출력
(31, 5) (30, 5)
- 나온 출력
다음과 같은 코드에서 슬라이싱이 제대로 되지 않는 문제가 발생했다.(30, 12) (1, 12)
내가 원래 알고 있던 내용은 아래와 같았다.
iloc vs loc
- iloc (Index Location)
- 숫자 기반 인덱싱
- 슬라이싱 시 여느 파이썬 코드처럼 start는 포함, end는 제외
- loc (Label Location)
- 라벨 기반 슬라이싱 (라벨 명칭 기반)
- 슬라이싱 시 start, end 모두 포함
검색과 다른 코드에 적용하며 원래 알고 있던 내용이 맞다는 것을 확인했다.
그럼 왜 df2에서 하나의 행만 슬라이싱이 된걸까?
다른 숫자로도 실험해봤는데, 무조건 행이 1로만 나왔다.
여러 시행착오를 반복하다가, 마지막으로 데이터의 크기를 확인해보았다.
다시 df.info()를 찍어보니, 데이터가 32개 밖에 없었다.
데이터프레임의 행이 iloc문의 end인 60개보다 적었기 때문에 iloc[31:60]의 범위가 유효하지 않았고,
이로 인해 특정 행만 남아 (1, 12)처럼 표시된 것이었다.
| 데이터 프레임의 형태를 잘 확인하자!!!
초기에 한번만 확인했는데, 수시로 확인해야겠다고 깨닫게 된 계기가 되었다.
'DATA' 카테고리의 다른 글
AARRR 퍼널이 뭐예요? (0) | 2024.05.18 |
---|---|
ICE 스코어가 뭐예요? ICE score, 그로스 프레임워크 (0) | 2024.05.18 |
디지털 마케팅에 그로스 마케팅이 필요한 이유 (0) | 2024.05.18 |
그로스 마케팅이란? 등장배경, 개념 (0) | 2024.05.18 |
디지털 마케팅이란? 디지털 마케팅의 특징, 종류, 강점 (0) | 2024.05.18 |