[Pandas 데이터전처리] 2-2.Pandas 데이터구조(Dataframe 인덱싱)
pandas의 기본적인 데이터구조인 Series와 DataFrame
데이터엔지니어링/데이터사이언티스트 교육을 통해 배운내용을 복습하고, 추가로 공부한 내용을 정리하였습니다.
아래의 주피터내용은 여기 깃허브에서 확인할 수 있습니다.
데이터프레임 인덱싱방법
1. 열기준 인덱싱
2. 인덱서를 사용하지 않는 행기준 인덱싱
3. 인덱서를 사용하는 행기준 인덱싱
1. 열기준인덱싱
1) 하나의 열추출
하나의 열을 가지고 오는 방법 : df[컬럼명] -> 그 결과는 시리즈 타입을 가지고 있다.
2) 2개이상의 열추출
데이터프레임으로 리턴받고자 하면 : df[[컬럼명]] -> [컬럼명]을 리스트형태로 사용한다.
컬럼명이 문자열일 경우, 수치인덱스를 사용할 수 없다.
위치인덱싱(index번호로 찾는것) 을 사용할 수 없어서 슬라이싱도 불가능하다.
3) 열에 값 대입
- 모든성분에 일괄적으로 대입가능 : df[컬럼명] = value
- 행에 각각 어떤값을 대입가능 : df[컬럼명] = [ ]
- 새로운 열을 생성과 동시에 대입가능 : df[컬럼명]=np.range(N) : 1~N-1까지 배열생성 (python range랑 같음)
2. 행기준 인덱싱
- 인덱서를 사용하지 않을 경우, 슬라이싱 해야함
- 열기준 인덱싱과 다르게, 컬럼명이 문자열이라도 위치인덱싱(index번호로 찾는것) 가능하다.
1) 행추출과 접근
슬라이싱을 사용해서 행 추출
[행][열]로 개별요소 접근
3. 인덱서
데이터프레임 인덱서(loc, iloc)를 사용한 인덱싱방법
[행번호, 열번호] 형식으로 인덱싱이 불가능하여, iloc[행번호,열번호] 또는 loc[행이름,열이름] 으로 인덱싱한다.
1) loc인덱서 dfl.loc['행이름']
- 행이름으로 행 추출
직접 '행' 이름으로 행의 모든 데이터 추출가능
또는 '행이름으로 슬라이싱'하여 행의 범위만큼 데이터 추출가능
- 행이름으로 여러행 추출 (데이터프레임)
열기준 인덱싱 과 마찬가지로 인덱스 데이터를 리스트로 사용하여 여러행을 추출 할 수도 있다. -> 데이터프레임 반환
또한 인덱스 값으로 조건식을 줄 수도 있고, 인덱스 값을 반환하는 함수의 결과값으로도 사용이 가능하다.
- 행인덱스 자동생성
만약, 행이름이 없다면? 행인덱스가 자동으로 생성이 된다.
그래서 행인덱스 번호를 행이름으로 슬라이싱 하면된다.
단, 주의사항
행인덱스번호는 0부터 부여되지만, 라벨인덱스를 이용한 슬라이싱의 의미는 1번부터 시작된다.
- 행인덱서를 사용한 데이터 추출
2) iloc인덱서 dfl.iloc[행번호,열번호]
loc가 행이름을 받은것과 다르게 iloc는 위치를 나타내는 정수만 인덱스로 받는다.
위치의 정수값은 0부터 시작한다.
- 행번호로 행 추출
예를 들어 df.iloc[0] 은 1행의 데이터를 추출한 것이다.
- 행번호 슬라이싱하여 행추출