데이터프레임(DataFrame)은 데이터를 행(row)과 열(column)로 이루어진 표 형태로 저장하는 2차원 데이터 구조입니다. SQL의 데이터 테이블이나 엑셀 시트와 비슷한 형태로 시각화할 수 있으며, 다음과 같은 생성자를 통해 만들 수 있습니다.
pd.Dataframe(data, index, columns, dtype, copy)
이번 글에서는 Series의 딕셔너리(사전)를 활용해 데이터프레임을 생성하는 방법을 자세히 알아보겠습니다.
Series란 무엇인가?
Series는 파이썬 Pandas 라이브러리에 포함된 1차원 데이터 구조입니다.
Series의 축 레이블(axis label)들을 모아서 인덱스(index)라고 부릅니다.
정수(int), 실수(float), 문자열(string), 파이썬 객체 등 어떤 타입의 데이터든 저장할 수 있습니다.
예제 코드
import pandas as pd
my_data = {'ab' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'mn' : pd.Series([56, 78, 13, 13], index=['a', 'b', 'c', 'd'])}
my_df = pd.DataFrame(my_data)
print("Series 딕셔너리로 생성한 데이터프레임 : ")
print(my_df)실행 결과
Series 딕셔너리로 생성한 데이터프레임 :
ab mn
a 1.0 56
b 2.0 78
c 3.0 13
d NaN 13코드 설명
필요한 라이브러리를 임포트하고, 사용 편의성을 위해 별칭(alias)을 지정합니다.
키(key)와 값(value)으로 구성된 딕셔너리를 생성하는데, 여기서 값은 실제로 Series 데이터 구조입니다.
이렇게 만든 Series 딕셔너리를 Pandas 라이브러리의
DataFrame함수에 매개변수로 전달합니다.데이터프레임은 Series 딕셔너리를 인자로 넘겨 생성되며, 각 Series가 하나의 열(column)이 됩니다.
생성된 데이터프레임이 콘솔에 출력됩니다.
주의할 점: NaN 값 처리
출력 결과를 보면 'd' 행의 'ab' 열에 NaN(Not a Number)이라는 값이 표시됩니다. 이는 해당 [행, 열] 위치에 유효한 데이터가 없다는 의미입니다. 두 Series의 인덱스 길이가 서로 다르기 때문에('ab'는 a~c까지, 'mn'은 a~d까지 존재), 짧은 쪽 Series에 없는 인덱스 위치에는 자동으로 NaN이 채워집니다. Pandas는 이처럼 인덱스를 기준으로 데이터를 정렬(alignment)하며, 누락된 값은 NaN으로 처리한다는 점을 기억하면 좋습니다.