Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

pandas

pandas는 데이터 처리와 분석을 위한 파이썬 라이브러리입니다. 2011년 등장 이후, 통계 언어 R에 의지하지 않고도 파이썬만으로 독립적인 데이터 처리와 분석이 가능해졌습니다. 기계학습에서 데이터 적재와 탐색은 대개 pandas로 시작합니다.

1pandas 자료구조

넘파이의 ndarray는 모든 원소가 하나의 자료형으로 통일되어야 합니다. 그러나 현실의 표 형식 데이터는 열마다 자료형이 다른 경우가 많습니다(예: 숫자 열과 문자열 열이 섞임). 또한 행과 열에 이름(label) 을 붙여 의미를 드러내고 싶을 때도 많습니다.

pandas는 이런 표 형식 데이터를 잘 다루기 위해 두 가지 핵심 자료구조를 제공합니다.

  • Series: 이름표가 붙은 1차원 데이터 (표의 한 열)

  • DataFrame: 여러 Series를 묶은 2차원 표

ndarray가 전체에 단일 자료형을 강제하는 것과 달리, DataFrame은 열 단위로 자료형이 설정되어 표 형식 데이터를 자연스럽게 반영합니다.

2DataFrame

2차원 텐서는 표로 표현할 수 있습니다. 붓꽃 데이터를 DataFrame으로 만들어 보겠습니다. ndarray 데이터에 열 이름(feature_names)을 붙이고, 품종 정보를 유형 열로 추가하면 의미를 한눈에 살펴볼 수 있는 하나의 표가 됩니다.

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris

붓꽃 = load_iris()
붓꽃표 = pd.DataFrame(붓꽃.data, columns=붓꽃.feature_names)
# target은 0,1,2 정수이므로 품종 이름으로 바꿔 '유형' 열로 추가합니다.
붓꽃표['유형'] = 붓꽃.target_names[붓꽃.target]
붓꽃표.head()
Loading...

head()는 표의 처음 몇 행을 보여 줍니다. 각 열에 이름이 붙어 있어, 어떤 값이 무엇을 뜻하는지 바로 알 수 있습니다. 수치 특성 열들은 실수형이고 유형 열은 문자열로, 열마다 자료형이 다른 것을 표 하나에 담았습니다.

3Series

DataFrame에서 단일 열(또는 행)을 선택하면 Series로 표현됩니다. 유형 열을 선택해 품종별 도수를 집계해 보겠습니다.

유형 = 붓꽃표['유형']
print(type(유형))
유형.value_counts()
<class 'pandas.core.series.Series'>
유형 setosa 50 versicolor 50 virginica 50 Name: count, dtype: int64

value_counts()로 각 품종이 50개씩임을 확인할 수 있습니다. Series는 값과 함께 각 값에 대응하는 색인(index) 을 가지며, 이런 이름표 기반 구조 덕분에 집계·정렬·결합이 편리합니다.

4행과 열 선택

표에서 원하는 부분을 선택하는 방법은 여러 가지입니다. 분석에서는 보통 입력 특성(수치 열)과 목표값(유형 열)을 나누어 다룹니다. 다음은 같은 수치 특성 네 열을 세 가지 방식으로 선택하는 예입니다.

# 1) 특정 열을 제외 (drop)
특성_A = 붓꽃표.drop(columns='유형')
# 2) 위치 색인으로 처음 네 열 (iloc)
특성_B = 붓꽃표.iloc[:, :4]
# 3) 열 이름 목록으로 선택
특성_C = 붓꽃표[붓꽃.feature_names]

# 세 방식의 결과가 모두 같은지 확인
assert 특성_A.equals(특성_B) and 특성_B.equals(특성_C)
특성_A.head()
Loading...

drop은 원래 표를 바꾸지 않고 해당 열을 뺀 새 표를 돌려줍니다. 선택 연산자 []나 위치 기반 iloc도 마찬가지로 원본을 유지합니다. 상황에 따라 편리한 방식을 고르면 됩니다.

5파일 입출력

실제 데이터는 싸이킷런이 준비해 주는 예시가 아니라, 파일이나 데이터베이스에서 읽어옵니다. pandas는 CSV·엑셀 파일은 물론 SQL 데이터베이스에서도 표 형식 데이터를 읽고 쓸 수 있습니다. 가장 흔한 CSV 형식은 to_csv로 저장하고 read_csv로 읽어옵니다.

붓꽃표.to_csv('iris_example.csv', index=False, encoding='utf8')
다시읽기 = pd.read_csv('iris_example.csv')
다시읽기.head()
Loading...

표 형식으로 기록된 데이터를 read_csv로 읽어오는 것이 데이터 적재의 출발점입니다. 적재한 데이터를 살펴보는 과정은 탐색적 데이터 분석 장에서 이어집니다.