Pandas가 가장 인기 있는 Python 데이터 분석 라이브러리인 이유는 다음과 같습니다.
Pandas는 파이썬에서 데이터 분석을 수행할 때 가장 널리 사용되는 라이브러리 중 하나입니다. 데이터 분석가, 데이터 과학자, 그리고 기계 학습 엔지니어들이 폭넓게 활용하고 있습니다.
NumPy와 더불어, 데이터와 AI를 다루는 모든 전문가에게 필수적인 라이브러리이자 도구로 자리매김했습니다.
이 글에서는 Pandas의 특징과 그 기능들을 살펴봄으로써, 왜 Pandas가 데이터 분야에서 그토록 사랑받는지에 대해 자세히 알아보겠습니다.
Pandas란 무엇인가?
Pandas는 파이썬 프로그래밍 언어에서 데이터 분석을 위해 특별히 설계된 라이브러리입니다. 파이썬 코드 내에서 데이터를 효과적으로 다루고 조작할 수 있게 해줍니다. Pandas를 통해 데이터를 효율적으로 읽고, 조작하고, 시각화하며, 분석하고, 저장하는 것이 가능합니다.
'판다스'라는 명칭은 '패널 데이터(Panel Data)'라는 경제학 용어에서 유래했습니다. 패널 데이터는 시간의 흐름에 따라 여러 개체를 관찰하여 얻은 데이터를 의미합니다. Pandas는 2008년 1월, 웨스 맥키니(Wes Kinney)에 의해 처음 개발되었으며, 그 이후로 데이터 분석 분야에서 가장 중요한 라이브러리로 성장했습니다.
Pandas의 핵심에는 데이터프레임(DataFrame)과 시리즈(Series)라는 두 가지 핵심 데이터 구조가 있습니다. 이들은 Pandas로 데이터 세트를 생성하거나 불러올 때 나타나는 기본적인 형태입니다.
다음 섹션에서는 데이터프레임과 시리즈가 무엇인지, 어떤 차이가 있는지, 그리고 어떤 상황에서 각각 사용하는 것이 가장 효율적인지를 자세히 살펴보겠습니다.
주요 데이터 구조
앞서 언급했듯이, Pandas의 모든 데이터는 데이터프레임(DataFrame) 또는 시리즈(Series)라는 두 가지 데이터 구조 중 하나를 사용하여 표현됩니다. 이 두 가지 데이터 구조에 대해 자세히 알아보겠습니다.
데이터프레임
아래 코드 스니펫을 사용하여 생성된 데이터프레임의 예시입니다.
Pandas의 데이터프레임은 행과 열로 구성된 2차원 데이터 구조입니다. 스프레드시트 프로그램의 시트나 관계형 데이터베이스의 테이블과 매우 유사합니다.
각 열은 데이터세트의 특정 속성이나 특징을 나타내며, 각 열은 개별적인 값으로 이루어져 있습니다. 이러한 값의 목록 또는 시퀀스는 Series 객체로 표현됩니다. Series 데이터 구조에 대한 자세한 내용은 이 글의 뒷부분에서 다루겠습니다.
데이터프레임의 열은 서로를 구별할 수 있는 이름을 가질 수 있습니다. 이러한 이름은 데이터프레임이 생성되거나 로드될 때 지정되며, 필요에 따라 언제든지 쉽게 변경할 수 있습니다.
데이터프레임의 각 열은 서로 다른 데이터 유형을 가질 수 있지만, 각 열 내의 값들은 모두 동일한 데이터 유형을 가져야 합니다. 예를 들어, '이름' 열은 문자열만 저장할 수 있지만, '나이' 열은 정수 값만 저장할 수 있습니다.
데이터프레임에는 행을 식별하는 데 사용되는 인덱스도 있습니다. 서로 다른 열에 있지만 동일한 인덱스를 가진 값들이 한 행을 구성합니다. 기본적으로 인덱스는 숫자로 매겨져 있지만, 데이터 세트에 맞게 변경할 수도 있습니다. 위 예시에서는 'months' 열을 인덱스 열로 설정했습니다.
import pandas as pd
sales_df = pd.DataFrame({
'Month': ['January', 'February', 'March'],
'Jane Doe': [5000, 6000, 5500],
'John Doe': [4500, 6700, 6000]
})
sales_df.set_index(['Month'], inplace=True)
print(sales_df)
시리즈

위 예시의 시리즈는 아래 코드와 같이 생성되었습니다.
앞서 언급했듯이 Series는 Pandas에서 데이터 열을 표현하는 데 사용됩니다. 따라서 Series는 1차원 데이터 구조입니다. 이는 2차원 데이터 구조인 데이터프레임과 대조됩니다.
Series는 일반적으로 데이터프레임의 열로 사용되지만, 데이터세트에 단일 열의 속성만 있는 경우, 그 자체로 완전한 데이터세트를 나타낼 수도 있습니다. 즉, 단순한 값 목록으로 표현할 수 있습니다.
Series는 단일 열을 나타내므로 이름이 필요하지 않습니다. 그러나 Series의 각 값은 인덱스를 통해 접근할 수 있습니다. 데이터프레임의 인덱스와 마찬가지로, Series의 인덱스도 기본 숫자 인덱스에서 변경할 수 있습니다.
위 예시에서 보듯이, 인덱스는 set_axis 메소드를 사용하여 다른 달로 설정되었습니다.
import pandas as pd total_sales = pd.Series([9500, 12700, 11500]) months = ['January', 'February', 'March'] total_sales = total_sales.set_axis(months) print(total_sales)
Pandas의 특징
이제 Pandas가 무엇이고, 어떤 데이터 구조를 활용하는지에 대한 기본적인 이해를 갖추었으므로, Pandas를 강력한 데이터 분석 라이브러리로 만드는 기능들을 살펴보겠습니다. 이러한 기능들이 데이터 과학 및 기계 학습 분야에서 Pandas를 매우 인기 있게 만드는 요인입니다.
#1. 데이터 조작
데이터프레임과 시리즈 객체는 수정 가능합니다. 즉, 필요에 따라 열을 추가하거나 제거할 수 있습니다. 또한 Pandas를 사용하면 행을 추가하고 여러 데이터세트를 병합할 수도 있습니다.
데이터 정규화, 요소별 논리 비교와 같은 다양한 수치 계산을 수행할 수 있습니다. Pandas는 데이터를 그룹화하고 평균, 중앙값, 최대값, 최소값과 같은 집계 함수를 적용하는 기능도 제공합니다. 이러한 기능들을 통해 데이터를 쉽게 조작할 수 있습니다.
#2. 데이터 정리

실제 데이터는 종종 작업하기 어렵거나 기계 학습 모델에 적용하기에 적합하지 않은 값을 포함합니다. 데이터 유형이 잘못되었거나, 형식이 올바르지 않거나, 데이터가 완전히 누락되었을 수도 있습니다. 이러한 데이터를 사용하기 위해서는 데이터 정리라는 사전 처리 과정이 필요합니다.
Pandas는 데이터를 정리하는 데 유용한 다양한 기능을 제공합니다. 예를 들어, Pandas를 사용하면 중복된 행을 삭제하고, 데이터가 누락된 열이나 행을 제거할 수 있으며, 결측값을 기본값이나 평균값과 같은 다른 값으로 대체할 수도 있습니다. 또한, Pandas와 함께 작동하는 다양한 라이브러리와 기능을 활용하여 더 복잡한 데이터 정리 작업을 수행할 수도 있습니다.
#3. 데이터 시각화

Matplotlib와 같은 강력한 시각화 라이브러리만큼 정교하지는 않지만, Pandas 자체적으로 기본적인 데이터 시각화 기능을 제공합니다. 기본적인 기능이지만, 대부분의 경우에 충분히 유용하게 활용할 수 있습니다.
Pandas를 사용하면 막대 그래프, 히스토그램, 산점도 등 다양한 차트를 쉽게 그릴 수 있습니다. 이러한 시각화 기능을 파이썬에서 수행할 수 있는 데이터 조작과 결합하면 더 복잡한 시각화 결과를 생성하여 데이터를 더 깊이 이해할 수 있습니다.
import pandas as pd
sales_df = pd.DataFrame({
'Month': ['January', 'February', 'March'],
'Jane Doe': [5000, 6000, 5500],
'John Doe': [4500, 6700, 6000]
})
sales_df.set_index(['Month'], inplace=True)
sales_df.plot.line()
#4. 시계열 분석
Pandas는 시간 정보가 포함된 데이터를 처리하는 기능도 지원합니다. 날짜/시간 값이 포함된 열을 인식하면, 해당 열에서 시간 순서에 따른 데이터를 처리하는 데 유용한 다양한 작업을 수행할 수 있습니다.
특정 기간별로 데이터를 그룹화하고 합계 또는 평균과 같은 집계 함수를 적용하거나, 최소값과 최대값을 사용하여 가장 처음 또는 가장 마지막 관측치를 얻는 등의 작업을 할 수 있습니다. 물론, Pandas를 사용하여 시계열 데이터를 분석할 수 있는 기능은 훨씬 더 다양합니다.
#5. Pandas의 입력/출력

Pandas는 널리 사용되는 다양한 데이터 저장 형식에서 데이터를 읽어올 수 있습니다. 여기에는 JSON, SQL 덤프, CSV 파일 등이 포함됩니다. 또한, 이러한 다양한 형식으로 데이터를 파일에 저장할 수도 있습니다.
다양한 데이터 파일 형식을 읽고 쓸 수 있는 기능을 통해 Pandas는 다른 애플리케이션과 원활하게 상호 작용할 수 있으며, 데이터 파이프라인을 쉽게 구축할 수 있습니다. 이러한 유연성 덕분에 Pandas는 많은 개발자들에게 사랑받고 있습니다.
#6. 다른 라이브러리와의 통합
Pandas는 자체 기능뿐만 아니라, 그 기능을 보완하기 위해 개발된 다양한 도구 및 라이브러리와도 잘 통합됩니다. 이러한 통합을 통해 Pandas는 더욱 강력하고 유용한 라이브러리로 거듭났습니다.
Pandas 생태계 내의 도구들은 데이터 정리, 시각화, 기계 학습, 입력/출력, 병렬화 등 다양한 영역에서 Pandas의 기능을 향상시킵니다. Pandas 공식 문서에서는 이러한 도구들에 대한 정보를 제공하고 있습니다.
Pandas 성능 및 효율성 고려 사항
Pandas는 대부분의 상황에서 매우 강력한 성능을 보여주지만, 때로는 속도가 느려질 수 있습니다. 하지만 코드를 최적화하면 속도를 크게 향상시킬 수 있습니다. 이를 위해서는 Pandas가 어떻게 구축되었는지를 이해해야 합니다.
Pandas는 NumPy라는 과학 계산 라이브러리를 기반으로 구축되었습니다. 따라서 NumPy와 마찬가지로 Pandas는 루프를 사용하여 개별 셀이나 행을 선택하는 것보다 작업을 벡터화할 때 훨씬 더 효율적으로 작동합니다.
벡터화는 동일한 작업을 한 번에 여러 데이터 포인트에 적용하는 병렬 처리 방식입니다. 이를 SIMD(Single Instruction, Multiple Data)라고도 합니다. 벡터화된 작업을 활용하면 Pandas의 속도와 성능을 크게 향상시킬 수 있습니다.
또한, Pandas의 데이터프레임과 시리즈는 내부적으로 NumPy 배열을 사용하기 때문에 기존 파이썬의 리스트나 딕셔너리보다 훨씬 빠른 속도를 보여줍니다.
기본적인 Pandas 구현은 단일 CPU 코어에서만 실행됩니다. 코드 속도를 향상시키는 또 다른 방법은 Pandas가 사용 가능한 모든 CPU 코어를 활용할 수 있도록 하는 라이브러리를 사용하는 것입니다. 여기에는 Dask, Vaex, Modin 및 IPython 등이 포함됩니다.
커뮤니티 및 리소스
Pandas는 파이썬에서 가장 인기 있는 라이브러리 중 하나이기 때문에, 사용자 및 기여자 커뮤니티가 매우 활발하게 운영되고 있습니다. 따라서, Pandas를 학습하는 데 필요한 다양한 리소스를 쉽게 찾을 수 있습니다. 공식 Pandas 문서는 물론, 수많은 온라인 강좌, 튜토리얼, 서적을 통해 Pandas를 효과적으로 학습할 수 있습니다.
또한, r/Python이나 r/Data Science와 같은 커뮤니티를 통해 질문하고 답변을 얻을 수도 있습니다. 오픈 소스 라이브러리이기 때문에 GitHub를 통해 버그를 보고하거나, 직접 코드에 기여할 수도 있습니다.
마지막 말
Pandas는 데이터 과학 분야에서 매우 유용하고 강력한 라이브러리입니다. 이 글에서는 Pandas의 주요 기능들을 살펴봄으로써, Pandas가 왜 데이터 과학자 및 프로그래머들에게 중요한 도구인지에 대한 이유를 설명하고자 했습니다.
다음으로는 Pandas 데이터프레임을 생성하는 방법에 대해 알아보세요.