판다스에는 크게 세 가지 자료구조가 존재한다. 1차원 자료구조인 Series, 2차원 자료구조인 DataFrame, 3차원 자료구조인 Panel이 있다. 본 문서에서는 판다스에서 사용하는 자료구조와 그 속성, 메서드 등에 대해서 다룬다.
최종수정일 : 2023.11.22
Series는 value와 index의 형태를 지니는 Pandas의 자료 구조이다. 일련의 시퀀스 데이터를 받아들이는데, 별도의 인덱스 레이블을 지정하지 않으면 자동적으로 0부터 시작되는 디폴트 정수 인덱스를 사용한다.
import pandas as pd dict = {'a':1, 'b':2, 'c':3} list = [1,3,7] indexed_series = pd.Series(dict) unindexed_series = pd.Series(list) print(indexed_series) print(unindexed_series) #result a 1 b 2 c 3 dtype: int64 0 1 1 3 2 7 dtype: int64
DataFrame은 시퀀스 데이터를 받아 column과 row로 구성된 2차원 자료구조를 형성한다.
import pandas as pd df_dictionary = pd.DataFrame({'a': [1,2,3], 'b' : [4,6,8]}) df_list = pd.DataFrame([3,6,9],[4,8,12]) #result a b 0 1 4 1 2 6 2 3 8 0 1 2 0 3 6 9 1 4 8 12
딕셔너리로 생성할 경우 딕셔너리 키가 column index가 되며, 값은 해당 열의 원소가 된다. 리스트로 생성할 경우 하나의 리스트가 하나의 행이 된다.
Panel은 3차원 자료구조이다.
dict = {'a':1, 'b':2, 'c':3} list = [1,3,7] indexed_series = pd.Series(dict) unindexed_series = pd.Series(list) indexed_series['a'] #result : 1 unindexed_series[3] #result : 7
Series는 일반 리스트나 딕셔너리처럼 접근할 수 있다.
df_dictionary = pd.DataFrame({'a': [4,8,12], 'b' : [3,6,9]}) #column indexing df_dictionary['a'] #result : 0 4 1 8 2 12 #iloc value indexing df_dictionary.iloc[1,1] #result : 6 #iloc range indexing df_dictionary.iloc[0:2,0:2] #result : a b 0 4 3 1 8 6 #sequence indexing boolean_series = pd.Series([True,True,False]) df_dictionary[boolean_series] #result : a b 0 4 3 1 8 6
column indexing
DataFrame에서 열 인덱스로 인덱싱할 경우 해당 열 전체가 추출된다.
iloc indexing
위치를 지정할 경우 해당 위치의 값이,
범위를 지정할 경우 해당 지점 왼쪽 위까지의 프레임이 포함된다.
sequnce indexing
데이터프레임의 행 수와 같은 크기의 boolean sequence(series, list)를 인덱싱에 사용할 경우, 사용된 시퀀스의 값이 True인 행만을 반환한다.