핵심 요약
- 모델에 넣기 전에 글자 범주는 숫자로, 단위가 다른 변수는 같은 눈금으로 바꿉니다.
- 순서가 있는 범주는 0·1·2로, 순서가 없는 범주는 유형마다 1/0 열로 나눕니다.
- 입력 실수를 먼저 고치고, 원본은 그대로 둔 채 정리본을 따로 저장합니다.
오늘의 질문모델에 넣기 전에 데이터를 정리하라는데, AI에게 무엇을 해 달라고 하면 될까?
분석 전 데이터 정리는 모델이 읽을 수 있는 모양으로 데이터를 바꾸는 일입니다. 이 편에서는 두 가지만 다룹니다. 글자로 적힌 범주를 숫자로 바꾸는 일과, 단위가 다른 숫자 변수의 크기를 맞추는 일입니다.
이 연재에서 계속 쓰는 가상의 조사 데이터(조사지 3곳 × 방형구 20곳)로 AI에게 보낼 프롬프트 세 개를 차례로 보여 드립니다. 결과 상자의 숫자는 이 데이터로 실제 계산한 값입니다.
연재AI와 함께하는 연구 데이터 분석
- 시작 전에: 연구자의 AI 작업실 만들기 설치·준비 4편
- 1편. AI 데이터 분석, 무엇을 맡길까
- 2편. 데이터 탐색, AI에게 먼저 물을 것
- 3편. 그룹별 비교와 상관관계 묻기
- 4편. ChatGPT로 CSV 그래프 그리기
- 5편. 결측치 처리: 지울까, 채울까
- 6편. 분석 전 데이터 정리 맡기기 지금 읽는 글
- 7편. 이상한 값과 입력 실수 찾기 준비 중
- 8편. 숫자 예측 모델, AI로 돌리기 준비 중
이 편에서 AI에게 맡길 일
모델은 대개 숫자만 받습니다. 그래서 “없음, 약함, 강함”이나 “사질토, 양토, 점토” 같은 글자는 숫자로 바꿔야 합니다. 이때 가장 중요한 질문은 범주 사이에 순서가 있느냐입니다.
숫자 열도 손볼 게 있습니다. 고도는 수백 m까지 커지는데 토양 pH는 4에서 7 사이입니다. 모델에 따라서는 범위가 넓은 변수가 결과를 좌우합니다(scikit-learn 사용자 가이드, Google 머신러닝 단기집중과정). 20점 만점 퀴즈와 100점 만점 시험을 백분율로 바꿔 나란히 놓는 것과 같은 일입니다.
AI에게 데이터 정리 맡기기 3단계
1. 글자 범주를 숫자로 바꾸기
이렇게 요청합니다
quadrat_survey.csv에서 글자로 적힌 두 열을 숫자로 바꿔 줘.
훼손 정도(disturbance)는 없음 < 약함 < 강함 순서가 있으니 0, 1, 2로 바꿔 줘.
토양 유형(soil_type)은 순서가 없으니 사질토, 양토, 점토마다 해당하면 1, 아니면 0인 열을 따로 만들어 줘.
앞 4행을 바꾸기 전과 후로 나란히 놓은 표로 보여 줘.
이렇게 나옵니다
| 방형구 | 훼손 정도 (전) | 훼손 정도 (후) |
|---|---|---|
| A01 | 없음 | 0 |
| A02 | 약함 | 1 |
| A03 | 없음 | 0 |
| A04 | 강함 | 2 |
1이 한 칸뿐인 행: 60행 / 전체 60행
| 방형구 | 토양 유형 (전) | 사질토 | 양토 | 점토 |
|---|---|---|---|---|
| A01 | 양토 | 0 | 1 | 0 |
| A02 | 점토 | 0 | 0 | 1 |
| A03 | 사질토 | 1 | 0 | 0 |
| A04 | 양토 | 0 | 1 | 0 |
훼손 정도는 한 열 그대로 0, 1, 2가 됐습니다. 토양 유형은 세 열로 나뉘었고, 60행 모두 1이 한 칸씩만 있습니다. 이렇게 유형마다 1/0 열을 따로 만드는 방법을 원-핫 인코딩이라고 부릅니다.
생각해 볼 점
- 순서가 없는 토양 유형에 0, 1, 2를 붙이면 모델은 “점토가 양토보다 크다”는 없는 순서를 읽습니다. 그래서 열을 나눕니다.
- 순서는 사람이 알려 줍니다. 알려 주지 않으면 가나다순으로 번호가 붙어 순서가 뒤집힐 수 있습니다.
2. 단위가 다른 변수 크기 맞추기
2편에서 찾은 토양 pH 58.3(C08)은 원자료를 보고 5.83으로 고치기로 정했다고 가정합니다.
이렇게 요청합니다
quadrat_survey.csv의 고도(elevation_m), 토양 pH(soil_ph), 전체 피도(total_cover_pct)를 서로 비교할 수 있게 0에서 1 사이 눈금으로 맞춰 줘.
C08의 토양 pH 58.3은 5.83을 잘못 적은 값이라 먼저 고쳐 줘. 고치지 않고 맞췄다면 어떻게 되는지도 표로 보여 줘.
마지막에 세 변수의 원래 범위와 맞춘 뒤 범위를 표로 정리해 줘.
이렇게 나옵니다
| 토양 pH | C08 | 나머지 55곳 |
|---|---|---|
| 58.3 그대로 | 1.00 | 0.00–0.05 |
| 5.83으로 고침 | 0.63 | 0.00–1.00 |
| 변수 | 원래 범위 | 맞춘 뒤 범위 |
|---|---|---|
| 고도 (m) | 57–932 | 0.00–1.00 |
| 토양 pH | 4.09–6.87 | 0.00–1.00 |
| 전체 피도 (%) | 37–98 | 0.00–1.00 |
가장 작은 값을 0, 가장 큰 값을 1로 두고 나머지를 그 사이에 놓는 방법입니다(최소-최대 정규화라고 부릅니다). 고치기 전이라면 58.3 하나가 1.00을 차지하고, 나머지 55곳은 0.00–0.05에 몰립니다. 고친 뒤에는 세 변수 모두 0에서 1 사이의 같은 눈금이 됩니다.
생각해 볼 점
- 튀는 값 하나가 눈금 전체를 흔듭니다. 크기 맞추기는 입력 실수를 고친 다음에 합니다.
- 0–1 눈금은 이 데이터 안에서의 상대 위치입니다. 방형구를 더 넣으면 가장 작은 값이나 큰 값이 바뀌어 눈금도 달라집니다.
3. 정리본을 따로 저장하고 바꾼 것 적기
이렇게 요청합니다
지금까지 바꾼 데이터를 quadrat_survey_clean.csv라는 새 파일로 저장해 줘. 원본 quadrat_survey.csv는 고치지 마.
두 파일을 다시 읽어서 행 수, 열 수, C08의 토양 pH를 나란히 표로 보여 줘.
그리고 고친 열과 새로 생긴 열을 한 줄씩 설명한 표를 만들어 줘.
이렇게 나옵니다
| 파일 | 행 | 열 | C08 토양 pH |
|---|---|---|---|
| 원본 | 60 | 14 | 58.30 |
| 정리본 | 60 | 21 | 5.83 |
| 열 | 바꾼 내용 |
|---|---|
| soil_ph | 값 고침 1곳 |
| disturbance_code | 새 열: 훼손 정도를 0·1·2로 |
| soil_사질토 | 새 열: 사질토면 1, 아니면 0 |
| soil_양토 | 새 열: 양토면 1, 아니면 0 |
| soil_점토 | 새 열: 점토면 1, 아니면 0 |
| elevation_01 | 새 열: 고도를 0–1 눈금으로 |
| soil_ph_01 | 새 열: 토양 pH를 0–1 눈금으로 |
| total_cover_01 | 새 열: 전체 피도를 0–1 눈금으로 |
원본은 여전히 C08이 58.3이고 열도 14개 그대로입니다. 정리본은 열이 21개로 늘었고, 무엇을 바꿨는지가 열마다 한 줄씩 남았습니다.
생각해 볼 점
- 원본 파일은 고치지 않습니다. 정리가 잘못돼도 원본에서 다시 시작할 수 있습니다.
- 이 목록을 연구 노트에 붙여 두는 것이 좋습니다. 몇 달 뒤 “이 열은 어떻게 만들었지?”라는 질문에 답해 줍니다.
정리할 때 확인할 점
열의 종류마다 바꾸는 방법과 먼저 확인할 것이 다릅니다.
| 이런 열이면 | 바꾸는 방법 | 먼저 확인할 것 |
|---|---|---|
| 순서가 있는 글자 (훼손 정도) | 순서대로 0, 1, 2 | 순서를 사람이 정했는지 |
| 순서가 없는 글자 (토양 유형, 조사지) | 유형마다 1/0 열 | 행마다 1이 한 칸인지 |
| 단위가 다른 숫자 (고도, pH, 피도) | 0–1 눈금 | 입력 실수를 먼저 고쳤는지 |
정리
분석 전 데이터 정리는 AI에게 세 가지를 차례로 부탁하면 됩니다. 글자 범주는 순서가 있는지 따져서 숫자로 바꿉니다. 단위가 다른 변수는 입력 실수를 고친 뒤 같은 눈금으로 맞춥니다. 원본은 그대로 두고, 정리본과 바꾼 내용 목록을 함께 남깁니다.
다음 편 예고이상한 값과 입력 실수 찾기: 범위를 벗어난 값과 중복된 행을 AI에게 찾게 하고, 고칠지 뺄지 정하는 순서를 다룹니다.
출처
- scikit-learn 공식 문서, 사용자 가이드 “Preprocessing data” (scikit-learn 1.9.1, 2026년 9월 29일 확인)
- scikit-learn 공식 문서, 예제 “Compare the effect of different scalers on data with outliers” (scikit-learn 1.9.1, 2026년 9월 29일 확인)
- Google for Developers, Machine Learning Crash Course “Categorical data: Vocabulary and one-hot encoding” (2025년 12월 19일 갱신)
- Google for Developers, Machine Learning Crash Course “Numerical data: Normalization” (2025년 12월 3일 갱신)
- Max Kuhn·Kjell Johnson, “Applied Machine Learning for Tabular Data” 6장 (2026년 9월 29일 확인)
- Kevin Markham, “Master Machine Learning with scikit-learn” 3장 (2026년 9월 29일 확인)
- pandas 공식 문서, 사용자 가이드 “Categorical data” (pandas 3.0.6, 2026년 9월 29일 확인)
- Wilson 외, “Good enough practices in scientific computing”, PLOS Computational Biology (2017년 6월 22일)
- 영국생태학회(BES), Better Science Guides “Data management” (2026년판)