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
'인공지능 대학원 > 데이터분석' 카테고리의 다른 글
Matplotlib / Numpy (0) | 2025.03.31 |
---|---|
빅데이터 산업 이해 (0) | 2025.03.20 |
빅데이터 개념 및 정보통신기술 패러다임 변화 (0) | 2025.03.13 |