본문 바로가기
Data/Data Analysis

[Pandas 데이터전처리] 2-2.Pandas 데이터구조(Dataframe 인덱싱)

by 카프리썬 2021. 7. 15.
728x90

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행의 데이터를 추출한 것이다.  

- 행번호 슬라이싱하여 행추출 

반응형