Type something to search...
파이썬 데이터 분석 기초: Pandas(판다스) 핵심 기능 마스터하기

파이썬 데이터 분석 기초: Pandas(판다스) 핵심 기능 마스터하기

파이썬 데이터 생태계의 엑셀, Pandas

데이터 과학(Data Science)이나 머신러닝 분야에서 파이썬(Python)이 압도적인 1위 언어로 자리 잡을 수 있었던 이유는 무엇일까요? 바로 데이터를 다루는 데 특화된 훌륭한 라이브러리 생태계 덕분입니다. 그 생태계의 가장 중심에 서 있는 핵심 라이브러리가 바로 **Pandas(판다스)**입니다.

Pandas는 엑셀(Excel)의 스프레드시트나 관계형 데이터베이스(SQL)의 테이블과 유사한 표 형태의 데이터를 파이썬 프로그래밍 환경에서 쉽고 강력하게 조작하고 분석할 수 있도록 도와줍니다. 빅데이터 전처리, 정제, 필터링, 그룹화 등 데이터 분석가들이 하는 업무의 80% 이상이 Pandas를 통해 이루어진다고 해도 과언이 아닙니다.

이번 포스팅에서는 Pandas의 두 가지 핵심 자료구조와 필수적인 데이터 조작 방법들을 가볍게 살펴보겠습니다.

Pandas 시작하기

Pandas를 사용하기 위해서는 먼저 라이브러리를 설치하고 임포트(import)해야 합니다. 관례적으로 pd라는 별칭(alias)을 사용하여 임포트합니다.

# 설치 (터미널)
# pip install pandas

# 임포트
import pandas as pd
import numpy as np # 보통 수치 계산 라이브러리인 numpy도 함께 사용합니다.

1. Pandas의 심장, 두 가지 핵심 자료구조

Pandas는 데이터를 담기 위해 SeriesDataFrame이라는 두 가지 특별한 그릇(자료구조)을 제공합니다.

Series (시리즈)

Series는 1차원 배열 형태의 데이터 구조입니다. 엑셀에서 표의 '하나의 열(Column)'이라고 생각하면 쉽습니다. 파이썬의 기본 리스트(List)와 비슷하지만, 각 데이터에 접근할 수 있는 **인덱스(Index)**라는 라벨(Label)을 달고 있다는 점이 다릅니다.

# 리스트를 Pandas Series로 변환
data = ['Apple', 'Banana', 'Cherry']
s = pd.Series(data, index=['a', 'b', 'c'])
print(s)

# 출력결과:
# a     Apple
# b    Banana
# c    Cherry
# dtype: object

DataFrame (데이터프레임)

DataFrame은 2차원 테이블 형태의 데이터 구조입니다. 행(Row)과 열(Column)로 구성되어 편집되며, 여러 개의 Series가 모여서 하나의 DataFrame을 이룬다고 볼 수 있습니다. 실제 데이터 분석에서 가장 많이 다루게 될 구조입니다.

# 딕셔너리를 활용하여 DataFrame 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'London', 'Paris']
}
df = pd.DataFrame(data)
print(df)

# 출력결과:
#       Name  Age      City
# 0    Alice   25  New York
# 1      Bob   30    London
# 2  Charlie   35     Paris

2. 외부 데이터 불러오기

실제 환경에서는 데이터를 직접 코드에 입력하기보다는 CSV나 Excel 파일 형식으로 저장된 데이터를 불러와서 작업합니다. Pandas는 다양한 포맷의 파일을 읽고 쓰는 강력한 기능을 제공합니다.

# CSV 파일 읽기
df_csv = pd.read_csv('sales_data.csv')

# Excel 파일 읽기
df_excel = pd.read_excel('report.xlsx')

# 처음 5개 행 미리보기 (데이터의 생김새 파악에 필수!)
print(df_csv.head())

# 데이터 프레임의 전체적인 정보(결측치, 데이터 타입 등) 요약
df_csv.info()

3. 데이터 선택 및 필터링 핵심 기초

방대한 데이터 프레임에서 내가 원하는 정보만 쏙쏙 골라내는(Indexing) 방법은 Pandas의 핵심입니다.

열(Column) 선택하기

# 'Name' 열만 선택 (결과는 Series 형태로 반환됨)
names = df['Name']

# 여러 열을 동시에 선택할 때는 리스트로 묶어줍니다.
subset = df[['Name', 'City']]

조건에 맞는 행(Row) 필터링 (Boolean Indexing)

엑셀의 필터 기능과 같습니다. 특정 조건을 만족하는 행만 추출할 때 사용합니다.

# 나이가 30 이상인 사람만 필터링
over_30 = df[df['Age'] >= 30]

# 여러 조건을 조합할 때 (AND: &, OR: |)
# 주의: 조건식마다 반드시 괄호 ()를 쳐주어야 합니다.
condition_df = df[(df['Age'] >= 30) & (df['City'] == 'London')]

특정 위치의 데이터 선택 (loc, iloc)

  • loc[]: 인덱스의 '라벨(이름)'을 기준으로 선택합니다.
  • iloc[]: 인덱스의 '위치(정수 번호)'를 기준으로 선택합니다.
# 인덱스가 0인 행의 모든 데이터 가져오기 (이름 기반)
row_0 = df.loc[0]

# 0번째 행, 1번째 열의 데이터 가져오기 (숫자 기반)
val = df.iloc[0, 1]

4. 결측치(Missing Data) 처리하기

현실의 데이터는 비어있거나(NaN, Not a Number) 잘못된 값으로 가득 찬 지저분한 상태인 경우가 많습니다. 분석을 시작하기 전 데이터 정제(Preprocessing) 단계에서 결측치 처리는 필수입니다.

# 결측치가 있는지 확인
print(df.isnull().sum())

# 결측치가 하나라도 포함된 행 삭제
df_dropped = df.dropna()

# 결측치를 다른 값(예: 0 또는 열의 평균값)으로 채우기
mean_age = df['Age'].mean()
df_filled = df.fillna(mean_age)

다음 단계로

지금까지 Pandas의 아주 기본적인 형태와 기능만 살펴보았습니다. Pandas는 이 외에도 데이터 병합(Merge, Concat), 그룹화 및 집계(GroupBy), 시계열 데이터 처리 등 매우 방대하고 강력한 기능들을 내장하고 있습니다.

처음부터 모든 기능을 외우려고 하기보다는, Kaggle이나 공공데이터포털에서 관심 있는 CSV 파일 데이터셋을 하나 다운로드하여 직접 불러오고 요리조리 만져보세요. 에러 메시지와 씨름하며 직접 데이터를 다루어 보는 것만큼 훌륭한 학습법은 없습니다.

Related Post

도커(Docker) 완벽 가이드: 초보자를 위한 컨테이너 기술 입문 및 활용법

도커(Docker) 완벽 가이드: 초보자를 위한 컨테이너 기술 입문 및 활용법

도커(Docker)란 무엇인가? 최근 몇 년간 소프트웨어 개발과 배포 환경에서 가장 혁신적인 변화를 이끌어낸 기술 중 하나가 바로 '도커(Docker)'입니다. 도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. 도커는 소프트웨어를 '컨테이너(Container)'라는 표준화된 유닛으로 패키징하며, 이 컨테이너에

쿠버네티스(Kubernetes) 완벽 이해: 도커를 넘어선 컨테이너 오케스트레이션

쿠버네티스(Kubernetes) 완벽 이해: 도커를 넘어선 컨테이너 오케스트레이션

쿠버네티스(Kubernetes)란 무엇인가? 도커(Docker)가 단일 컨테이너의 생성과 관리를 혁신했다면, 쿠버네티스(Kubernetes, 줄여서 k8s)는 수십, 수백 개의 컨테이너를 대규모로 배포, 확장, 관리하는 과정을 자동화해주는 '컨테이너 오케스트레이션(Container Orchestration)' 도구입니다. 구글(Google)에서 자

Git 브랜치 전략 완벽 가이드: Git Flow부터 GitHub Flow까지

Git 브랜치 전략 완벽 가이드: Git Flow부터 GitHub Flow까지

협업의 필수품, Git 브랜치 전략 소프트웨어 개발 프로젝트에서 여러 명의 개발자가 동시에 코드를 작성하다 보면 필연적으로 충돌과 혼란이 발생합니다. "누가 언제 이 코드를 수정했지?", "배포 나갈 안정적인 버전은 어디에 있지?" 이러한 문제를 해결하기 위해 필수적으로 사용하는 도구가 바로 Git(깃)입니다. Git의 강력한 기능 중 하나는 바

React vs Vue.js: 2024년 프론트엔드 프레임워크 선택 가이드

React vs Vue.js: 2024년 프론트엔드 프레임워크 선택 가이드

프론트엔드 전쟁, 당신의 선택은? 웹 개발에 조금이라도 관심이 있다면 'React(리액트)'와 'Vue.js(뷰)'라는 이름을 한 번쯤은 들어보셨을 것입니다. jQuery 시대가 저물고 모던 웹 애플리케이션(SPA) 시대가 도래하면서, 이 두 라이브러리/프레임워크는 전 세계 프론트엔드 생태계를 양분하며 치열하게 경쟁하고 있습니다. 새로운 프로젝트

웹 사이트 성능 최적화 전략: 로딩 속도가 비즈니스에 미치는 영향

웹 사이트 성능 최적화 전략: 로딩 속도가 비즈니스에 미치는 영향

로딩 속도 1초의 나비효과 "빨리빨리" 민족인 한국인들뿐만 아니라, 전 세계 인터넷 사용자들의 인내심은 갈수록 짧아지고 있습니다. 아마존(Amazon)의 한 연구 결과에 따르면, 웹사이트 로딩 시간이 100ms(0.1초) 지연될 때마다 판매량이 1% 감소한다고 합니다. 구글(Google) 역시 페이지 로딩 시간이 1초에서 3초로 늘어나면 사

GitHub Actions로 시작하는 완벽한 CI/CD 파이프라인 자동화

GitHub Actions로 시작하는 완벽한 CI/CD 파이프라인 자동화

수동 배포의 악몽에서 벗어나기 "자, 이제 코딩 끝! 서버에 접속해서 git pull 받고, 의존성 다시 설치하고, 빌드하고, 기존 프로세스 죽이고, 새 프로세스 띄우자." 프로젝트 초기에는 이러한 수동 배포 과정이 크게 번거롭지 않을 수 있습니다. 하지만 서비스가 커지고 팀원이 늘어나면서 하루에도 수십 번씩 코드가 통합되고 배포되어야 한다면

TypeScript 101: 자바스크립트에 '안전벨트' 채우기

TypeScript 101: 자바스크립트에 '안전벨트' 채우기

자바스크립트의 배신 자바스크립트(JavaScript)는 세상에서 가장 널리 쓰이는 언어이자, 매우 유연하고 작성하기 쉬운 언어입니다. 하지만 프로젝트 규모가 커지고 복잡해질수록 그 '유연함'은 종종 개발자의 발목을 잡는 치명적인 독이 되곤 합니다. function addNumbers(a, b) { return a +

생성형 AI 시대, 개발자 프롬프트 엔지니어링 실전 가이드

생성형 AI 시대, 개발자 프롬프트 엔지니어링 실전 가이드

서론: 왜 개발자에게 프롬프트 엔지니어링이 필요한가? 생성형 AI가 코드를 작성하고 버그를 수정하는 시대, 개발자의 역할은 단순히 코드를 '타이핑'하는 것에서 AI와 협업하여 문제를 '설계하고 해결'하는 방향으로 빠르게 진화하고 있습니다. 여기서 가장 중요한 역량으로 떠오른 것이 바로 프롬프트 엔지니어링(Prompt Engineering)

2024년 프론트엔드 생태계 트렌드: 무엇을 배우고 준비해야 할까?

2024년 프론트엔드 생태계 트렌드: 무엇을 배우고 준비해야 할까?

서론: 끊임없이 변화하는 프론트엔드 생태계 웹 개발 분야 중에서도 프론트엔드 생태계는 그 변화의 속도가 눈부시게 빠른 곳입니다. "어제 배운 기술이 오늘 레거시가 된다"는 우스갯소리가 있을 정도로 새로운 프레임워크와 도구들이 끊임없이 쏟아져 나옵니다. 2024년 현재 프론트엔드 개발 트렌드는 단연 **'서버 중심의 렌더링(Server-Side Re

데이터 기반 의사결정과 2024년 빅데이터 분석 트렌드

데이터 기반 의사결정과 2024년 빅데이터 분석 트렌드

서론: "제 생각에는..." vs "데이터를 보면..." 비즈니스 회의에서 가장 위험한 말은 무엇일까요? 바로 "제 생각에는 말이죠..."로 시작하는, 오직 개인의 '직관'이나 '감'에 의존한 주장입니다. 과거에는 경험이 풍부한 리더의 감각이 성공의 열쇠였을지 모릅니다. 하지만 하루가 다르게 시장 상황이 변하고 수많은 변수가 얽혀있는 현대 비즈니스