본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python 자료구조(3) (데이터프레임)

728x90
반응형

1. 생성

데이터 프레임 생성 방법이다.

 

위 방법은 에러가 난다.

ValueError : All arrays must be of the same length.

즉 length가 다른 데이터프레임은 구성이 되지 않는다. 각 key 길이가 같아야 한다.

 

이렇게 key 길이가 같아야 생성이 된다.

 

 

이렇게도 데이터프레임이 생성이 된다.

 

 

 

2. 중요 메서드

dtypes 메서드를 사용하면 각 컬럼 별 데이터 타입을 확인할 수 있다.

위 데이터프레임은 a컬럼 b컬럼 모두 interger로 구성되어있다.

 

shape 메서드를 사용하면 n x m 의 형태를 알 수 있으며 (3, 2)로 출력되는 것을 보아 3행 2열 구조이다.

 

따라서 데이터 프레임의 행을 출력하기 위해서는 df1.shape[0] , 열을 출력하기 위해서는 df1.shape[1] 을 사용하여야 한다. 

R에서처럼 ncol, nrow 가 없다.

 

 

데이터프레임의 행열 전치는 아래와 같이 T 메서드를 사용하여 할 수 있다.

 

 

 

3. 색인(indexing)

  - 기본방법: df1[행범위, 열범위]

  - 데이터프레임 색인: iloc(positional indexing), loc(label indexing)

 

먼저 아래와 같은 데이터프래임 색인 방법은 불가하다.

df1[1,'b']  

df1[1,1]

위와 같은 방법은 Key Error 가 발생한다.

 

위처럼 iloc 또는 loc 메서드를 사용하면 데이터프레임의 색인이 가능하다.

 

list를 사용하여 여러 값을 전달도 가능하다.

 

 

slice indexing 방법이다.

 

 

boolean indexing 방법이다.

 

 

맨 뒤에 있는 컬럼을 선택하는 방법이다.

R은 - 사용 시 해당 컬럼을 제외시키지만 Python에서는 -1일 경우 reverse되어 맨 뒤를 의미한다.

 

위와 같이 문자열에 대한 연속 색인도 가능하다.(pandas에서 가능, R은 불가)

다만 일반적으로 'b' : 'z'가 가능하다는 의미는 아님에 주의하자.

즉 print( 'b' : 'z' ) 했다고 하여 b, c, d, e, f, ..., x, y, z 가 출력되는 것이 아니다.

 

 

 

 

4. 구조 변경

1) index, column 변경

 

우선 현재 index 확인 방법이다.

 

위 index 메서드를 사용하면 외부객체를 index로 전달이 가능하다.

 

 

현재 column 확인 방법이다.

 

컬럼 변경 방법은 아래와 같다.

 

 

 

index와 column에 이름을 부여하여보자.

index와 column의 이름을 확인하는 방법은

df1.index.name

df1.columns.name

이다.

지금은 아무것도 부여되지 않아서 어떠한 것도 출력되지 않는다.

index와 column에 이름을 부여하는 방법은 다음과 같다.

 

이렇게 한 후 각각의 이름을 출력하면 다음과 같이 출력된다.

 

 

 

지정되어있는 index / columns의 이름 삭제를 하는 방법은 다음과 같다.

 

 

 

데이터프레임 내부에 있는 특정 컬럼을 index로 가지고 오는 방법이다.

set_index를 사용한 본문에서의 index 설정

 

이렇게 지정하는 건 외부 객체를 지정하는 방법으로 , set_index로는 외부 객체를 index로 지정할 수 없어서 Key Error가 발생한다.

 

이렇게 해야 가능하다. A라는 컬럼을 index로 설정하였으며, 이제 본문에서 A 컬럼은 제외된다.

 

 

 

 

2) 값 변경

 

첫 번째 방법이 권장사항이며 두 번째 방법은 권장하는 방법이 아니다. 둘 다 가능은 하나 가끔 두 번째 방법에서 에러가 발생한다. 그래서 값의 수정이 불가한 경우가 있다. 즉 2중 색인을 권장하지 않는다.

 

 

 

 

3) 행, 컬럼 추가

컬럼(key) 추가 방식은 용이하다.

 

위와 같이 본래 C키가 있는 것처럼 컬럼을 넣으면 된다.

 

다만 행 추가는 아래와 같이 불가하다.

행 추가의 경우 없는 위치 호출 시 에러가 발생한다. 이런 방식으로는 행 추가가 불가능하다.

컬럼의 경우에는 key 구조로 되어 있기 때문에 가능하였다.

 

 

예) pd.concat 함수를 사용한 행 결합

옵션에서 axis = 0은 행의 결합이다. 따라서 axis = 1 하면 열의 결합도 가능하다. 즉, 해당 함수는 행 추가 뿐만 아니라 열 추가도 가능한 함수이다.

ignore_index가 False인 경우는 4번째 행의 index가 3이 아닌 0으로 출력된다.

 

 

예) df2에서 5를 추출하자.

iloc를 사용하면 행의 1을 위치로 해석하며, loc를 사용하면 행의 2를 이름으로 해석한다.

 

 

 

예) df1에서 B 컬럼이 20 이상인 행을 선택하여라.

 

 

예) emp에서 이름이 SMITH인 직원의 이름, 급여, 부서번호를 출력하여라.

728x90
반응형