본문 바로가기

파이썬 기초

파이썬 Pandas를 알기 위해서는 Series부터 이해하자.

Pandas Series 대표


파이썬 Pandas를 다루기 전에 오늘은 Pandas의 기본이 되는 Pandas Series에 대해서 알아봅시다.


Pandas Series는 인덱싱된 데이터의 1 차원 배열입니다. 


Numpy(Numerical Python)와 다른 점은 Numpy는 명시적 인덱스 없이 묵시적으로 '0' 부터 차례로 정수형 인덱스를 사용하여 접근하지만 Pandas Series는 명시적으로 정의된 인덱스가 존재하기 때문에 이 명시적 인덱스를 사용할 수 있다는 기본적이 차이가 있습니다.


여기서 잠깐 ! ! ☞☞ Numpy란 무엇인가?


Numpy는 Numerical Python의 약자로 대규모 다 차원 배열 뿐만 아니라 수치 계산을 쉽고 효율적으로 처리할 수 있도록 지원하는 파이썬의 라이브러리이다. 



Pandas Series는 리스트나 배열을 이용하여 만들 수 있는데, 다음과 같이 명시적인 인덱스를 이용하여 Pandas Series를 만드는 간단한 예제 하나를 실행시켜 봅시다.

pandas series 생성 방법


첫 번째 열에는 'a', 'b', 'c', 'd' 로 된 인덱스(Index)와 두 번째 열에는 일련의 값들로 구성되어 있음을 알 수 있다.


Pandas Series의 인덱스와 일련의 값들은 각각 valuesindex 라는 속성으로 아래와 같이 접근이 가능합니다.

pandas series value & index


Series의 values는 1 차원 배열인 Numpy와 동일하기 때문에 대괄호, '[ ]'를 사용하여 Series의 values 각각의 요소에 접근이 가능합니다.

pandas series 데이터 인덱스


우리가 흔히 사용하고 있는 파이썬의 딕션너리(Dictioary)처럼 동작하는 것을 볼 수 있습니다.


새로운 인덱스에 새로운 값을 추가하기 위해서도 딕션너리에서 새로운 값은 추가할 때와 동일한 방법으로 가능합니다.

pandas series 추가하기


또한 Series에서 명시적 인덱스를 사용하여 슬라이싱도 가능합니다.

pandas series 슬라이싱


(중요)명시적 인덱스를 사용하는 Series에 묵시적 인덱스(정수형 인덱스)를 사용해도 접근이 가능합니다.


위의 예제에서 첫 번째 값을 가져오기 위해 'a' 라는 명시적 인덱스가 아닌 정수 영(0)을 사용하여도 접근 가능합니다.

pandas series 첫번째 값 가져오기


묵시적 정수 인덱스를 이용한 슬라이싱도 가능합니다.

pandas series code 7


단, 묵시적 인덱스를 이용한 슬라이싱에서는 마지막 인덱스가 슬라이스에서 제외됩니다.

명시적 인덱스는 마지막 인덱스를 포함합니다. 사용 시 주의가 필요하고 조금 혼란스러울 수 있습니다.


다음 예제를 천천히 살펴봅시다.

정수형의 명시적 인덱스를 이용하여 Series를 만들었습니다.

pandas series code 8


data[1]이라고 수행하면 어떤 값이 출력 될까요?

'a'가 출력 될 것입니다. 


그러면 data[1:3] 같은 슬라이싱의 결과는 어떻게 될까요? 

명시적 인덱스를 사용하는 것일까요? 묵시적 인덱스를 사용하는 것일까요?


결론은 묵시적 인덱스를 적용됩니다.

pandas series code 9


Pandas의 Series 객체 뿐만 아니라 DataFrame 이라는 객체도 마찬가지로 정수를 인덱스로 사용할 경우 특별한 주위가 필요합니다.


이러한 혼선을 방지하고자 Pandas는 인덱싱 방식을 명시적인지, 묵시적인지 명확하게 사용할 수 있도록 몇 가지 인덱서(Indexer) 속성을 제공하고 있습니다.


3 가지 속성이 있었는데 최근 ix 라는 속성은 삭제되어 현재는 2가지 속성에 대한 기능만 제공하고 있습니다.


1. loc : 명시적 인덱스 사용할 때 사용합니다.

pandas series code 10


2. iloc : 묵시적 인덱스 사용할 때 사용합니다.

pandas series code 11


3. ix : 최근 Series와 DataFrame에서 삭제된 기능입니다.(pandas.__version__ 1.0.0 부터 삭제됨) 



Series에서 사용하는 매서드를 아래와 같습니다.

 Series 매서드

설명 

 append

 2개 이상의 시리즈 연결

 describe 

 요약 통계량 계산 

 drop_duplicates

 중복값이 없는 시리즈 반환 

 equals

 시리즈에 해당 값을 가진 요소가 있는지 확인 

 get_values

 시리즈 값 구하기, values 속성과 동일함 

 isin

 시리즈에 포함된 값이 있는지 확인 

 min

 최소값 반환 

 max

 최대값 반환 

 mean

 산술 평균 반환 

 median

 중간 값 반환 

 replace

 특정 값을 가진 시리즈 값을 교체 

 sample

 시리즈의 임의의 값을 반환 

 sort_value

 값을 정렬 

 to_frame

 시리즈를 데이터프레임으로 변환 



이상 Pandas의 기본이 되는 Series에 대해서 알아보았습니다.

이 부분이 잘 정리되어야 Pandas의 핵심인 DataFrame 객체를 이해하고 정복하는데 많은 도움이 될 것입니다.


혹시 오늘 정리한 부분에 대해서 궁금한 점 있으면 댓글 주세요.