판다스는 테이블형 데이터를 쉽게 다룰 수 있는 유용한 데이터 구조와 다양한 집계 방법, 유틸리티 함수 들을 제공합니다. 판다스는 사용자가 데이터를 다양하게 다루어 원하는 결과를 얻어낼 수 있도록 데이터 작업에 특화된 패키지입니다. 따라서, 사용자는 프로그래밍을 최소화 하고 판다스의 기능을 이용해 쉽게 데이터를 처리하고, 집계할 수 있도록 도와줍니다.
판다스는 크게 1차원 컬럼 데이터인 Series 객체와 컬럼들의 결합으로 생기는 2차원 테이블 형 데이터는 DataFrame 객체를 제공합니다. DataFrame을 잘 이해하려면 먼저 Series 객체를 이해하는 것이 필요합니다.
이 글에서는 다양한 사례에서 Series 객체를 생성할 수 있는 방법을 알아보려고 합니다.
빈 Series 객체 생성하기
파일이나 DB로부터 데이터를 읽어오는 것이 가장 일반적인 방법이지만, 때로는 빈 Series 객체를 만들고, 데이터를 이후에 추가하여 관리하기 위해 Series 객체를 사용할 수도 있습니다.
다음의 예제를 살펴봅니다.
import pandas as pd
sr = pd.Series()
sr[0] = 2
sr[1] = 3
sr[2] = 4
sr[5] = 7
sr[2] = 8
display(sr)
위 코드의 실행 결과는 다음과 같습니다.
0 2
1 3
2 8
5 7
dtype: int64
pd.Series() 함수를 이용하면 빈 Series 객체를 생성합니다.
이후에 배열과 같이 [] 를 사용해 해당 index에 값을 지정하면 추가가됩니다.
다만, 동일한 index에 값을 여러번 추가하면 앞의 값을 덮어 쓸 수 있습니다.
만일 다음과 같이 10보다 작은 수 중에서 홀수들의 값을 Series 객체를 생성해 추가할 수도 있습니다.
import pandas as pd
sr = pd.Series()
for i in range(10):
if (i % 2) == 1:
sr[len(sr)] = i
display(sr)
0 1
1 3
2 5
3 7
4 9
dtype: int64
리스트 객체를 이용해 Series 객체 생성하기
만일 Series에 전달할 리스트(list) 객체에 값을 이미 가지고 있다면 이를 이용해 값이 채워진 Series 객체를 생성할 수 있습니다.
다음과 같이 리스트 변수 lst_var을 Series() 객체의 생성자에 첫 번째 파리미터로 넘기면 됩니다.
import pandas as pd
lst_var = [1,2,3,4]
sr = pd.Series(lst_var)
print(type(lst_var))
print(sr.dtype)
sr
결과를 확인해보면 총 4개의 값을 갖는 Series 객체가 생성 되었고, index는 판다스가 알아서 0번부터 3번까지 순차적으로 값을 지정했습니다.
<class 'list'>
int64
0 1
1 2
2 3
3 4
dtype: int64
값과 인덱스 리스트로 Series 객체 생성하기
인덱스 값을 0부터 시작하는 순차적 값이 아니라 원하는 값으로 key처럼 사용하고 싶다면 index도 리스트 형태로 만들어 전달하면 됩니다.
import pandas as pd
sr = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
sr
딕셔너리로 Series 객체 생성하기
딕셔너리는 key-value 쌍으로 구성된 집합 데이터 객체입니다. Series에서 index와 value로 구성되는 것과 구조가 유사합니다. 다행히 Series에서 딕셔너리를 이용해 쉽게 객체를 생성할 수 있도록 지원합니다.
Dictionary의 key와 value는 Series의 index와 value에 매핑됩니다. Series 객체를 생성하기 위해 생성자에 dict 객체를 전달하면 자동으로 index와 value에 해당하는 객체를 생성합니다.
import pandas as pd
dic_var = {'apple':1, 'banana':3, 'tomato':5, 'orange':8}
sr = pd.Series(dic_var)
sr
위 코드의 실행 결과는 다음과 같습니다.
apple 1
banana 3
tomato 5
orange 8
dtype: int64
지금까지 Seires 객체를 생성하는 여러 방법에 대해 알아보았습니다.
더 궁금한 점은 아래 댓글에 달아주시기 바랍니다.