2026/07/03 FRI. |
|
| O | |
| O | ● 데이터 전처리 |
※ 한 주 마무리 ※
내가 조에 딱히 도움되지는 않는 거 같지만
어떤 사안에 대해 다같이 의견을 내고 조율을 하고
팀원 모두가 참여하는 현재 상황이 꽤 좋다
프로젝트 자체는,,, 어렵다,,, 맨날 길을 잃는다,,,,
⊙ ERP 정보관리사_생산 1급
- 공인민간자격증 / 자재 소요 계획(MRP), 싱산 공정 관리, 재고 관리 등 모듈 기능을 ERP 시스템에 대한 자격증
혹시 모르잖아,,, 제약회사도 제조업이니까 생산 공정 관리, 재고 관리 필요할 수도 있으니;;;
⊙ 최종 프로젝트 - 데이터 전처리
0. 전날 진행한 전처리
① `suspect_drug`기준 한국 일반의약품(OTC) 데이터 분리
② 라니티딘 제거 : 현재 사용되지 않는 성분
③ 그룹화 (계열 대분류 기준)
소화기·위산억제제·지사제 / 해열·진통제 / 알레르기약·항히스타민제
④ 마약성·통제성 의약품 제거
24,892행(건) 남음
→ ⑤ FDA OTC 기준과 대조하여 필터링
1. FDA OTC 기준과 대조하여 필터링
suspect_drug 컬럼 - 성분을 활용해 일반의약품(OTC)만 분리한 데이터를
FDA OTC 기준 = OTC Monographs 대조를 통한 필터링하면 된다고 생각했다 그러나 용량, 제형으로 OTC를 정밀하게 나눌 수 없으며 OTC Monographs만으로 OTC/전문 규격·제형 중복을 정밀하게 나눌 수 없다는 의견에 팀원 모두의 생각이 도달했다
| OTC Monographs https://www.accessdata.fda.gov/scripts/cder/omuf/index.cfm?event=monographsearch |
2. FDA OTC 분류 기준 - OTC 모노그라프 + NAD/ANDA 전환 : OrangeBook
○ "OTC 모노그라프" 1972년 이전부터 사용된 성분 카테고리별 승인 기준
○ "NAD/ANDA OrangeBook" 처방약에서 OTC로 전환된 성분 목록
○ 모노그라프 + 오렌지북 정보를 교차 검증하여 OTC 데이터 필터링
→ 성분을 이용한 필터링
+ 브랜드명으로 확인할 수 있는 OTC 구체화
○ 팀원 각각 LLM을 통해 OTC 필터링하여 csv 파일을 LLM에 비교 검증을 맡겨 가장 좋은 csv 파일과 근거를 찾음
- 처방약 리포트가 섞여있는 경우
- PPI(esomeprazole 등), 라니티딘(철수약)이 섞여 있는 경우
528,000 → 20,355 필터링
3. 일반의약품 ATC 그룹화
○ (의료지식이 없는 일반) 소비자에게 의약품 성분명은 생소할 것이므로 WHO ATC 분류 그룹화 후 이해도를 높일 수 있도록 용어를 풀어서 서비스 제공하기 위한 그룹화
○ WHO ATC 코드 분류 : 의약품 성분을 코드 별 특징을 쉽게 보여줄 수 있고 그룹화에 대한 신뢰도를 가질 수 있음
| 약학정보원 - ATC 코드 https://health.kr/searchDrug/ATCcode.renewal.asp |
| WHO ATC Index https://atcddd.fhi.no/atc_ddd_index/ |
○ 20,355 데이터의 의약품을 ATC 5단계 코드 분류 후 1단계 코드로 줄여 그룹화
: 1단계는 알파벳 대문자로 표기하며 직관적으로 이해할 수 있는 계열로 분류되어 있음
데이터 수가 많은 A>N>M>R 위주의 데이터 분석 예정
4. 추가 전처리
- 중복값 없음
- 필요없는 컬럼 제거
report_age_days : 보고서 접수 후 경과 일수
year / month : 보고 연도, 월 대신 보고 분기를 사용할 예정report_id : FDA 고유 식별자 삭제하려했으나 중복값 문제로 하지 않음 - 결측치 : 유지
FAERS(FDA 의약품 부작용 보고)이기에 결측치에서 얻을 수 있는 정보와 통계량이 있을 거라 판단 - 이상치 처리 = 오늘의 난관
| ○ 부작용 데이터의 이상치(극단값)는 중증 사례, 과다 복용, 고령/취약 환자군으로 발생할 수 있어 데이터 오류라 단정지을 수 없음 |
| ○ 처리 불가능한 값 출생 체중 최저치(0.4kg)에도 미치지 못하는 몸무게 존재 → 삭제 |
| ○ num_drugs 이상치 환자가 복용한 총 약물 수라고 알고 있었지만 극단값(=이상치)이 몇 있다 middle : 8인데 max 2,108 / 그 외에도 637,656,1027,1066이라는 값이 있음 환자가 복용한 총 약물 수 컬럼인데 max가 2,108?? 도저히 이해할 수 없는 값이다 환자가 복용한 총 약물수 컬럼이 아닌가? 싶어 FDA 데이터를 확인했으나 num_drugs라는 컬럼 자체가 존재하지 않았다 → 우리가 사용하는 데이터는 어느 정도 가공되어 kaggle에 기재된 데이터 → 이상치 처리 예정 원본 데이터 https://open.fda.gov/apis/drug/event/ https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers/data |
5. 중간 보고서
1. 프로젝트 개요
- 프로젝트 이름: 의약품 이상 사례를 활용한 정보 격차 해소
- 분석 목적:특히 환자 특성 (체성분 데이터를 활용)을 기반으로 일반의약품의 안전성 정보를 소비자 친화적으로 제공하여 의약품 정보 격차를 줄이고자 한다.
- FDA 이상사례 보고 데이터를 활용하여 일반 소비자가 이해하기 어려운 의약품 이상 반응 중 일반의약품 이상반응 정보의 분류.요약을 통해 주요 이상사례 경향을 파악하는 것을 목적으로 한다.
- 데이터 출처: https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers
- 분석 대상 및 범위: FDA 이상사례 보고 데이터 중 일반의약품 데이터를 대상으로 분석
- 예상 결과물:
- 인사이트 요약: 일반의약품군별로 자주 보고되는 이상반응, 중증 이상사례 비율이 높은 약물군, 특정 연령대·성별에서 주의가 필요한 이상사례 특징 도출
- 대시보드 구성: 일반 소비자가 이해하기 쉽도록 약물군별 주요 이상반응과 복용 시 주의사항을 정리한 의약품 안전정보 카드 및 대시보드 구성
- 보고서 및 발표 자료: 분석 결과를 요약한 프레젠테이션 자료와 PDF 보고서
2. 데이터 개요
- 데이터셋 설명
- 데이터 수집 방법: kagle 서치
- 데이터셋의 크기: 데이터 개수 : 528,000 컬럼 수 : 30
- 주요 변수 및 설명:

3. 탐색적 데이터 분석(EDA)
- 기술 통계 분석
- ATC 기준 코드 중 분석에 사용할 코드별 데이터 수A - 소화기계/대사 9,667
N - 신경계 5,689 M - 근골격계 2,211 R - 호흡기계 1,996 - 전처리 후 컬럼 수 : 27
- 총 데이터 수 : 20,355
- ATC 기준 코드 중 분석에 사용할 코드별 데이터 수A - 소화기계/대사 9,667
- 패턴 및 트렌드
- 같이 복용하는 약물의 수가 많을 수록 심각한 부작용(사망,입원,생명위협,장애)의 빈도가 높음을 확인
- 연도 또는 분기별 이상사례 보고 건수 변화를 분석하여 특정 시기에 보고가 증가하거나 감소하는 경향이 있는지 확인
- WHO ATC 분류별로 이상사례 보고 건수를 비교하여 어떤 약물군에서 보고가 많이 발생하는지 확인
- 약물군별 중증 이상사례 비율, 입원 비율, 사망 비율을 비교하여 단순 보고 건수와 위험도가 같은 방향으로 나타나는지도 확인
- 각 계열마다 생체적특성 (나이,성별)에 따른 주요 부작용 증상이 다름
- 주요 인사이트 도출
- WHO ATC 기준 분류 A: 소화관 및 대사, N: 신경계, M: 근골격계, R: 호흡기계 약물군의 보고 건수가 많게 나타남
- 단순 보고 건수가 많은 약물군이 반드시 더 위험하다고 단정할 순 없으므로, 중증이상사례 비율과 함께 분석해야함
- 전체 보고 건수 중 여성 보고 건수 대비 남성의 보고 건수가 많아서 남성의 부작용 발생 비율이 높게 보고될 수 있음: A약물에서 남성의 부작용 건수가 많다고 A약물은 남성이 더 위험으로 단정할 수 없음
4 현재 진행 상황
- 진행한 작업
- https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers 데이터 확인 및 이해
- 비 의료인을 대상으로 한 정보 격차 감소 목적 설정
- 데이터 전처리
- FDA 기준 suspect drug 값에서 일반의약품으로 판매되는 데이터만 필터링1972년 이전부터 사용된 성분을 카테고리별로 승인한 정보 (OTC 모노그래프) + 처방약에서 OTC로 전환된 성분 목록이 포함된 정보 (오렌지북)을 사용
- OTC 성분 필터링 구체화
- → OTC 모노그래프 + 오렌지북 (NDA 경로) 를 통한 일반의약품 필터링
- WHO ATC 코드를 이용하여, 어떤 계열의 약물인지 그룹화
- (5단계 코드 매칭 후, 1단계 코드만 남기는 방식)
- → 각 코드에 따라 분석하여 일반 소비자들의 이해가 수월하도록 (설명이 용이하도록)
- 중복값 없음, report_age_days, year, month 컬럼 제거 (다른 컬럼 정보와 중복)
- 결측치 유지 -
- FAERS는 보고 시스템이라 결측 자체가 구조적 특성을 가지기 때문에, 결측치에서 얻을 수 있는 정보와 통계량이 있을 것이라 판단하여 유지
- 이상치 처리 -추가적으로, 생물학적으로 불가능한 값 처리→ num_drugs 이상치 처리
- → 출생체중 최저치(약 0.4kg)에도 미치치 못하는 몸무게 데이터 존재, 삭제
- 부작용 데이터에서 극단값 (이상치) 은 중증 사례, 과다복용, 고령/취약 환자군으로 인해 발생하는 경우가 많고, 데이터 오류라고 판단할 수 없음
- 해결된 문제
- 일반의약품으로 판매되는 데이터를 필터링하기 위해, OTC 모노그래프 +
- 오렌지북을 이용한 다중 정보 수집 및 크롤링
- WHO ATC 코드를 활용하여 데이터 그룹화 및 설명 용이
- 중복값 / 결측치 / 이상치 처리
- 진행 중 문제
- 데이터 이해 단계와 구체적인 목표 설정 단계의 반복적인 수정으로 인한 더딘 진행속도
- : 데이터 전처리 완료 후 다음 단계에서 속도를 내야할 것 같음
- 머신러닝 목적 명확화 필요
- : 머신러닝 모델을 이용하여 어떤 정보를 얻을 수 있을까?
5. 다음 단계 기획
- 추가로 분석할 내용
- 성별,연령대별 이상사례 차이 분석
- 시계열 분석을 통한 추세 확인
- ATC 코드 별 분석
- 각 시각화 자료에 따른 통계 분석
- 예상 일정
- 7/6 전처리 완료 및 시각화 / 통계 분석 진행
- 7/10(금) 까지 시각화 / 통계 인사이트 1차 정리
- 부작용 예측 베이스라인 모델 선정 회의
'★ 최종 프로젝트 - FDA 이상반응 데이터 활용한★' 카테고리의 다른 글
| [QA/QC_5기] 84일차 - 최종 프로젝트 +11 : 시각화 · 통계 분석 Ⅱ | 대시보드 구상 Ⅱ (1) | 2026.07.22 |
|---|---|
| [QA/QC_5기] 83일차 - 최종 프로젝트 +10 : 전처리 완료 | 시각화 · 통계 분석 Ⅰ | 대시보드 구상 Ⅰ (0) | 2026.07.22 |
| [QA/QC - 5기] 81일차 - 최종 프로젝트 +08 : 전처리 - 한국OTC vs FDA OTC (1) | 2026.07.02 |
| [QA/QC - 5기] 80일차 - 최종 프로젝트 +07 : 일반의약품(OTC) (0) | 2026.07.01 |
| [QA/QC - 5기] 79일차 - 최종 프로젝트 +06 : 목표 구체화 / 크롤링 (0) | 2026.07.01 |