반응형
데이터 분석에서 가장 중요한 과정 중 하나는 데이터 전처리입니다.
전처리를 잘하면 데이터의 품질이 올라가고, 분석 결과도 더 정확해집니다.
이번 글에서는 Pandas를 활용하여 데이터를 정리하는 방법을 배워보겠습니다.
1. 데이터 불러오기 및 확인
Pandas는 다양한 데이터 형식을 다룰 수 있습니다.
먼저 CSV 파일을 불러오고 데이터 구조를 확인하는 방법을 알아보겠습니다.
import pandas as pd
# CSV 파일 불러오기
df = pd.read_csv('data.csv')
# 데이터 미리보기
print(df.head()) # 상위 5개 행
print(df.tail()) # 하위 5개 행
# 데이터 정보 확인
print(df.info()) # 컬럼 정보, 데이터 타입, 결측치 확인
print(df.describe()) # 수치형 데이터 요약 통계
2. 결측치 처리 (Missing Values)
2.1 결측치 확인
데이터에는 비어있는 값(결측치)이 있을 수 있습니다.
이를 찾아보겠습니다.
print(df.isnull().sum()) # 컬럼별 결측치 개수 확인
2.2 결측치 제거
결측치가 있는 행을 제거하는 방법입니다.
df_cleaned = df.dropna() # 결측치가 있는 행 삭제
2.3 결측치 채우기
특정 값으로 결측치를 채울 수도 있습니다.
df['나이'].fillna(df['나이'].mean(), inplace=True) # 평균 나이로 채우기
df['도시'].fillna('서울', inplace=True) # 특정 값으로 채우기
3. 데이터 변형 (변수 추가 및 수정)
3.1 새로운 컬럼 추가
df['총점'] = df['국어'] + df['영어'] + df['수학'] # 총점 컬럼 추가
df['평균'] = df['총점'] / 3 # 평균 컬럼 추가
3.2 컬럼 이름 변경
df.rename(columns={'국어': 'Korean', '영어': 'English'}, inplace=True)
3.3 데이터 타입 변환
df['나이'] = df['나이'].astype(int) # float → int 변환
4. 데이터 필터링 (특정 조건 선택)
4.1 특정 컬럼 선택
print(df[['이름', '평균']]) # 특정 컬럼만 선택
4.2 조건을 활용한 데이터 필터링
print(df[df['평균'] >= 80]) # 평균이 80점 이상인 학생
print(df[(df['국어'] > 90) & (df['수학'] > 80)]) # 국어 90점 초과 & 수학 80점 초과
5. 데이터 정렬 및 그룹화
5.1 데이터 정렬
df_sorted = df.sort_values(by='평균', ascending=False) # 평균 점수 기준 내림차순 정렬
5.2 데이터 그룹화
grouped = df.groupby('학교')['평균'].mean() # 학교별 평균 점수 계산
print(grouped)
6. 데이터 저장
처리된 데이터를 파일로 저장할 수 있습니다.
df.to_csv('processed_data.csv', index=False) # CSV 파일 저장
df.to_excel('processed_data.xlsx', index=False) # Excel 파일 저장
결론
- 결측치 처리: dropna(), fillna() 활용
- 데이터 변형: 새로운 컬럼 추가, 컬럼 이름 변경, 데이터 타입 변환
- 데이터 필터링: 특정 컬럼 선택, 조건 기반 필터링
- 데이터 정렬 및 그룹화: sort_values(), groupby() 사용
다음 글에서는 Pandas를 활용한 데이터 시각화를 다뤄보겠습니다!
반응형
'프로그래밍 공부 > pyhton' 카테고리의 다른 글
파이썬 데이터 분석 - Seaborn을 활용한 고급 데이터 시각화 (0) | 2025.03.18 |
---|---|
파이썬 데이터 분석 - Pandas를 활용한 데이터 시각화 (0) | 2025.03.14 |
파이썬 데이터 분석 - NumPy와 Pandas 기초 (0) | 2025.03.13 |
파이썬 고급 - 리스트(List), 딕셔너리(Dictionary), 세트(Set) 활용법 (4) | 2025.01.03 |
파이썬 기초 - 제너레이터(Generators) (1) | 2024.09.13 |