Pandas for Data Wrangling
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
- 데이터 분석, 데이터 과학, 비즈니스 분석가 등 데이터를 다루는 전문가
- 초보자부터 중급자까지 Pandas 기초부터 고급 기능까지 이해 가능
- 난이도: 중급 수준 (기본 파이썬 지식 필요)
핵심 요약
- DataFrame과 Series는 Pandas의 핵심 객체로,
DataFrame
은 2D 테이블,Series
는 1D 라벨 배열 - 데이터 로딩:
read_csv
,read_excel
등을 통해 파일에서 데이터를 쉽게 불러올 수 있음 - 데이터 조작:
loc
,iloc
로 라벨/인덱스 기반 선택,groupby
로 집계,fillna
으로 누락값 처리 - 성능 최적화: 벡터화 연산이
apply
보다 빠름,agg
으로 복수 집계 함수 적용 가능
섹션별 세부 요약
1. DataFrame과 Series 소개
DataFrame
은 스프레드시트 또는 SQL 테이블과 유사,Series
는 단일 열로 구성됨DataFrame
생성 예시:
```python
sales = pd.DataFrame({'Units Sold': [25, 42], 'Returns': [3, 1]})
```
Series
생성 예시:
```python
pd.Series(['North', 'South', 'West'], name='Direction')
```
2. 데이터 로딩
read_csv
사용 시sep
,index_col
,dtype
등 옵션을 통해 설정 가능- 예시:
```python
pop = pd.read_csv('data/world_population.csv')
print(pop.shape) # (235, 5)
```
3. 데이터 선택 및 필터링
- 브라켓 접근:
employees['Salary']
로 열 선택 - iloc: 인덱스 기반 선택 (예:
employees.iloc[2, 1]
) - loc: 라벨 기반 선택 (예:
employees.loc['Ben', ['Department', 'Salary']]
) - 부울 마스크:
```python
high_paid = employees[employees['Salary'] >= 70_000]
```
4. 데이터 변환 및 집계
- 벡터화 연산:
employees['Salary_2026'] = employees['Salary'] * 1.05
- groupby:
```python
employees.groupby('Department')['Salary'].mean()
```
- agg:
```python
employees.groupby('Department')['Salary'].agg(['count', 'min', 'median', 'max'])
```
5. 누락값 및 데이터 타입 관리
- 누락값 처리:
isnull()
,notnull()
,fillna()
사용 - 데이터 타입 변경:
astype()
으로int64
등으로 변환 가능 - 예시:
```python
employees['Salary'] = employees['Salary'].astype('int64')
employees['Years'] = employees['Years'].fillna(0)
```
6. 데이터셋 결합
- concat: 동일한 열/인덱스를 가진 DataFrame 병합
- join: 인덱스 기반 왼쪽/오른쪽 조인
- merge: SQL 스타일의 키 기반 합병
- 예시:
```python
all_sales = pd.concat([q1, q2], ignore_index=True)
```
결론
- 벡터화 연산을 사용해 성능 최적화하고, loc/iloc의 차이를 명확히 이해해야 함
- groupby + agg을 활용해 복잡한 집계 작업 수행, merge보다 concat의 사용 시 주의 필요
- 누락값 처리와 데이터 타입 관리는 실무에서 필수 단계로,
fillna()
및astype()
을 적극 활용하세요.