본문 바로가기

인공지능 대학원/데이터분석

Pandas: 데이터 분석 라이브러리 정리

 

Pandas: 데이터 분석 라이브러리 정리

1. Pandas 개요

Pandas는 데이터 분석을 위한 Python 라이브러리로, NumPy 기반에서 동작하며, Series 객체DataFrame 객체를 활용하여 데이터를 효율적으로 다룰 수 있다.

NumPy와의 관계

  • NumPy: 배열 연산을 위한 라이브러리 (고속 연산 가능)
  • Pandas: 데이터 분석을 위한 라이브러리 (테이블 형태의 데이터 처리)

2. Pandas의 주요 객체

(1) Series 객체

  • 각 열(column)을 다루는 객체 (세로 방향)
  • NumPy 배열의 하위 클래스이며, 데이터 인덱스를 포함함
  • Feature Vector(피처 벡터)와 유사한 개념
  • 인덱스(index) 값은 중복 가능하며, 정렬될 필요 없음

Series 객체 생성 예제

import pandas as pd

data = [10, 20, 30, 40]
index_labels = ['a', 'b', 'c', 'd']

series = pd.Series(data, index=index_labels)
print(series)

출력:

a    10
b    20
c    30
d    40
dtype: int64

Series 객체의 주요 속성

  • .values → 실제 데이터 값 (NumPy 배열 타입)
  • .dtype → 데이터 타입 확인
  • .index → 인덱스 값 확인
  • .name → Series 객체의 이름 설정 가능
print(series.values)  # [10 20 30 40]
print(series.dtype)   # int64
series.name = "Example Series"
print(series)

(2) DataFrame 객체

  • 데이터 테이블 전체를 나타내는 객체 (2차원)
  • NumPy의 2D 배열과 유사
  • 행(row)과 열(column)으로 구성됨
  • pd.DataFrame()을 사용하여 생성 가능

DataFrame 생성 예제

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['Seoul', 'Busan', 'Incheon']}

df = pd.DataFrame(data)
print(df)

출력:

     Name  Age     City
0   Alice   25   Seoul
1     Bob   30   Busan
2  Charlie   35  Incheon

DataFrame 주요 속성

  • .columns → 열 이름 확인
  • .index → 인덱스 값 확인
  • .shape → 데이터프레임 크기 확인 (행, 열)
  • .info() → 데이터 정보 출력
  • .describe() → 수치형 데이터에 대한 요약 통계 제공
print(df.columns)  # Index(['Name', 'Age', 'City'], dtype='object')
print(df.index)    # RangeIndex(start=0, stop=3, step=1)
print(df.shape)    # (3, 3)
print(df.info())   # 데이터 요약 정보 제공
print(df.describe())  # 수치형 데이터 통계 요약

3. 데이터 읽기 및 저장

(1) CSV 파일 읽기

Pandas는 read_csv() 함수를 사용하여 CSV 파일을 읽어올 수 있음.

df = pd.read_csv("data.csv", sep=",", header=0)
  • sep="," → 구분자 설정 (기본값은 ,)
  • header=0 → 첫 번째 행을 컬럼 이름으로 사용 (기본값)
  • header=None → 컬럼 이름 없이 읽기

(2) Excel 파일 읽기

Pandas는 read_excel()을 사용하여 Excel 파일을 읽을 수 있으며, openpyxl 모듈이 필요함.

!pip install openpyxl
df = pd.read_excel("data.xlsx")

4. 데이터 선택 및 추출

(1) 특정 열(column) 선택

print(df["Name"])  # Series 객체 반환
print(df[["Name", "Age"]])  # DataFrame 객체 반환

(2) 특정 행(row) 선택

print(df.iloc[0])  # 0번째 행 선택 (index-based)
print(df.loc[0])   # 0번째 행 선택 (label-based)

(3) 행과 열을 동시에 선택

print(df.loc[0, "Name"])  # 0번째 행의 'Name' 열 값 가져오기
print(df.iloc[0, 1])  # 0번째 행의 1번째 열 값 가져오기

(4) 특정 조건을 만족하는 데이터 추출

df_filtered = df[df["Age"] > 25]  # Age가 25보다 큰 행만 선택
print(df_filtered)

5. 데이터 수정 및 삭제

(1) 열(column) 추가

df["Salary"] = [50000, 60000, 70000]

(2) 열(column) 삭제

df.drop("Salary", axis=1, inplace=True)  # 열 삭제

(3) 행(row) 삭제

df.drop(0, axis=0, inplace=True)  # 0번째 행 삭제

6. 데이터 변환 및 전처리

(1) 결측치(NaN) 처리

  • .isnull() → 결측치 확인
  • .fillna() → 결측치 대체
  • .dropna() → 결측치 제거
df.fillna(0, inplace=True)  # 결측치를 0으로 채우기
df.dropna(inplace=True)  # 결측치가 있는 행 삭제

(2) 데이터 형 변환

df["Age"] = df["Age"].astype(float)  # Age 컬럼을 float 타입으로 변환

(3) 행렬 변환 (Transpose)

df_transposed = df.T  # 행과 열을 바꿈
print(df_transposed)

7. 데이터 요약 및 통계

(1) 기초 통계

print(df.describe())  # 수치형 데이터 요약 통계

(2) 그룹화 (groupby)

df.groupby("City")["Age"].mean()  # 도시별 평균 나이 계산

8. loc vs iloc 차이

함수 설명 예제

.loc[] 이름 기반 인덱싱 (index label 사용) df.loc[2, "Age"]
.iloc[] 숫자 기반 인덱싱 (index 번호 사용) df.iloc[2, 1]

9. Import 방식 비교

import pandas as pd  # 전체 모듈 가져오기
from pandas import DataFrame  # 특정 객체만 가져오기
  • import pandas as pd → Pandas 전체 기능 사용 가능 (pd.DataFrame())
  • from pandas import DataFrame → 특정 기능만 사용 가능 (DataFrame())

10. 정리

  • Pandas는 데이터 분석을 위한 강력한 라이브러리
  • Series: 단일 열 데이터를 다룸
  • DataFrame: 2차원 테이블 구조 데이터
  • read_csv(), read_excel() 등으로 외부 데이터 불러오기 가능
  • loc[], iloc[]을 활용한 데이터 선택 가능
  • 결측치 처리, 데이터 변환, 그룹화 등의 기능 제공

 

728x90