SW개발 지식 쌓기

판다스(Pandas) 튜토리얼(Tutorial) - 데이터 선택(data select) 본문

Python/Pandas

판다스(Pandas) 튜토리얼(Tutorial) - 데이터 선택(data select)

bykitty 2019. 2. 28. 10:56
반응형
  • 패키지 import

튜토리얼을 진행하기 위해서는 아래의 패키지를 import 해야한다.

 


튜토리얼을 진행하기 위해서는 아래의 과정을 수행해야한다.

 


  • 데이터 선택


 


단일 열 선택


 

단일 열을 선택하는 방법은 다음과 같다.

 

 

[23] df[ ] 대괄호 안에 컬럼 값을 입력하여서 단일 열을 선택할 수 있다.

 

특정 영역을 선택하는 경우 [ ]을 사용하여 선택한다.

 

 

 

[24] df[시작지점:종료지점] 을 통해 데이터 프레임의 특정 영역을 선택할 수 있다. (입력 값을 index로 한 경우)

[24] df[시작지점:종료지점] 을 통해 데이터 프레임의 특정 영역을 선택할 수 있다. (입력 값을 date로 한 경우)

 


라벨을 통한 선택


 

라벨을 사용하여 해당하는 행을 선택한다.

 

 

[26] 이전 [5]에서 만든 dates 리스트에서 첫 번째 리스트인 '2013-01-01'을 선택하여 df.loc 메소드를 사용하여서 2013-01-01에 해당하는 행을 출력

* df.loc는 pandas에서 Dataframe을 탐색 할 때 사용하는 함수

* [5]  dates = pd.date_range('20130101', periods=6)

 

두 개 이상의 컬럼을 선택하는 경우 - 시작지점과 종료지점이 없는 경우

 

 

[27] df.loc[시작지점:종료지점, ['컬럼명','컬럼명','...']] 을 사용하여 두 개 이상의 컬럼을 출력한다.

* 컬럼명은 반드시 dataframe에 있는 컬럼명을 사용해야 한다.

* 컬럼 전체를 출력해야 하는 경우 반드시 '[ ]' 안에 컬럼명을 넣어야 한다.

 

두 개 이상의 컬럼을 선택하는 경우 - 시작지점과 종료지점을 지정하는 경우

 

 

[28] df.loc[시작지점:종료지점, ['컬럼명','컬럼명','...'] 을 사용하여 두 개 이상의 컬럼을 출력한다.

* DataFrame의 date index의 경우 날짜는 '-' 없이 입력하면 된다.

* 시작지점과 종료지점을 선택하지 않은 경우 전체 범위를 출력한다.

* 시작지점을 넣고 종료지점을 넣지 않는 경우 시작지점 부터 마지막 행까지 컬럼을 출력한다.

* 종료지점을 넣고 시작지점을 넣지 않는 경우 시작 행부터 종료지점까지 컬럼을 출력한다.

 

두 개 이상의 컬럼을 선택하는 경우 - 특정 지점

 

 

[29] df.loc[특정지점, ['컬럼명','컬럼명','...']] 을 사용하여 두 개 이상의 특정 컬럼을 출력한다.

* 2차원 반환이 아닌 1차원을 반환하기 때문에 출력 형태가 바뀐 것을 볼 수 있다.

 

특정 값을 선택하는 경우 - loc 사용

 

 

[30] df.loc[index 값, colum 값] 을 사용하여 특정 값을 출력한다.

 

특정 값을 선택하는 경우 - at 사용

 

 

[31] df.at[index 값, colum 값] 을 사용하여 특정 값을 출력한다.

 


정수 값을 사용한 선택


 

정수 위치 지정을 통한 선택

 

 

[32] df.lioc[정수] 를 사용해 DataFrame의 4번째 행의 값을 출력

* python의 리스트(배열)은 0부터 시작

* index 값이 아닌 정수를 사용하는 경우 loc가 아닌 iloc를 사용한다

 

정수를 사용한 DataFrame 선택

 

 

[33] df.iloc[시작지점(행):종료지점(행), 시작지점(열):종료지점(열)] 를 사용해 DataFrame을 출력

 

리스트 변수를 사용한 DataFrame 선택

 

 

[34] df.iloc[[리스트 값(행)], [리스트 값(열)]] 를 사용해 DataFrame을 출력

* 범위가 아닌 여러 특정 지점이 필요할 때 사용한다.

 

정수를 사용한 DataFrame 선택 - 열 부분의 시작지점과 종료지점이 없는 경우

 

 

[35] df.iloc[시작지점(행):종료지점(행), 시작지점(열):종료지점(열)] 를 사용해 DataFrame을 출력

* 시작지점과 종료지점을 선택하지 않은 경우 전체 범위를 출력한다.

* 시작지점을 넣고 종료지점을 넣지 않는 경우 시작지점 부터 마지막 행까지 컬럼을 출력한다.

* 종료지점을 넣고 시작지점을 넣지 않는 경우 시작 행부터 종료지점까지 컬럼을 출력한다.

 

정수를 사용한 Data Frame 선택 - 행 부분의 시작지점과 종료지점이 없는 경우

 

 

[36] df.iloc[시작지점(행):종료지점(행), 시작지점(열):종료지점(열)] 를 사용해 DataFrame을 출력

* 시작지점과 종료지점을 선택하지 않은 경우 전체 범위를 출력한다.

* 시작지점을 넣고 종료지점을 넣지 않는 경우 시작지점 부터 마지막 행까지 컬럼을 출력한다.

* 종료지점을 넣고 시작지점을 넣지 않는 경우 시작 행부터 종료지점까지 컬럼을 출력한다.

 

특정 값을 선택하는 경우 - iloc 사용

 

 

[37] df.iloc[정수, 정수] 를 사용하여 특정 값을 출력한다.

 

특정 값을 선택하는 경우 - iat 사용

 

 

[38] df.iat[정수, 정수] 를 사용하여 특정 값을 출력한다.

 


Boolean 인덱싱


 

단일 열의 값을 사용하여 데이터를 선택

 

 

[39] df.A > 0 옵션으로 A 컬럼에서 0 이상 값을 가지는 행만 출력한다.

 

DataFrame에서 Boolean 조건이 충족되는 값을 선택

 

 

[40] df > 0 옵션으로 DataFrame에서 0 초과 값을 가지는 값을 출력한다.

* [39]와는 다르게 기준이 DataFrame이 되므로 0 이하의 값은 NaN(null) 처리된다.

 

isin() 메소드를 사용한 선택

 

 

[41] df에서 사용한 내용을 그대로 df2에 복사

[42] df2에 'E' 라는 컬럼을 추가하고, 값으로 리스트 값인 'one', 'one', 'two', 'three', 'four', 'three' 를 입력

[42] df2 출력

[44] df2[df2['컬럼명'].isin(['값','값','...']) 메소드를 사용하여서 two, four 에 해당하는 행을 출력

* isin 메소드는 리스트 값이 해당 컬럼에 있는 경우 true를 반환하는 메소드

 


입력


 

데이터를 인덱스별로 자동 입력

 

 

[45] s1에 20130102 부터 6일 이후의 인덱스와 1,2,3,4,5,6 값을 가지는 pandas 1차원 변수를 만든다

[46] s1 출력

[47] df에 'F' 컬럼을 추가한 후 s1 변수를 입력한다.

* s1 변수의 인덱스 값에 의해 df에 있는 인덱스 값에 맞추어 1,2,3,4,5,6 값이 순서대로 입력된다.

 

라벨을 통한 값 입력

 

 

[48] df.at['인덱스 값', '컬럼 값'] = 0 메소드로 해당 인덱스와 컬럼에 해당하는 값을 0으로 변경한다.

 

위치에 따른 값 입력

 

 

[49] df.iat['정수', '정수'] = 0 메소드로 해당 정수 위치에 해당하는 값을 0으로 변경한다.

 

NumPy 배열을 통한 값 입력

 

 

 

[50] df.loc[시작지점:종료지점, '컬럼 값'] = 배열 값

* 시작지점과 종료지점을 선택하지 않은 경우 전체 범위를 출력한다.

* 시작지점을 넣고 종료지점을 넣지 않는 경우 시작지점 부터 마지막 행까지 컬럼을 출력한다.

* 종료지점을 넣고 시작지점을 넣지 않는 경우 시작 행부터 종료지점까지 컬럼을 출력한다.

* np.array([5] * len(df)) 메소드로 5의 값을 가지는 df의 길이(인덱스 길이, 6) 만큼 array를 생성

 

 

입력 명령어 값 확인

 

 

[51] df 출력

 

조건에 따른 값 입력

 

 

[52] df 값을 df2로 복사

[53] df2 값 중 0 보다 큰 값을 음수로 변경

[54] df2 출력


 

 

반응형