열정적인 하루

Aice Associate 분석하기 데이터 국민건강보험공단_건강검진정보_20211229.CSV 본문

IT

Aice Associate 분석하기 데이터 국민건강보험공단_건강검진정보_20211229.CSV

열정샷 2025. 10. 4. 15:28

파일 다운로드 받기 : 국민건강보험공단_건강검진정보_20211229.CSV

 

국민건강보험공단_건강검진정보_20211229.z01
16.00MB
국민건강보험공단_건강검진정보_20211229.zip
15.18MB

 

 


pandas, matplotlib, seaborn 등을 이용해서
기초 데이터 탐색 → 전처리 → 시각화

 

# 1️⃣ 필요한 라이브러리 불러오기
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 그래프 한글 깨짐 방지 (Windows 기준)
plt.rcParams['font.family'] = 'Malgun Gothic'

# 2️⃣ CSV 파일 불러오기
# 파일 경로는 본인 위치에 맞게 수정하세요.
file_path = "국민건강보험공단_건강검진정보_20211229.CSV"
df = pd.read_csv(file_path, encoding='euc-kr')  # 대부분 euc-kr 인코딩

# 3️⃣ 데이터 기본 확인
print("데이터 크기:", df.shape)
print("\n컬럼명 목록:\n", df.columns)
print("\n상위 5행 미리보기:")
print(df.head())

# 4️⃣ 결측치 확인
print("\n결측치 개수 확인:")
print(df.isnull().sum())

# 5️⃣ 기본 통계 요약
print("\n기술통계 요약:")
print(df.describe())

# 6️⃣ 성별 분포 확인
if '성별코드' in df.columns:
    gender_map = {1: '남성', 2: '여성'}
    df['성별'] = df['성별코드'].map(gender_map)
    sns.countplot(x='성별', data=df)
    plt.title("성별 분포")
    plt.show()

# 7️⃣ BMI 관련 분석 (AICE에서 자주 나오는 실습 포인트)
if 'BMI' in df.columns:
    sns.histplot(df['BMI'], kde=True)
    plt.title("BMI 분포")
    plt.show()

    print("\nBMI 평균:", df['BMI'].mean())
    print("BMI 표준편차:", df['BMI'].std())

# 8️⃣ 연령대별 평균 혈압 비교 (예시)
if all(col in df.columns for col in ['연령대코드(5세단위)', '수축기혈압']):
    age_bp = df.groupby('연령대코드(5세단위)')['수축기혈압'].mean()
    age_bp.plot(kind='bar', color='skyblue')
    plt.title("연령대별 평균 수축기 혈압")
    plt.ylabel("혈압(mmHg)")
    plt.xlabel("연령대(5세 단위)")
    plt.show()

 

 

코드 설명 (AICE Associate 스타일)

단계내용AICE 출제 포인트
1️⃣ pandas, matplotlib, seaborn 임포트 데이터 불러오기 및 시각화 기본
2️⃣ CSV 파일 로드 (EUC-KR 인코딩 주의) 파일 입출력, 인코딩 처리
3️⃣ 데이터 크기 및 컬럼 구조 파악 데이터 구조 이해, 탐색적 분석(EEDA)
4️⃣ 결측치 확인 전처리 필수 단계
5️⃣ describe()로 기초 통계 수치형 변수 분포, 이상치 탐색
6️⃣ 범주형 데이터 시각화 (성별) 범주형 변수 탐색
7️⃣ BMI 분포 시각화 및 통계 연속형 변수 분석
8️⃣ 그룹화 후 평균 비교 groupby, 집계함수 사용 — AICE 실습 핵심 포인트

추가 연습 

  1.  
#결측치 처리
df = df.dropna(subset=['BMI']) # BMI 없는 행 제거

#조건 필터링 연습
df_high_bmi = df[df['BMI'] >= 25] print("BMI 25 이상인 인원수:", len(df_high_bmi))

#상관관계 분석
corr = df[['BMI', '수축기혈압', '이완기혈압']].corr() sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title("BMI-혈압 상관관계") plt.show()