반응형

Pandas 자료 구조는 Series와 DataFrame을 말한다고 생각하면 된다. 그 정도로 이 두가지에 익숙해지면 pandas를 잘 활용한다고 할 수 있다는 것이다.

1. Series 정의

Series는 pandas의 기본 블록이라고 할 수 있다. 

일련의 객체를 담을 수 있는 1차원 배열과 같은 자료 구조를 나타낸다. 

Series 객체의 문자열 표현은 왼쪽에 색인(index)을 보여주고 오른쪽에 해당 색인의 값(values)을 보여준다. 

즉, Series의 배열과 색인 객체는 각각 values와 index 속성을 통해 얻을 수 있는 것이다.


2. Series 만들기

>> import pandas as pd # 사용할 라이브러리를 불러온다(이미 설치되어 있다고 가정).

>> import numpy as np

Series는 리스트, 딕셔너리, NumPy 함수, 스칼라 값들로부터 만들 수 있다.

>> pd.Series([10, 11, 12, 13, 14])

>> pd.Series(list('abcde'))

>> pd.Series({'Mike': 'Dad', 

'Marcia' : 'Mom',

'Mikael' : 'Son',

'Bleu' : 'Best doggie ever'})

>> pd.Series(np.arange(4, 9))

>> pd.Series(np.linspace(0, 9, 5))


기본적으로 index 속성을 가지고 index를 지정할 수도 있다.

>> s = pd.Series([1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])


3. Series의 속성들

아래 속성들을 가지고 여러 작업을 해 볼 수 있다.

>> s.values # 값을 확인할 수 있다.

>> s.index # 인덱스를 볼 수 있다.

>> len(s) # 아이템 수를 확인할 수 있다.

>> s.size # 위와 동일하게 아이템 수를 확인할 수 있다.

>> s.shape # 아이템 수와 빈값으로 된 두개 값의 튜플로 돌려준다.

>> s.head(n = 3) # 앞의 3열을 미리 볼 수 있다.

>> s.tail(n= 2) # 뒤의 2열을 미리 볼 수 있다.

>> s.take([1, 3]) # 2번째와 4번째 열 등 지정한 특정 열의 아이템을 볼 수 있다(0부터 시작한다).

>> s['a'] # a 레이블의 값을 돌려준다.

>> s.iloc[[0,2]] # 특정 위치의 값을 찾아 돌려준다.

>> s.loc[['a', 'd']] # 특정 레이블의 값을 돌려준다.

  

4. Series를 부분집합으로 나누기

>> s = pd.Series(np.arange(100, 110), index = np.arange(10, 20))

>> s[1:6] # 두번째 값(0부터 시작하기 때문에)부터 5번째 값(맨 마지막 값은 제외)까지 돌려준다.

>> s.iloc[[1, 2, 3, 4, 5]] # 지정한 위치의 값들은 모두 돌려준다.

>> s[1:6:2] # 두번째 값부터 5번째 값 중에서 2씩 건너 뛰어 돌려준다(1, 3, 5번째 값).

>> s[:5] # 첫번째 값부터 네번째 값까지 돌려준다.

>> s[4:] # 다섯번째 값부터 마지막 값까지 돌려준다.

>> s[::-1] # 마지막 값에서 첫번째 값까지 거꾸로 돌려준다.

>> s[-4::] # 마지막 4개 값들을 돌려준다.


일련의 날짜 값들을 가지고 작업할 수 있다.

>> dates = pd.date_range('2018-03-01', '2018-03-06')

>> temps1 = pd.Series([20, 22, 25, 30, 23, 27], index = dates)

>> temps2 = pd.Series([10, 15, 13, 19, 13, 17], index = dates)

온도 값 차이를 아래와 같이 다른 변수에 저장할 수 있다.

>> temp_diffs = temps1 - temps2

평균값도 계산 가능하다.

>> temp_diffs.mean() 


5. 불린(Boolean) 선택으로 자료를 찾기

>> s = pd.Series(np.arange(0, 5), index=list('abcde'))

>> logical_results = s >= 3

>> s[logical_results] # logical_results 값이 참(true)인 열들만 돌려준다.

>> s[(s >= 2) & (s < 5)] # s값이 2보다 크거나 같고 5보다 작은 열들을 돌려준다.

>> (s >=0).all() # 참(true)을 돌려준다.

>> (s < 2).any() # 참(true)을 돌려준다.

>> (s < 2).sum() # 조건에 맞는 값들의 합을 돌려준다.


<Source : Learing Pandas Second Edition, Packt>














반응형

+ Recent posts