Data Analysis

Medical Insurance 비용 변화 분석 - Python(Strings)

hyungminjeon 2025. 4. 13. 15:46

 

이 프로젝트는 의사로서 환자 정보를 보다 쉽게 확인하고, 보험 비용을 계산하기 위해 데이터를 정제하는 시나리오로 구성되어 있다. 주된 목표는 Python의 문자열 함수들을 활용해 데이터를 구조화하고 분석이 가능한 형태로 만드는 것이다.

 

 

 

1. 원시 데이터 확인 및 기호 정리

먼저 하나의 문자열에 저장된 의료 기록을 확인한다. 이 데이터는 이름, 나이, BMI(체질량지수), 보험 비용을 포함하며 각 사람의 정보는 ;로 구분되어 있다. 보험 비용 앞에는 # 기호가 붙어 있으므로 이를 $로 대체하여 미국 통화 형식으로 변경한다.

updated_medical_data = medical_data.replace("#", "$")

2. 의료 기록 수 세기

$ 기호를 기준으로 몇 명의 환자 정보가 있는지 파악한다. for 반복문을 통해 등장 횟수를 세고, 이를 num_records 변수에 저장한다. 

num_records = 0
for data in updated_medical_data:
    if data == "$":
        num_records += 1

3. 문자열 분리 및 리스트화

전체 문자열 데이터를 ; 기준으로 나누어 각각의 환자 정보로 분할하고, 다시 , 기준으로 세부 정보를 나눈다. 이는 분석을 위해 데이터를 구조화하는 핵심 단계이다.

medical_data_split = updated_medical_data.split(';')
medical_records = [record.split(',') for record in medical_data_split]

4. 데이터 클렌징: 공백 제거

각 정보 항목에는 불필요한 공백이 포함되어 있다. 이를 strip() 함수를 통해 제거하여 깔끔한 데이터 구조를 만든다.

medical_records_clean = []
for record in medical_records:
    record_clean = [item.strip() for item in record]
    medical_records_clean.append(record_clean)

5. 이름 출력 및 대문자 변환

정제된 데이터에서 환자 이름만 출력하고, 모두 대문자로 변환하여 일관된 형식을 유지한다.

for record in medical_records_clean:
    print(record[0].upper())

6. 항목별 리스트 분리

데이터 분석을 위해 이름, 나이, BMI, 보험 비용을 각각의 리스트로 분리한다.

names, ages, bmis, insurance_costs = [], [], [], []
for record in medical_records_clean:
    names.append(record[0])
    ages.append(record[1])
    bmis.append(record[2])
    insurance_costs.append(record[3])

7. BMI 평균 계산

bmis 리스트의 값을 float으로 변환하여 총합을 구하고, 평균을 계산한다.

total_bmi = sum([float(bmi) for bmi in bmis])
average_bmi = total_bmi / len(bmis)
print("Average BMI: {average_bmi}".format(average_bmi=average_bmi))

8. 추가 분석: 보험 비용 평균 및 상세 출력

$ 기호를 제거한 후 보험 비용의 평균을 계산하고, 각 환자의 정보를 요약 문장으로 출력한다.

new_insurance_costs = [float(cost[1:]) for cost in insurance_costs]
average_insurance_cost = sum(new_insurance_costs) / len(new_insurance_costs)
print("Average insurance cost is {average_insurance_cost}".format(average_insurance_cost=average_insurance_cost))

for i in range(len(names)):
    print("{name} is {age} years old with a BMI of {bmi} and an insurance cost of ${insurance_cost}"
          .format(name=names[i], age=ages[i], bmi=bmis[i], insurance_cost=new_insurance_costs[i]))

결론

이번 프로젝트를 통해 문자열의 조작, 데이터 클렌징, 리스트 처리, 그리고 간단한 분석까지 Python으로 수행하는 방법을 배웠다. 특히 데이터 과학에서 중요한 전처리(Preprocessing) 단계의 기본 개념을 이해하는 데에 도움이 된다. 실제 현업에서도 비정형 데이터를 정제하여 분석 가능한 형태로 만드는 것은 매우 중요한 작업이다.