👩💼 DataFrame 인덱싱

- 인덱싱
- DataFrame에서 원하는 부분을 선택하는 방법
- DataFrame에서 값 하나 받아오기
loc [row, column]
- 없는 인덱스를 찾으면 에러가 난다
iphone_df.loc['iPhone 8', '메모리']
iphone_df.loc['iPhone 8', '가격']
'2GB'
에러
- row 한 줄 통째로 받아오기
:
: 처음부터 끝까지 다 받아온다
- column 부분 생략
- Series: Pandas의 1차원 자료형
iphone_df.loc['iPhone X', :]
iphone_df.loc['iPhone X']
type(iphone_df.loc['iPhone X'])

pandas.core.series.Series
iphone_df.loc[:, 출시일]
iphone_df['출시일']
type(iphone_df['출시일'])

pandas.core.series.Series
👩💼 DataFrame 인덱싱 2
- 여러 row 받아오기
- 리스트로 인덱싱 한다
- 2차원이므로 자료형은 DataFrame
iphone_df.loc[['iPhone X', 'iPhone 8']]
type(iphone_df.loc[['iPhone X', 'iPhone 8']])

pandas.core.frame.DataFrame
iphone_df[['Face ID', '출시일', '메모리']]

- 행 슬라이싱
- 원하는 행들이 연속으로 있는 경우
- Python의 리스트 슬라이싱과 동일한 원리
iphone_df.loc['iPhone 8':'iPhone XS']

- 열 슬라이싱
- 행 슬라이싱에 비해 복잡
- 맨 앞
:
생략하면 안 된다
iphone_df.loc[:, '메모리':'Face ID']

iphone_df.loc['iPhone 7':'iPhone X', '메모리':'Face ID']

👩💼 DataFrame 조건으로 인덱싱
iphone_df.loc[[True, False, True, True, False, True, False]]

- Boolean 리스트의 값이 행의 수보다 작다면
나머지 행은 자동으로 False로 간주
- Pandas 업데이트로 사라진 기능
iphone_df.loc[:, [True, False, False, True]]

- 조건으로 인덱싱 하기
- 조건에 부합하면 True, 부합하지 않으면 False
- 결과 자료형: pandas Series(1차원)
- Python 리스트와 비슷한 효과
iphone_df['디스플레이'] > 5

iphone_df.loc[iphone_df['디스플레이']>5]

(iphone_df['디스플레이'] > 5) & (iphone_df['Face ID'] == 'Yes')

condition = (iphone_df['디스플레이'] > 5) & (iphone_df['Face ID'] == 'Yes')
iphone_df[condition]

👩💼 DataFrame 위치로 인덱싱하기
iphon_df.iloc[2,4] # 2번 row, 4번 column
'No'
iphone_dfd.iloc[[1,3], [1,4]]

iphone_df.iloc[3:, 1:4]

👩💼 DataFrame 인덱싱 문법 정리


출처: CODEIT - 데이터 사이언스 입문