본문 바로가기

공부/판다스(Pandas)

Pandas와 함께 사용하면 좋은 라이브러리(NumPy, Matplotlib, Seaborn)

0. 들어가면서

데이터 분석과 처리를 위해 Python 생태계에서 가장 많이 사용되는 라이브러리 중 하나가 Pandas입니다. Pandas는 데이터 프레임 구조를 사용하여 데이터를 쉽게 조작하고 분석할 수 있도록 해줍니다. 하지만 데이터 분석 과정에서 Pandas만으로는 부족한 부분이 있기 때문에, 다른 라이브러리들과의 통합 사용이 중요합니다. 이 글에서는 Pandas와 함께 자주 사용되는 세 가지 라이브러리인 NumPy, Matplotlib, Seaborn에 대해 다루고, 각 라이브러리와 Pandas의 통합 사용을 설명하는 코드 예시와 함께 그 코드가 어떻게 작동하는지 설명하겠습니다.

1. NumPy: 효율적인 수치 연산

NumPy는 다차원 배열 객체인 ndarray를 사용하여 대규모의 수치 데이터를 효율적으로 처리할 수 있도록 돕는 라이브러리입니다. NumPy는 Pandas의 핵심인 데이터 프레임 내부에서 배열 연산을 처리하는 데 중요한 역할을 하며, 빠른 벡터 연산을 가능하게 합니다.

NumPy와 Pandas 통합의 장점

  • 빠른 수치 연산: Pandas의 데이터 프레임 내에서 수치 연산을 할 때, NumPy의 배열을 사용하여 연산 속도를 크게 향상시킬 수 있습니다.
  • 복잡한 수학 함수 사용: NumPy는 다양한 수학 함수, 선형 대수, 난수 생성 등의 기능을 제공하므로, Pandas와 함께 복잡한 수치 데이터를 처리할 때 유용합니다.

예시 코드 및 설명

import pandas as pd
import numpy as np

# NumPy 배열 생성
data = np.random.rand(5, 3)

# Pandas DataFrame으로 변환
df = pd.DataFrame(data, columns=['A', 'B', 'C'])

# NumPy를 사용한 빠른 수치 연산
df['A_squared'] = np.square(df['A'])
print(df)

코드 설명

  • NumPy 배열 생성: np.random.rand(5, 3)는 5x3 크기의 난수 배열을 생성합니다. 이 배열은 0과 1 사이의 랜덤 숫자로 채워집니다.
  • Pandas 데이터 프레임 생성: pd.DataFrame(data)를 사용하여 NumPy 배열을 Pandas 데이터 프레임으로 변환합니다. 열 이름으로는 ['A', 'B', 'C']를 지정합니다.
  • NumPy의 수치 연산 사용: np.square(df['A'])를 사용하여 'A' 열의 값을 제곱한 결과를 새로운 'A_squared' 열로 추가합니다.
  • 결과 출력: 최종적으로 제곱된 값이 포함된 데이터 프레임이 출력됩니다.

2. Matplotlib: 시각화를 위한 필수 도구

Matplotlib는 가장 널리 사용되는 데이터 시각화 라이브러리입니다. Pandas 데이터 프레임에서 바로 시각화할 수 있도록 Matplotlib와의 통합 기능을 제공하며, 이를 통해 간단한 플롯을 빠르게 생성할 수 있습니다.

Matplotlib와 Pandas 통합의 장점

  • Pandas 내장 플로팅 기능: Pandas 데이터 프레임에서 plot() 메소드를 통해 Matplotlib의 기능을 쉽게 사용할 수 있습니다.
  • 다양한 시각화 기능: 선 그래프, 막대 그래프, 히스토그램 등 다양한 시각화 형태를 지원하여 데이터를 탐색하는 데 도움을 줍니다.

예시 코드 및 설명

import pandas as pd
import matplotlib.pyplot as plt

# 데이터 생성
data = {'Category': ['A', 'B', 'C', 'D'],
        'Values': [23, 45, 56, 78]}
df = pd.DataFrame(data)

# Matplotlib로 막대 그래프 그리기
df.plot(kind='bar', x='Category', y='Values')
plt.show()

코드 설명

  • 데이터 프레임 생성: {'Category': ['A', 'B', 'C', 'D'], 'Values': [23, 45, 56, 78]} 형태의 데이터를 Pandas 데이터 프레임으로 변환합니다. 여기서 'Category'는 막대 그래프의 x축에 해당하며, 'Values'는 y축 값을 나타냅니다.
  • Pandas를 사용한 시각화: df.plot() 메서드를 사용하여 Matplotlib 막대 그래프를 그립니다. kind='bar'는 막대 그래프 유형을 지정하고, x='Category', y='Values'는 각각 x축과 y축에 표시될 열을 지정합니다.
  • 플롯 표시: plt.show()로 그래프를 화면에 표시합니다.

3. Seaborn: 고급 시각화 라이브러리

Seaborn은 Matplotlib을 기반으로 한 고급 시각화 라이브러리로, 통계적 플롯을 만들기에 적합합니다. Pandas와도 잘 통합되어 있으며, 기본적으로 아름답고 복잡한 시각화를 제공하므로 데이터의 상관관계나 분포를 쉽게 파악할 수 있습니다.

Seaborn과 Pandas 통합의 장점

  • 데이터 프레임 기반: Seaborn은 Pandas 데이터 프레임과 매우 잘 통합되어 있으며, 데이터 프레임을 바로 입력받아 시각화를 할 수 있습니다.
  • 통계적 시각화: Seaborn은 히트맵, 박스 플롯, 페어 플롯 등 통계적 분석에 유용한 시각화 도구를 제공합니다.

예시 코드 및 설명

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 예시 데이터 생성
df = sns.load_dataset('iris')

# Seaborn으로 상관관계 히트맵 그리기
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()

코드 설명

  • 데이터셋 로드: sns.load_dataset('iris')는 Seaborn에서 제공하는 예시 데이터셋 중 하나인 iris 데이터를 로드합니다. 이 데이터는 Pandas 데이터 프레임으로 로드됩니다.
  • 상관관계 계산: df.corr()은 데이터 프레임의 수치형 데이터들 간의 상관관계를 계산합니다. 이 상관관계는 열 사이의 상관성을 나타내는 값으로, -1에서 1 사이의 값입니다.
  • 히트맵 시각화: sns.heatmap(df.corr(), annot=True, cmap='coolwarm')는 상관관계 행렬을 히트맵 형태로 시각화합니다. annot=True는 각 셀에 상관관계 값을 표시하며, cmap='coolwarm'은 색상 팔레트를 설정합니다.
  • 플롯 표시: plt.show()로 시각화된 히트맵을 출력합니다.

결론

Pandas는 데이터를 효율적으로 다룰 수 있는 강력한 도구이지만, 데이터 분석의 각 과정에서 NumPy, Matplotlib, Seaborn과 같은 라이브러리와의 조합이 필수적입니다. NumPy는 수치 연산에서 속도와 성능을 제공하고, Matplotlib과 Seaborn은 데이터를 시각화하여 통찰을 얻을 수 있게 도와줍니다. 각 라이브러리의 기능을 Pandas와 통합하여 사용하면, 데이터 분석 작업을 훨씬 더 강력하고 효율적으로 수행할 수 있습니다.