본문 바로가기
카테고리 없음

[파이썬] 판다스(Pandas)의 뜻, 판다스 기본 사용법, 실전예시 분석

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 3.

데이터 분석을 위한 파이썬과 판다스(Pandas)

파이썬은 웹 개발, 자동화, 게임 제작 등 다양한 분야에서 활용되지만, 최근 몇 년 사이 가장 각광받고 있는 분야는 바로 데이터 분석(data analysis)입니다. 이러한 작업을 더 쉽게 하기 위한 도구 중 대표적인 것이 판다스(Pandas)입니다.

판다스는 다음과 같은 상황에서 큰 효과를 발휘합니다:

      
  • 엑셀보다 더 복잡한 데이터 처리나 분석이 필요한 경우
  •   
  • 반복 작업을 자동화하고 싶은 경우
  •   
  • 대용량 데이터를 빠르게 분석하고 시각화하고자 할 때
  •   
  • 머신러닝이나 통계 분석의 기초를 배우고 싶을 때

판다스는 행과 열로 구성된 데이터 구조를 제공하여 초보자도 직관적으로 접근할 수 있습니다.

판다스 기본 사용법과 실습 예제

1. 시리즈와 데이터프레임

판다스에서 가장 기본적인 두 가지 구조는 Series(1차원)와 DataFrame(2차원) 입니다.

import pandas as pd

# Series 예시
s = pd.Series([10, 20, 30])
print(s)
 0   10
 1   20
 2   30
dtype: int64

 

Series는 인덱스를 가지고 있는 리스트처럼 보면 됩니다.

# DataFrame 예시
data = {
    "이름": ["철수", "영희", "민수"],
    "나이": [25, 30, 27]
}
df = pd.DataFrame(data)
print(df)

출력결과입니다.

 이름   나이
0 철수   25
1 영희   30
2 민수   27
dtype: int64

 

이제부터는 대부분의 작업을 DataFrame 중심으로 하게 됩니다.

 

2. 외부 파일 불러오기 및 저장

# CSV 파일 불러오기
df = pd.read_csv("sample.csv")

# 엑셀 파일 불러오기 (openpyxl 필요)
# pip install openpyxl
df_excel = pd.read_excel("sample.xlsx")

# CSV 저장
df.to_csv("결과.csv", index=False)

# 엑셀 저장
df.to_excel("결과.xlsx", index=False)

 

파일로부터 데이터를 불러오면 다양한 분석을 진행할 수 있으며, 다시 파일로 저장할 수도 있습니다.

3. 데이터프레임 기초 탐색

print(df.shape)
print(df.columns)
print(df.head())
print(df.tail())
print(df.info())
print(df.describe())

이 과정은 데이터를 이해하는 데 매우 중요합니다. 데이터를 다루기 전에 항상 구조와 특성을 먼저 파악하는 것이 기본입니다.

4. 행과 열 선택

# 단일 열
df["이름"]

# 여러 열
df[["이름", "나이"]]

# 특정 행
df.loc[1]
df.iloc[1]

# 특정 행과 열
df.loc[0:1, ["이름", "나이"]]

loc[], iloc[]는 행과 열을 조합해서 원하는 데이터를 자유롭게 선택하는 데 사용됩니다.

5. 조건 필터링

# 나이가 25 이상인 사람
df[df["나이"] >= 25]

# 이름이 철수인 경우
df[df["이름"] == "철수"]

조건 필터링은 매우 자주 사용되며, SQL의 WHERE 절과 유사한 느낌으로 사용됩니다.

6. 결측치 처리

df.isnull().sum()
df["나이"] = df["나이"].fillna(df["나이"].mean())
df = df.dropna()

실제 데이터는 항상 완벽하지 않기 때문에 결측치를 다루는 법은 필수적으로 익혀야 합니다.

7. 열 추가, 수정, 삭제

# 열 추가
df["지역"] = ["서울", "부산", "대전"]

# 계산 후 열 추가
df["성인여부"] = df["나이"] >= 20

# 열 삭제
df = df.drop(columns=["성인여부"])

데이터를 가공하면서 새로운 컬럼을 추가하거나 필요 없는 정보를 제거하는 작업이 잦습니다.

판다스를 활용한 실전 분석 예시

1. 성별에 따른 나이 평균

df = pd.DataFrame({
    "이름": ["철수", "영희", "민수", "지민"],
    "성별": ["남", "여", "남", "여"],
    "나이": [25, 30, 27, 29]
})

avg_by_gender = df.groupby("성별")["나이"].mean()
print(avg_by_gender)

출력결과입니다.


성별
남   26.0
여   29.5
Name:나이, dtype: float64

groupby() 함수는 데이터 분석의 핵심기능 중 하나입니다. 기준을 정해 그룹별 평규느 합계, 최대값 등을 쉽게 구할 수 있습니다.

2. 조건에 따른 데이터 집계 (피벗)

df = pd.DataFrame({
    "과목": ["수학", "수학", "영어", "영어"],
    "학생": ["A", "B", "A", "B"],
    "점수": [90, 80, 95, 85]
})

pivot = df.pivot_table(index="과목", columns="학생", values="점수")
print(pivot)

출력결과입니다.


    학생    A     B
    과목
    수학  90.0  80.0
    영어  95.0  85.0

pivot_table()은 엑셀의 피벗테이블 기능과 동일합니다. 데이터 요약과 시각적 분석에 매우 효과적입니다.

3. 시각화 예제 (막대그래프)

import matplotlib.pyplot as plt

df = pd.DataFrame({
    "이름": ["철수", "영희", "민수"],
    "점수": [85, 90, 78]
})

df.plot(kind="bar", x="이름", y="점수", legend=False)
plt.title("학생별 점수 그래프")
plt.ylabel("점수")
plt.show()

판다스는 시각화 라이브러리와도 잘 연동됩니다. 데이터가 눈에 보이게 되면 훨씬 직관적으로 분석이 가능해집니다.

 

그 외, 더 많은 활용을 위해서는 merge, apply, value_counts, sort_values 등의 기능도 익혀두면 좋습니다. 다음 단계로는 Matplotlib, Seaborn을 이용한 시각화 심화, 또는 Pandas+ Scikit-learn 조합으로 머신러닝으로도 영역을 확장 할 수 있습니다.