python 에서는 연속되는 여러개의 요소를 가진 자료형을 시퀀스 자료형(Sequence Types)이라고 한다.
그리고 이 시퀀스 자료형들은 자신의 하위요소에 접근하기 위해 슬라이스(Slice)를 문법을 사용한다.
* 배열, 문자열, Numpy 배열, Pandas의 DataFrame 에서 슬라이스 구문을 사용할 수 있다.
but. 구문은 같지만 내부 동작은 다르다. 따라서 배열의 슬라이스, DataFrame의 슬라이스는 다른 결과를 나타낼 수 있다.
인덱서 loc, iloc
1. loc = label이나 조건표현으로 선택하는 방법
Access a group of rows and columns by label(s) or a boolean array.
## row 행 선택
# 선택하고 싶은 row만 선택 == Series로 반환됨[]
data.loc['선택하고 싶은 row name']
# 선택하고 싶은 rows 둘다 선택 == DataFrame으로 반환됨[[]]
data.loc[['선택하고 싶은 row name 1','선택하고 싶은 row name 2']]
## row / column 행-열 동시 선택 [[]]
data.loc[['선택하고 싶은 row name1','선택하고 싶은 row name2'],['선택하고 싶은 column name1', '선택하고 싶은 column name2', 'city']]
#위와 동일 but 범위로 표시
data.loc[['선택하고 싶은 row name1','선택하고 싶은 row name2'], '선택하고 싶은 column name 시작':'선택하고 싶은 column name 마지막']
## indexing 을 할 경우
# 인덱싱을 할 수 잇는 컬럼으로 인덱스를 지정해준다.(inplace=True)일경우 기존의 인덱스를 대체한다.
df.set_index('인덱싱할col name', inplace=True)
# index 컬럼에서 선택할 row를 찾는다. (예시 'id' = 487)
data.loc[487]
2. iloc = 행번호(row number)로 선택하는 방법.
어떻게 선택하느냐에 따라 Series로 값이 반환 될 수 있고 DataFrame으로 반환 될 수 도 있다.
Purely integer-location based indexing for selection by position
# rows:
# data의 첫번째 행만
df.iloc[0]
# 두번째 행만
df.iloc[1]
# 마지막 행만
df.iloc[-1]
# Columns:
# 첫번째 열만
df.iloc[:,0]
# 두번째 열만
df.iloc[:,1]
# 마지막 열만
df.iloc[:,-1]
## df.iloc[: <-- :는 row전체 인덱싱했다는 뜻
# 첫~5개 row만, 0~4까지 선택됨
data.iloc[0:5]
# 첫~2개 column만, 0~1까지 선택됨
data.iloc[:, 0:2]
# 1st, 4th, 7th, 25th row와 + 1st 6th 7th column만
data.iloc[[0,3,6,24], [0,5,6]]
# 첫~5개 row와(0~4까지 선택됨) 5th, 6th, 7th column만(5~7까지 선택됨)
data.iloc[0:5, 5:8]
3. logical index 와 .loc 활용
### 참/거짓, logical index 와 .loc 활용
# 원하는 column에서 원하는 특정 값의 row전체를 출력하고 싶다.
df[df['원하는 column'] == '원하는 column의 row값']
# 원하는 column에서 원하는 특정 값의 row에서 특정 column만 출력하고 싶다. [] dtype = series
df.loc[df['원하는 column'] == '원하는 column의 row값', '특정column name']
# 원하는 column에서 원하는 특정 값의 row에서 특정 column만 출력하고 싶다. [] dtype = DataFrame
df.loc[df['원하는 column'] == '원하는 column의 row값', ['특정column name']]
4. Boolean 활용
# Blooean으로 반환
df.A > 15
a False
b False
c True
Name: A, dtype: bool
# 위의 boolean을 DataFrame으로 반환
df.loc[df.A > 15]
[out]
A B C D
c 18 19 20 21
# boolean을 원하는 column의 값만 DataFrame으로 반환
df.loc[df.A > 10, ["원하는 column name 1", "원하는 column name 2"]]
'Computer Science > 파이썬' 카테고리의 다른 글
[통계/python] 가설검정3 - ANOVA test (0) | 2021.06.21 |
---|---|
[Python] 가설검정1 - Student T-test (0) | 2021.06.20 |
[Python] Feature Engineering 1 - DataFrame manipulation (단순 합계 column생성, string to numeric with replace def, Concat, Merge, Join) (0) | 2021.06.08 |
[Python] 데이터 전처리 2 - 중복값 확인 및 처리 (0) | 2021.06.07 |
[Python] 데이터 전처리 1 - 결측치 확인 및 처리 (0) | 2021.06.07 |