1. 파이썬 예제 코드: Pandas 데이터 분석
1.1. 기초 파이썬 예시 코드 (5개)
Pandas의 핵심 자료구조인 Series와 DataFrame을 만들고 데이터를 선택하는 방법을 익힙니다.
1. Series 생성하기
# 1차원 데이터 구조인 Series를 생성합니다.
import pandas as pd
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print("--- Pandas Series ---")
print(s)
print("\n인덱스 'c'의 값:", s['c'])
2. DataFrame 생성하기
# 2차원 데이터 구조인 DataFrame을 생성합니다. (엑셀 시트와 유사)
import pandas as pd
data = {
'이름': ['인수샘', '홍길동', '구운몽'],
'나이': [30, 25, 28],
'도시': ['서울', '부산', '광주']
}
df = pd.DataFrame(data)
print("--- Pandas DataFrame ---")
print(df)
3. 특정 열(Column) 선택하기
# 열 이름을 사용하여 데이터를 추출합니다.
names = df['이름']
print("이름 열만 추출:")
print(names)
# 여러 열 선택
subset = df[['이름', '도시']]
print("\n이름과 도시 열 추출:")
print(subset)
4. 조건에 맞는 행 필터링
# 나이가 27세 이상인 데이터만 필터링합니다.
older_than_27 = df[df['나이'] >= 27]
print("27세 이상인 사람:")
print(older_than_27)
5. 데이터 요약 통계 확인
# describe() 함수로 수치형 데이터의 통계 정보를 한눈에 확인합니다.
print("데이터 요약 정보:")
print(df.describe())
1.2. 응용 파이썬 예시 코드 (5개)
데이터 정제, 결합, 그룹화 등 실질적인 데이터 가공 기법을 다룹니다.
1. 새로운 열 추가 및 계산
# 기존 데이터를 바탕으로 새로운 열을 생성합니다.
df['내년나이'] = df['나이'] + 1
print(df)
2. 결측치(NaN) 처리하기
# 비어있는 데이터를 찾거나 채워 넣습니다.
import numpy as np
df.loc[1, '도시'] = np.nan # 홍길동의 도시를 결측치로 변경
print("--- 결측치 발생 ---")
print(df)
# 결측치를 '알 수 없음'으로 채우기
df_filled = df.fillna('알 수 없음')
print("\n--- 결측치 채우기 결과 ---")
print(df_filled)
3. 데이터 그룹화 및 집계 (groupby)
# 특정 기준별로 데이터를 묶어 평균이나 합계를 구합니다.
data = {
'부서': ['개발', '기획', '개발', '기획', '인사'],
'급여': [5000, 4000, 5500, 4200, 3800]
}
emp_df = pd.DataFrame(data)
dept_avg = emp_df.groupby('부서')['급여'].mean()
print("부서별 평균 급여:")
print(dept_avg)
4. 데이터 합치기 (merge)
# SQL의 Join과 유사하게 공통 열을 기준으로 합칩니다.
df1 = pd.DataFrame({'이름': ['인수샘', '홍길동'], '성적': [90, 80]})
df2 = pd.DataFrame({'이름': ['인수샘', '홍길동'], '출석': [100, 95]})
merged = pd.merge(df1, df2, on='이름')
print("데이터 병합 결과:")
print(merged)
5. CSV 파일 읽기 및 저장
# 데이터프레임을 CSV 파일로 저장
df.to_csv('my_data.csv', index=False, encoding='utf-8-sig')
# CSV 파일 불러오기
new_df = pd.read_csv('my_data.csv')
print("불러온 데이터:")
print(new_df.head())
1.3. 심화 파이썬 예시 코드 (4개)
고급 데이터 변형 및 분석 기법입니다.
1. 데이터 재구조화 (Pivot Table)
# 복잡한 데이터를 요약하여 표 형태로 재구성합니다.
data = {
'날짜': ['1일', '1일', '2일', '2일'],
'도시': ['서울', '부산', '서울', '부산'],
'온도': [25, 28, 26, 29]
}
df = pd.DataFrame(data)
# '도시'를 행으로, '날짜'를 열로 하여 '온도' 값을 보여주는 피벗 테이블
pivot = df.pivot_table(index='도시', columns='날짜', values='온도')
print("피벗 테이블 결과:")
print(pivot)
2. 함수 적용하기 (.apply())
# 행이나 열 단위로 복잡한 계산을 일괄 적용합니다.
df = pd.DataFrame({'점수1': [80, 90, 70], '점수2': [85, 95, 75]})
# 최댓값을 구하는 함수 적용
df['최고점수'] = df.apply(lambda row: max(row['점수1'], row['점수2']), axis=1)
# 평균 구하기
df['평균점수'] = df.apply(lambda row: (row['점수1'] + row['점수2']) / 2, axis=1)
print(df)
3. 고유값 확인 및 빈도수 세기
survey = pd.Series(['좋음', '보통', '좋음', '나쁨', '좋음', '보통'])
print("고유값 종류:", survey.unique())
print("\n값별 빈도수:")
print(survey.value_counts())
4. 인덱스 초기화 및 정렬
df = pd.DataFrame({'점수': [70, 95, 80]}, index=['다', '가', '나'])
# 인덱스 기준 정렬
print("인덱스 정렬:")
print(df.sort_index())
# 값 기준 정렬
print("\n점수 기준 내림차순 정렬:")
print(df.sort_values(by='점수', ascending=False))