일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Onehot인코딩
- 캐글데이터분석
- 멋쟁이사자처럼
- 멋쟁이사자처럼 ai school 7기
- 2022 AI 온라인 실무 교육
- 고객데이터분석
- RFM분석
- 소프트맥스함수
- 고객세그먼트
- 딥러닝
- 기초100제
- RFM
- 코드업
- 코드업100제
- AI 데이터 분석 트랙
- OneHotEncoding
- 멋사 ai
- 앨리스
- 데이터분석
- ai school
- 시그모이드함수
- Python
- ai 스쿨 7기
- 데이터분석가
- 머신러닝
- 코딩테스트
- 데이터마케팅분석
- 파이썬
- 코드업 기초100제
- 데이터 분석
- Today
- Total
초봉5센티미터
TIL 15. 의약품처방정보 전처리 본문
국가통계포털 Kosis에서 제공하는 데이터를 이용한 예제 학습
의약품 처방정보
- 의약품처방정보는 국민건강보험 가입자 중 의약품처방이력이 있는 각 연도별 수진자 100만 명에 대한 기본정보(성, 연령대, 시도코드 등)와 의약품처방전별 개별 의약품에 대한 처방내역(요양개시일자, 1회투약량, 1일투약량, 총투여일수 등)으로 구성된 개방데이터입니다.
데이터분석을 위한 라이브러리 로드
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
데이터 요약보기
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 319119 entries, 0 to 319118
Data columns (total 15 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 기준년도 319119 non-null int64
1 가입자 일련번호 319119 non-null int64
2 처방내역일련번호 319119 non-null int64
3 일련번호 319119 non-null int64
4 성별코드 319119 non-null int64
5 연령대코드(5세단위) 319119 non-null int64
6 시도코드 319119 non-null int64
7 요양개시일자 319119 non-null object
8 약품일반성분명코드 319104 non-null object
9 1회 투약량 319119 non-null float64
10 1일투약량 319119 non-null int64
11 총투여일수 319119 non-null int64
12 단가 319119 non-null float64
13 금액 319119 non-null int64
14 데이터 공개일자 319119 non-null object
dtypes: float64(2), int64(10), object(3)
memory usage: 36.5+ MB
데이터 전처리를 하도록 하겠습니다. 데이터전처리는 데이터에 적절한 작업을 함으로써 활용하기
좋은 형태로 변경하는 것입니다. ex) 결측치를 탐색하고 처리, 적절하지 못한 자료형 변경
데이터 전처리를 위해 결측치를 출력하겠습니다.
df.isnull().sum()
기준년도 0
가입자 일련번호 0
처방내역일련번호 0
일련번호 0
성별코드 0
연령대코드(5세단위) 0
시도코드 0
요양개시일자 0
약품일반성분명코드 15
1회 투약량 0
1일투약량 0
총투여일수 0
단가 0
금액 0
데이터 공개일자 0
dtype: int64
결측치 처리에는 평균, 최빈값등으로 대체하거나 결측치를 제거하는 등 여러가지 방법이 있습니다.
이번에는 결측치가 포함된 행을 삭제하도록 하겠습니다.
df = df.dropna()
df.shape
(319104, 15)
위의 info()를 통해 살펴보았을때는 총 319119개의 행이 있었지만 현재는 319104개의 행이 남은것을 알 수 있습니다.
# 지정된 DataFrame의 유일값의 빈도수를 계산합니다.
df.nunique()
기준년도 1
가입자 일련번호 9856
처방내역일련번호 85208
일련번호 18
성별코드 2
연령대코드(5세단위) 18
시도코드 17
요양개시일자 366
약품일반성분명코드 2020
1회 투약량 271
1일투약량 11
총투여일수 172
단가 1882
금액 10987
데이터 공개일자 1
dtype: int64
유니크값의 개수를 세어보면 데이터 공개일자는 1로 하나의 고유한 데이터만을 가지는 것을 알 수있습니다.
따라서 필요없는것으로 판단해 "데이터 공개일자"컬럼을 삭제하겠습니다.
df = df.drop(columns = ["데이터 공개일자"])
dropna = 결축치제거
drop(columns) = 컬럼제거
데이터 타입을 변경하겠습니다 "요양개시일자"는 연-월-일을 나타내는 날짜 데이터이지만
자료형은 int자료형으로 되어있어 datatime을 통해 자료형을 변경해주겠습니다.
df["요양개시일자"] = pd.to_datetime(df['요양개시일자'])
df["요양개시일자"]
0 2020-01-14
1 2020-01-14
2 2020-01-14
3 2020-01-14
4 2020-01-14
...
319114 2020-02-29
319115 2020-02-29
319116 2020-03-05
319117 2020-03-05
319118 2020-03-05
Name: 요양개시일자, Length: 319104, dtype: datetime64[ns]
"요양개시일자"와 "데이터 공개일자"의 데이터 자료형이 datetime64[ns]로 바뀐 것을 확인할 수 있습니다.
날짜형 데이터로 변환하면 시간의 흐름에 따라 분석하거나 시각화하는 것이 더 편리해집니다.
파생변수를 만들도록 하겠습니다.
"시도코드"변수는 숫자로 되어있어 어느 지역인지 알기 어렵기에 문자열 정보로 변환하겠습니다.
- map 메서드를 이용하면 DataFrame의 여러 값을 편리하게 변환할 수 있습니다.
- 여기서 map 메서드란 pandas의 pandas.Series.map을 의미합니다.
- 입력 대응에 따라 Series의 값을 매핑합니다.
- 매핑은 일정한 규칙에 따라 반복 가능한 객체를 변환시키는 것으로 이해하면 됩니다.
- 반복 가능한 객체란 내부적으로 요소를 여러 개 가지고 있어 값을 차례대로 꺼낼 수 있는 객체입니다.
# 해당 데이터에서 사용하는 대한민국 시도코드 정보
city = """11 서울특별시
42 강원도
26 부산광역시
43 충청북도
27 대구광역시
44 충청남도
28 인천광역시
45 전라북도
29 광주광역시
46 전라남도
30 대전광역시
47 경상북도
31 울산광역시
48 경상남도
36 세종특별자치시
49 제주특별자치도
41 경기도"""
city
# 대한민국 시도코드 정보를 python의 dictionary 형태로 변환하겠습니다.
# city를 개행문자를 기준으로 나눈 리스트로 바꿉니다.
# 새로운 dict를 선언합니다.
# for 문을 이용해 리스트 안의 내용을 하나씩 다룹니다.
# 시도코드와 지역 이름이 띄어쓰기를 기준으로 구분되어 있습니다.
# 띄어쓰기를 기준으로 분할하고 앞 단어는 key, 뒤 단어는 value가 되도록 dict에 삽입합니다.
# 최종 dict를 확인합니다.
city_list = city.split("\n")
city_name = {}
for cl in city_list:
key = int(cl.split()[0])
val = cl.split()[1]
city_name[key] = val
city_name
# map 메서드를 이용해 시도코드에 해당하는 시도명을 갖는 변수를 만듭니다.
df['시도명'] = df["시도코드"].map(city_name)
# df["시도명"] = df["시도코드"].replace(city_name)
# df 윗부분 일부 행을 확인합니다.
df[["시도명","시도코드"]].sample(3)
시도명 시도코드
187466 전라남도 46
169859 충청북도 43
18716 경기도 41
* 본 글은 멋쟁이사자처럼 ai school의 수업과 자료를 요약한 내용입니다.
'교육 > 멋쟁이사자처럼 AI School 7기' 카테고리의 다른 글
TIL 17. 머신러닝(1) (0) | 2022.10.24 |
---|---|
TIL 16. 다운캐스팅 (0) | 2022.10.17 |
TIL 14. EDA: KOSIS 데이터 (0) | 2022.10.12 |
TIL 13. 전국 신규 민간 아파트 분양가격 동향 분석 (1) | 2022.10.11 |
TIL 12. 서울시 코로나 발생동향 분석 (1) | 2022.10.06 |