[Pandas] DataFrame 특정 row 선택하는 두가지 방법(loc,iloc)
- Python/Pandas
- 2020. 12. 26.
이번 포스팅에서는 DataFrame 에서 row를 선택하는 방법에 대해 살펴볼까 합니다.
크게 두가지 방법이 있는데요.
둘 다 인덱스를 사용하는 것은 같지만 DataFrame 에서 사용하는 인덱스를 우리가 설정할 수 있기 때문에 설정을 한 것으로 찾느냐 아니면 DataFrame 에 저장되어 있는 인덱스 번호로 찾느냐는 차이입니다.
데이터 상황에 맞춰서 두가지를 혼용해서 쓸 수 있습니다.
살펴볼 것은 다음과 같습니다.
1. loc
2. iloc
아래와 같은 DataFrame을 가져왔습니다. 2019년 1월 기준 코스피 200 종목입니다.
현재 인덱스가 정해지지 않아서 숫자로 표기되어 있습니다.
'종목명' 으로 인덱스를 설정하겠습니다.
df = df.set_index('종목명')
1. loc
loc를 사용해서 row를 선택해보도록 합시다. loc는 지금 내가 설정한 index에 따라서 선택이 가능합니다.
'호텔신라'를 선택해보겠습니다.
df.loc['호텔신라']
인덱스를 두개 이상을 선택하고 싶다면 리스트로 넣습니다.
df.loc[['호텔신라','휴켐스']]
하나만 선택하면 Series로 나오지만 두개 이상 선택시 DataFrame으로 나오는 걸 볼 수 있습니다.
더 정확하게 말하면 리스트로 요청하는지에 따라 Series와 DataFrame으로 바뀝니다.
인덱스를 리스트 안에 넣으면 DataFrame으로 나오게 됩니다.
df.loc[['호텔신라']]
1.1. column 선택하기
컴마(,)로 구분해 원하는 column을 선택할 수 있습니다.
df.loc[['호텔신라'],['현재가']]
위와 마찬가지로 현재가를 리스트가 아닌 문자열로 입력하게 되면 Series로 나오게 됩니다.
df.loc[['호텔신라'],'현재가']
값만 나오게 하고 싶다면 문자열 형식으로 써넣어야 합니다.
df.loc['호텔신라','현재가']
여러 개의 column을 선택하려면 리스트로 반환합니다.
df.loc[['호텔신라'],['종목코드','현재가','등락률']]
선택범위가 연속적이라면 슬라이싱을 활용합니다.
df.loc[['호텔신라'],'종목코드':'등락률']
따라서 값을 변경하고 싶다면 값만 나오는 문자열형식으로 쓰고 값을 변경합니다.
df.loc['호텔신라','현재가'] = 60000
df.loc['호텔신라','현재가']
2. iloc
iloc를 사용하면 번호로 된 고유인덱스(row_number)로 row를 불러올 수 있습니다.
df.iloc[20]
iloc는 고유넘버로 합니다. 따라서 column 또한 고유넘버인 column_number로 넣어주어야 합니다.
0번부터 시작하기 때문에 굉장히 헷갈립니다. 아무튼 현재가를 가져오겠습니다.
현재가의 컬럼은 2번째이므로 1이 됩니다.
df.iloc[20,1]
loc와 마찬가지로 리스트로 넣으면 Series와 DataFrame으로 만들 수 있습니다.
df.iloc[[20],1]
df.iloc[[20],[1]]
iloc로도 값을 변경하고 싶다면 값으로만 나오는 형식으로 써서 변경을 합니다.
df.iloc[20,1] = 30000
df.iloc[20,1]
loc,iloc로 많은 것을 할 수 있습니다.
무엇보다 제일 주의해야할 것은 어떻게 쓰면 값, Series, DataFrame이 나오는지 알고 있어야 합니다.
보통 for문을 할텐데 어떻게 나오는지 그려내지 못한다면 그에 맞는 코드를 쓰지 못해 영문모를 오류가 계속 나올 수 있습니다.
관련 포스팅
[Python/Pandas] - [Pandas] 원하는 위치값 가져오기(at,iat)
'Python > Pandas' 카테고리의 다른 글
[Pandas] DataFrame 결측치(NaN) 처리 (0) | 2021.01.30 |
---|---|
Pandas로 xlsx 안 열어질 때 (0) | 2021.01.01 |
[Pandas] DataFrame 인덱스 설정, 리셋 (0) | 2020.12.05 |
[Pandas]DataFrame column 추가,삭제,순서변경 (0) | 2020.07.16 |
[Pandas] DataFrame 살펴보기(생성,데이터파악) (0) | 2020.07.06 |