Загружаем каталог…
Загружаем каталог…
코드잇 데이터분석가 부트캠프를 통해 배우고 느낀 것을 적습니다. 강의/미션/위클리페이퍼/프로젝트로 나누어 작성합니다. 📅 2026.05.21 | 🗺️ 과정: 1개월차 ▓░░░░░░ | 📖 커리큘럼: 미션 4 큰 데이터를 처음부터 끝까지 탐색하며, 그래프가 그려졌다고 분석이 맞는 것은 아니라는 것을 확인한 하루였다. 🗓️ 오늘의 일정 교시 시간 내용 1~3교시 09:00~12:00 미션 진행, 정리와 시각화 4~7교시 13:00~17:00 미션 마무리, 제출, 해설 강의 8~9교시 17:00~19:00 해설과 내 코드 비교, 자습 미션 4는 하루에 끝나서, 진행한 과정부터 해설 비교까지 오늘 한 편에 모두 적는다. 1️⃣ 오늘 진행한 일 어제 배운 EDA 흐름을 큰 규모의 건강검진 데이터에 처음부터 끝까지 적용하는 미션이었다. 데이터를 불러오고 구조와 컬럼 의미를 확인하는 연습 결측치와 이상치, 중복값을 확인하고 처리하는 연습 코드로 적힌 값을 이름표로 바꾸고, 수치형과 범주형의 기술통계를 확인하는 연습 분포, 변수 간 관계, 연령대별 차이, 성별에 따른 생활습관을 시각화하는 연습 체중과 신장으로 새 지표를 만들고, 그 지표를 기준으로 집단을 비교하는 연습 마지막으로 자유롭게 탐색하는 심화 과제 미션에는 탐색하며 알아낸 내용을 보고서로 정리하는 단계도 함께 안내되어 있었다. 2️⃣ 내가 진행한 과정 2-1. 불러오고, 의미를 먼저 확인했다 🛠️ 무엇을 했나. 한글 글꼴을 설치하고 설정하는 셀을 먼저 실행한 뒤, 드라이브를 연결해 파일을 인코딩을 지정해서 불러왔다. 행과 열의 수, 컬럼 이름, 정보 요약을 차례로 확인했다. 숫자로 저장되어 있지만 의미가 범주인 컬럼은 복사본을 만들어 범주형으로 바꾸었다. 성별, 연령대, 청력, 흡연, 음주 컬럼이 여기에 해당한다. 💭 어제 배운 "숫자라고 다 숫자가 아니다"를 바로 써 볼 수 있어서 뿌듯했다. 다만 지역 코드는 범주형 목록에서 빠뜨렸다는 것을 나중에 알았다. 2-2. 결측치를 확인하고 채웠다 🛠️ 무엇을 했나. 컬럼별 결측 개수를 센 뒤, 불리언의 평균이 비율이 된다는 힌트를 이용해 비율도 퍼센트로 확인했다. 결측이 하나라도 있는 행의 수도 따로 세었다. 채울 때는 숫자형 컬럼을 하나씩 돌며 중앙값으로, 범주형 컬럼을 하나씩 돌며 최빈값의 첫 번째 값으로 채웠다. 💭 비율을 보니 결측이 가장 많은 컬럼도 전체에서 아주 작은 부분이라는 것을 알았고 마음이 놓였다. 한편 같은 셀을 복사해서 고쳐 가며 실행하다 보니 비슷한 코드가 여러 셀에 남아서 어느 셀이 최종인지 헷갈렸다. 2-3. 이상치를 확인하고 지웠다 🛠️ 무엇을 했나. 허리둘레, 수축기혈압, 식전혈당의 히스토그램을 한 줄에 세 개로 그리고 기술통계를 확인했다. 이후 키, 체중, 허리둘레, 시력, 혈압, 혈당 컬럼마다 상식적으로 불가능한 범위를 직접 정해서 그 밖의 값이 있는지 먼저 확인했다. 그다음 IQR 경계를 계산해서 경계 밖의 행을 삭제했다. 여덟 개 컬럼을 하나의 반복문에 넣어 차례로 삭제했다. 같은 셀을 다시 돌렸더니 이상치 개수가 모두 영으로 나와서 삭제가 적용된 것을 확인했다. 💭 상식 범위를 컬럼마다 따로 정하는 일이 생각보다 어려웠다. 그리고 반복문 한 번으로 여덟 개 컬럼을 연달아 지우니 행이 눈에 띄게 줄어서, 너무 많이 지우는 것은 아닌지 불안했다. 2-4. 중복을 확인하고 이름표를 붙였다 🛠️ 무엇을 했나. 중복은 안내된 순서대로 여부 확인, 개수 확인, 중복 행 확인, 제거, 인덱스 정리, 크기 확인을 차례로 했고, 중복 개수는 영이었다. 지역 코드와 연령대 코드는 제공된 매핑표를 이용해 새 컬럼으로 바꿨다. 성별 매핑표는 직접 만들어서 같은 방식으로 이름표 컬럼을 붙였다. 💭 중복이 없다는 결과를 보고 허무했지만, 없다는 것을 확인하는 것도 분석의 일부라고 생각했다. 2-5. 기술통계를 보고 분포를 그렸다 🛠️ 무엇을 했나. 숫자형 컬럼만 골라 기술통계를 출력하고, 범주형 컬럼은 반복문으로 컬럼마다 빈도를 출력했다. 이어서 수축기혈압, 신장, 체중, 허리둘레의 히스토그램을 그리고, 신장은 성별로 색을 나누어 다시 그렸다. 색과 테두리를 바꿔 보기도 했다. 체중과 혈압의 성별 비교는 같은 방식으로 반복했고, 박스플롯과 바이올린 플롯도 연습 삼아 시도했다. 그래프마다 아래에 해석을 주석으로 적었다. 💭 그래프를 그리고 곧바로 해석 한두 줄을 적는 습관이 생겨서 만족스러웠다. 다만 바이올린 플롯 셀은 제목과 코드의 대상 변수가 달랐는데, 주석의 해석도 그대로 이어졌다. 2-6. 변수 사이의 관계를 확인했다 🛠️ 무엇을 했나. 그래프에 쓸 표본을 뽑는 셀까지 만들었지만 실제 그래프를 그리는 코드는 주석으로만 남아 있다. 상관계수는 네 개 변수를 골라 계산하고 히트맵으로 그렸다. 체중과 허리둘레의 관계가 가장 강하게 나타났다. 💭 상관 그래프를 반만 완성한 채 지나간 것이 아쉬웠다. 히트맵으로는 강도를 확인했지만 점들이 어떤 모양인지는 보지 못했다. 2-7. 연령대별 차이와 성별 생활습관을 비교했다 🛠️ 무엇을 했나. 연령대별로 평균을 구해 신장, 체중, 허리둘레, 혈압을 막대그래프로 그리고 각각 해석을 적었다. 성별에 따른 흡연과 음주는 교차표로 개수와 비율을 만들고 누적 막대그래프로 나타냈다. 흡연은 남성이 과거와 현재를 합쳐 훨씬 높았고, 음주도 남성이 더 높았다. 💭 교차표에서 비율로 바꾸니 인원수 차이에 가려져 있던 모습이 보였다. 다만 흡연은 원본 표로, 음주는 정리한 표로 그리는 식으로 서로 다른 데이터를 섞어 썼다는 점이 걸린다. 2-8. BMI를 만들고 집단을 비교했다 🛠️ 무엇을 했나. 체중을 신장 제곱으로 나누어 BMI 열을 만들고, 구간을 나누는 함수로 저체중, 정상 체중, 과체중, 비만 열을 만들었다. 그 뒤 BMI 분포, 성별 비교, 연령대별 평균과 비만도 비율, BMI와 다른 지표의 산점도와 상관 히트맵, 비만도별 흡연과 음주 비교까지 이어서 그렸다. 연령대별 해석에는 BMI가 나이가 들수록 올라간다고 적었고, 흡연은 비만일수록 비흡연이 늘어난다고 적었다. 💭 그래프가 계속 그려지니 잘 되고 있다고 믿었다. 해석 문장도 그럴듯하게 이어져서 의심하지 않았다. 2-9. 마지막 심화 과제는 비어 있다 🛠️ 무엇을 했나. 자유롭게 탐색하는 마지막 심화 과제에는 손을 대지 못했다. 💭 시간이 다 되어서 비워 둔 것이 아쉬웠다. 해설을 듣고 나서 처음부터 다시 해 보고 싶다. 3️⃣ 강의에서 배우고 써먹은 점 강의에서 배운 것 미션에서 써먹은 곳 의미가 범주인 숫자는 범주형으로 바꾼다 성별, 연령대, 청력, 흡연, 음주 컬럼 변환 수치형은 중앙값, 범주형은 최빈값으로 채운다 결측치 반복문 처리 이상치는 상식 확인 뒤에 IQR로 본다 컬럼별 비현실 범위 확인과 경계 계산 기술통계표를 질문하며 읽는다 평균과 중앙값, 최솟값과 최댓값 점검 산점도와 히트맵의 역할 구분 상관 히트맵으로 관계의 강도 확인 코드값을 이름표로 바꾸어 읽는다 지역명, 연령대, 성별 컬럼 생성 연령대별 여러 지표를 함께 읽는다 연령대별 신장, 체중, 허리둘레, 혈압 비교 바이올린 플롯으로 분포 모양을 본다 허리둘레의 성별, 연령대별 분포 💡 어제 강의에서 하나씩 배운 것이 미션에서는 한 줄로 이어졌다. 같은 흐름을 한 번 더 직접 돌려 보면서 순서가 몸에 붙는 느낌이 들었다. 4️⃣ 해설 강의에서 배운 것: 질문과 답, 그리고 느낀 점 해설은 정답을 알려 주기보다 왜 그 순서로 하는지를 짚었다. 내가 막힌 곳에 맞춰 정리한다. 4-1. 특수 코드는 결측 처리 전에 분리한다 ❓ 의문. 시력 컬럼은 다른 수치 컬럼처럼 중앙값으로 채우면 되는지 헷갈렸다. 📖 배움. 미션의 데이터 설명에는 시력의 실명을 9.9로 표기한다고 적혀 있었다. 즉 시력에는 측정값이 아닌 특수 코드가 섞여 있었다. 해설은 결측을 채우기 전에 그 코드를 먼저 별도의 표시 열로 남기고, 원래 열에서는 결측으로 바꾼 뒤에 수치형 결측과 함께 처리했다. 순서가 바뀌면 특수 코드가 평균과 중앙값에 섞여 통계가 왜곡된다. import numpy as np import pandas as pd check = pd.DataFrame({'점수': [8.5, 7.0, 99, 6.5]}) # 99는 미응시 표시라고 가정 check['미응시'] = np.where(check['점수'] == 99, 1, 0) # 1단계 표시 열 남기기 check['점수'] = check['점수'].replace(99, np.nan) # 2단계 결측으로 바꾸기 check['점수'] = check['점수'].fillna(check['점수'].median()) # 3단계 중앙값으로 채우기 print(check) 💭 데이터 설명에 분명히 적혀 있었는데도 나는 특수 코드를 따로 확인하지 않고 이상치 삭제 반복문에 그대로 맡겼다. 지워야 할 값이 아니라 의미가 있는 값이었다는 점에서 뼈아팠다. 어제 강의에서 정확히 이 부분을 경고했는데도 놓쳤다. 4-2. 이상치는 탐지 기준일 뿐이다 ❓ 의문. IQR 경계 밖의 값은 모두 지워도 되는지 궁금했다. 📖 배움. IQR은 이상치 후보를 찾는 기준이지 무조건 지우라는 뜻이 아니다. 해설은 가장 기본적인 연습에서는 간단하게 삭제했고, 실무에서는 이상치 집단을 따로 뽑아 특성을 비교하는 확장이 필요하다고 짚었다. 또 해설은 허리둘레, 수축기혈압, 식전혈당 세 컬럼만 대상으로 삼았고, 한 컬럼씩 삭제 뒤의 크기를 확인했다. 💭 나는 여덟 개 컬럼에 같은 기준을 한꺼번에 적용했다. 대상 컬럼을 고르는 것부터가 판단의 일부였다는 것을 알았다. 4-3. 순서가 있는 범주는 순서를 알려 준다 📖 배움. 연령대는 문자열로만 두면 정렬과 그래프에서 순서가 꼬일 수 있다. 순서가 있는 범주라고 지정하면 집계와 그래프가 자연스러운 순서로 나온다. ages = pd.Series(['30대', '10대', '20대']) order = ['10대', '20대', '30대'] ages = pd.Categorical(ages, categories=order, ordered=True) # 순서를 알려 준다 print(pd.Series(ages).sort_values()) 💭 내 데이터에서는 우연히 순서가 맞게 나왔지만, 문자열 정렬에 기대고 있었다는 점이 찜찜했다. 4-4. 집단 차이는 박스플롯이 설명하기 좋다 📖 배움. 성별 차이처럼 두 집단의 차이를 말할 때는 겹쳐 그린 히스토그램보다 박스플롯이 중앙값과 사분위 범위를 한눈에 비교하게 해 주어 설명력이 좋다. 히스토그램은 겹침이 심하면 읽기 어렵다. 💭 나는 히스토그램에 색만 나누어 그렸는데, 비교가 목적이라면 도구도 목적에 맞게 골라야 한다는 것을 배웠다. 4-5. 비율을 볼 때는 어느 쪽 기준인지 정한다 ❓ 의문. 교차표를 비율로 바꿀 때 행 기준과 열 기준의 차이가 무엇인지 헷갈렸다. 📖 배움. 행 기준은 각 집단 안에서 구성비를 보는 것이고, 열 기준은 각 상태 안에서 집단이 차지하는 비중을 보는 것이다. 어떤 질문을 하느냐에 따라 기준이 달라진다. ct = pd.crosstab( ['남', '남', '여', '여', '여'], ['흡연', '비흡연', '비흡연', '비흡연', '흡연'], normalize='index' # 행 기준, 열 기준이 필요하면 'columns' ) print((ct * 100).round(1)) 💭 나는 행 기준으로만 썼는데, 열 기준이라는 선택지가 있다는 것을 알고 나니 질문에 맞게 고르는 것이 중요하다고 느꼈다. 4-6. 같은 데이터프레임을 끝까지 쓴다 📖 배움. 해설은 처음부터 끝까지 하나의 표를 정리해 가며 이어서 썼다. 각 단계에서 만든 컬럼도 같은 표에 쌓았다. 새 지표를 만들 때도 같은 표 안의 컬럼끼리 계산했다. 💭 나는 원본 표와 복사본을 번갈아 쓰면서 각 그래프가 어느 표의 결과인지 구분하기 어려워졌다. 이번 미션에서 가장 크게 느낀 교훈이다. 4-7. 평균만 보면 구성의 차이가 가려진다 📖 배움. 연령대별 평균 BMI는 큰 차이가 없어 보였지만, 비만도를 구간으로 나누어 비율을 보니 중년층에서 비만이 늘고 고령층에서 다시 줄어드는 구성의 차이가 드러났다. 평균과 구성비를 함께 연결해서 설명해야 한다. 💭 내가 쓴 해석은 이 설명과 정반대였다. 그래프가 그려졌다는 이유로 맞다고 믿은 것이 문제였다. 💡 평균 하나로 말하는 것과 구성을 나누어 보는 것은 같은 데이터에서도 전혀 다른 결론으로 이어질 수 있다. 4-8. 자유 EDA는 질문에서 시작한다 📖 배움. 해설의 자유 EDA는 식전혈당이 높은 집단을 따로 뽑아 나머지와 평균과 구성을 비교하는 것부터 시작했다. 지역별 평균 지표, 연령대와 성별 조합의 변화, 흡연 상태에 따른 혈압과 혈당 비교처럼 질문을 먼저 정한 뒤 그에 맞는 그래프를 고르는 식이었다. 💭 나는 마지막 과제를 시작도 못 했는데, 해설을 보니 이상한 값을 별도의 집단으로 보는 발상은 어제 배운 이상치 처방과 이어져 있었다. 다시 도전하면 해 볼 수 있을 것 같다. 5️⃣ 해설과 내 코드의 다른 점 내 노트북과 해설을 문제별로 나란히 놓고 비교했다. 항목 내 코드 해설 컬럼 역할 정리 의미가 범주인 컬럼 일부를 범주형으로 바꿨다. 지역 코드는 빠졌다. 역할별로 컬럼 목록을 먼저 만들고 시작한다. 특수 코드 데이터 설명에 적혀 있었지만 따로 확인하지 못했다. 표시 열을 남기고 결측으로 바꾼 뒤 처리한다. 결측 처리 숫자형과 범주형을 반복문으로 채웠다. 같은 셀을 여러 번 복사했다. 역할별로 목록을 나누어 한 번에 채운다. 이상치 대상 컬럼 여덟 개를 한 반복문에서 삭제했다. 세 컬럼만 대상으로 삼고 단계마다 크기를 확인한다. 이상치 판단 상식 범위를 직접 정해 확인한 뒤 삭제했다. 탐지 기준일 뿐이고 실무에서는 집단 분석으로 확장한다고 짚는다. 중복값 안내된 순서대로 처리했다. 같은 순서로 처리한다. 이름표 컬럼 지역과 연령대, 성별을 새 컬럼으로 만들었다. 같은 방식이고 흡연, 음주, 청력까지 모두 만든다. 연령대 순서 순서를 지정하지 않았다. 순서형 범주로 지정한다. 기술통계 숫자형과 범주형을 나누어 확인했다. 같은 흐름이고, 교차표까지 이어서 본다. 분포 비교 색을 나눈 히스토그램을 주로 썼다. 박스플롯을 비교의 중심에 둔다. 변수 관계 표본 추출까지만 하고 페어플롯은 그리지 못했다. 표본을 뽑아 페어플롯을 그리고 해석한다. 상관 히트맵 코드와 식별자 컬럼까지 포함해서 큰 히트맵을 그렸다. 의미 있는 컬럼만 골라서 그린다. 사용한 표 원본 표와 정리한 표를 섞어 썼다. 하나의 표를 끝까지 이어서 쓴다. BMI 계산 체중은 원본 표에서, 신장은 정리한 표에서 가져와 계산했다. 같은 표의 두 컬럼으로 계산한다. 비만도 구간 미션 안내의 기준 대신 정상 체중의 상한을 더 낮게 잡은 구간을 썼다. 나와 같은 구간을 쓰고, 경계를 포함하는지를 주석으로 설명한다. 연령대별 BMI 해석 나이가 들수록 올라간다고 해석했다. 평균은 큰 변화가 없고 구성비에서 차이가 난다고 해석한다. 비만도별 흡연 비만일수록 비흡연이 는다고 해석했다. 비만일수록 흡연 경험이 많다고 해석한다. 자유 EDA 시작하지 못했다. 질문을 정해 집단 비교를 한다. 💡 비교해 보니 앞부분은 해설과 거의 같은 흐름이었지만, 달랐던 곳은 대부분 "결과는 나오지만 맞는지 확인하지 않은" 부분이었다. 특히 BMI를 서로 다른 표에서 가져와 계산한 것이 뒤의 해석을 모두 어긋나게 만들었다. 그래프가 그려진다는 것과 분석이 맞다는 것은 다르다는 것을, 5일차와 11일차에 이어 다시 확인했다. 📝 오늘의 정리 주제 내가 이해한 핵심 더 공부할 점 컬럼 정리 의미로 역할을 나누고 특수 코드를 먼저 분리한다 코드 종류 점검 습관 이상치 탐지 기준일 뿐이고 대상과 처방을 판단한다 이상치 집단 따로 분석 표 관리 하나의 표를 끝까지 이어서 쓴다 셀 정리와 최종본 구분 계산 검증 새 지표를 만들면 값이 맞는지 앞부분을 확인한다 결과가 이상하면 계산부터 의심 시각화 비교의 목적에 맞는 그래프를 고른다 박스플롯과 구성비 그래프 해석 평균과 구성을 함께 보고 결론을 쓴다 자유 EDA 처음부터 다시 📌 다음 일차 다음 일차: 14일차 (2026-05-22) 커리큘럼: Tableau 다음 강의자료 예고: 코드가 아닌 도구로 대시보드를 만드는 시각화를 시작한다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
[코드잇 데이터분석가 부트캠프][미션] 13일차 미션 4. 코드잇 데이터분석가 부트캠프를 통해 배우고 느낀 것을 적습니다. 강의/미션/위클리페이퍼/프로젝트로 나누어 작성합니다. 📅 2026.05.21 | 🗺️ 과정: 1개월차 ▓░░░░░░ | 📖 커리큘럼: 미션 4 큰 데이터를 처음부터 끝까지 탐색하며, 그래프가 그려졌다고 분석이 맞는 것은 아니라는 것을 확인한 하루였다. 🗓️ 오늘의 일정 교시 시간 내용 1~3교시 09:00~12:00 미션 진행, 정리와 시각화 4~7교시 13:00~17:00 미션 마무리, 제출, 해설 강의 8~9교시 17:00~19:00 해설과 내 코드 비교, 자습 미션 4는 하루에 끝나서, 진행한 과정부터 해설 비교까지 오늘 한 편에 모두 적는다. 1️⃣ 오늘 진행한 일 어제…
Открыть источник