🎓 고등학생을 위한 AI 활용 데이터 분석 실전 매뉴얼

데이터를 AI로
어떻게 분석할 것인가

이 페이지는 탐구 주제 목록이 아니라, 실험데이터·공공데이터·센서로그·이미지·텍스트를 어떤 AI 분석 방법으로 다룰지 구체적으로 안내하는 분석법 중심 웹페이지입니다. AI는 답을 대신 쓰는 도구가 아니라, 분석법 선택·코드 생성·오류 검토·해석 정교화를 돕는 데이터 분석 파트너로 사용합니다.

90+분석법
30+프롬프트
14+코드 레시피
9분석 단계
기획·제작충청남도교육청진로융합교육원 교육연구사 정재연

AI 데이터 분석의 핵심 원칙

좋은 분석은 복잡한 모델을 쓰는 것이 아니라, 데이터의 구조와 질문에 맞는 방법을 고르고, 결과를 검증 가능한 근거로 해석하는 것입니다.

01

분석 질문을 먼저 정한다

"AI로 분석해줘"가 아니라 "조건별 차이", "변수 관계", "미래 예측", "유형 분류", "패턴 발견" 중 무엇을 원하는지 정합니다.

02

원자료를 보존한다

AI가 제안한 전처리를 적용하더라도 원자료, 전처리본, 분석 코드, 그래프를 분리해 재현 가능하게 관리합니다.

03

모델보다 검증을 중시한다

훈련/검증 분리, 교차검증, 잔차분석, 오분류 분석, 외부 검증을 통해 결과가 우연인지 확인합니다.

04

AI 결과를 사람이 판단한다

AI는 코드와 해석 초안을 만들 수 있지만, 단위·측정 맥락·변수 의미·인과 해석은 학생이 직접 판단해야 합니다.

핵심 문장: "AI를 사용했다"가 아니라 "AI가 제안한 분석법을 데이터 구조에 맞게 검토하고, 오류를 수정하며, 결과를 근거 중심으로 해석했다"가 분석 역량입니다.

AI 활용 데이터 분석 9단계

각 단계마다 AI에게 요청할 일과 학생이 직접 확인할 일을 분리해야 합니다.

1

데이터 설명을 AI에게 제공

파일을 통째로 던지기보다 열 이름, 샘플 10행, 측정 방법, 단위, 연구 목적을 함께 제공합니다. 개인정보·민감정보는 마스킹하거나 제외합니다.

요청 예시: "이 데이터의 열 이름과 샘플 10행을 보고 분석 전에 확인할 오류와 가능한 분석 질문을 표로 정리해줘."
2

데이터 품질 점검

결측치, 중복, 이상치, 단위 불일치, 범주 오타, 날짜 형식 오류를 먼저 찾습니다.

주의: AI가 제안한 삭제·대체 기준은 반드시 측정 맥락으로 검토합니다. 자동 결측 대체(mean imputation)는 분산을 왜곡할 수 있습니다.
3

분석 목적 분류

설명, 비교, 관계, 예측, 분류, 패턴 발견, 최적화 중 하나로 목적을 분류합니다. 목적이 바뀌면 분석법도 바뀝니다.

4

분석법 후보 3개 이상 비교

한 가지 방법으로 바로 결론을 내리지 말고, 쉬운 방법과 복잡한 방법을 함께 비교합니다.

예: 평균 비교 → 효과크기 → 회귀분석 / 산점도 → 상관분석 → 잔차분석
5

코드 생성과 실행

AI에게 Python 코드를 요청하되, 각 코드 줄의 목적과 입력·출력 형태를 설명하게 합니다. 라이브러리 버전과 한국어 처리 환경을 명시하면 오류가 줄어듭니다.

6

그래프와 수치 동시 확인

수치만 보지 말고 분포, 산점도, 잔차, 오차막대, 오분류 사례를 함께 봅니다. 그래프 제목·축·단위·표본 수·오차막대 종류를 반드시 표기합니다.

7

검증 루틴 적용

데이터 누수, 과적합, 표본 불균형, 이상치 영향, 인과 과장, 그래프 왜곡, 코드 실행 결과 일치성을 점검합니다.

8

결과를 근거 문장으로 변환

"좋아졌다"가 아니라 "A 조건의 평균이 B보다 2.3 높고 표준편차는…"처럼 수치 근거를 포함합니다. 인과가 아니라 관계·경향·가능성으로 표현합니다.

9

AI 활용 기록 남기기

프롬프트, AI 제안, 직접 검증한 내용, 수정한 내용, 최종 반영 여부를 기록합니다. 보고서에 AI 사용 사실을 명시하는 것은 학술 정직성의 출발점입니다.

분석 목적별 방법 선택 매트릭스

데이터 분석은 질문의 유형에 따라 방법이 달라집니다. 아래 표를 보고 먼저 큰 방향을 정하세요.

분석 목적데이터 형태추천 분석법해석 핵심
값을 요약하고 싶다수치형 1~2개기술통계, 히스토그램, boxplot평균만 쓰지 말고 분포와 산포를 함께 보여준다.
조건별 차이를 비교하고 싶다집단 변수 + 수치형 결과오차막대, 평균 비교, 효과크기, ANOVA반복 수와 표준편차를 반드시 제시한다.
두 변수 관계를 보고 싶다연속형 변수 2개 이상산점도, 상관분석, 회귀분석, 잔차분석상관과 인과를 구분한다.
결과를 예측하고 싶다입력 변수 + 목표값회귀모델, 랜덤포레스트, 교차검증훈련/검증 분리를 먼저 한다.
유형을 자동 분류하고 싶다특징값 + 라벨로지스틱 회귀, 의사결정나무, 혼동행렬정확도만 보지 말고 오분류를 본다.
숨은 패턴을 찾고 싶다라벨 없는 다변량 데이터PCA, K-means, 군집 프로파일링군집 이름은 원자료 근거로 붙인다.
시간 흐름을 분석하고 싶다시간 + 측정값이동평균, 추세, lag 분석, 이상 구간 탐지무작위 셔플을 피하고 시간순으로 검증한다.
텍스트를 분석하고 싶다문장, 기사, 서술형 응답키워드 빈도, n-gram, TF-IDF, 문서 군집한국어는 형태소 분석이 필요할 수 있다.
이미지를 수치화하고 싶다사진, 현미경 이미지, 타임랩스RGB 평균, 임계값 분할, 객체 계수, 면적 측정조명, 거리, 기준자 조건을 통제한다.
최적 조건을 찾고 싶다조건 조합 + 결과값격자 탐색, 민감도 분석, 시나리오 비교측정 범위 밖으로 결론을 확장하지 않는다.
분석 결과를 검증하고 싶다분석 결과, 모델 출력잔차분석, 교차검증, 외부 검증, AI 답변 점검한 번의 결과로 단정하지 않는다.

내 데이터에 맞는 AI 분석법 추천기

데이터 유형과 목표를 고르면 분석법 도감에서 적절한 방법을 자동으로 추천합니다.

AI 분석 방법 라이브러리

분석법을 이름만 아는 데서 멈추지 않도록, 언제 쓰는지·AI에게 무엇을 시킬지·학생이 무엇을 검증할지까지 정리했습니다. 카드를 클릭하면 자세한 설명과 복사 가능한 프롬프트가 열립니다.

데이터 유형별 분석 루트

자료가 어떤 형태인지 알면 분석의 절반은 정해집니다. 아래 루트를 따라 AI에게 구체적으로 요청하세요.

실험 반복측정 데이터

데이터 형태
조건, 반복번호, 측정값, 단위
추천 분석 루트
반복 측정 요약 → 오차막대 → 평균 비교 → 효과크기 → 한계 해석
AI 요청: 조건별 반복 수가 같지 않을 때 평균 비교가 가능한지, 어떤 그래프와 지표를 써야 하는지 알려줘.

공공데이터

데이터 형태
날짜, 지역, 지표값, 출처
추천 분석 루트
데이터 병합 → 결측·이상치 → 시계열/상관/회귀 → 지도화
AI 요청: 공공데이터 두 개를 날짜와 지역 기준으로 합치려 한다. 병합 전 점검할 항목과 분석법 후보를 제안해줘.

센서·IoT 로그

데이터 형태
시간, 센서ID, 측정값, 상태
추천 분석 루트
캘리브레이션 → 이동평균 → 피크/이상 구간 탐지 → 지연상관
AI 요청: 센서값이 흔들리는 데이터에서 노이즈를 줄이고 이상 구간을 찾는 절차를 알려줘.

설문·범주형 데이터

데이터 형태
응답자ID, 문항, 선택지, 서술형
추천 분석 루트
빈도표 → 교차표 → 비율 비교 → 텍스트 분류
AI 요청: 설문 데이터에서 집단별 응답 비율 차이와 서술형 응답 키워드를 함께 분석하는 절차를 제안해줘.

텍스트 데이터

데이터 형태
문서ID, 날짜, 제목, 본문
추천 분석 루트
형태소 분석 → 불용어 정리 → 키워드 빈도 → TF-IDF → 문서 군집
AI 요청: 한국어 기사 제목 200개에서 시기별 키워드 변화를 분석하려고 한다. 형태소 분석 도구 선택과 전처리를 제안해줘.

이미지 데이터

데이터 형태
파일명, 조건, 촬영시간, 이미지
추천 분석 루트
조명 통제 → 색/면적/객체 수 추출 → 조건별 비교
AI 요청: 식물 잎 사진에서 색 변화와 면적 변화를 수치화하려면 어떤 절차와 검증이 필요한지 알려줘.

시계열 데이터

데이터 형태
시간, 값, 외부요인
추천 분석 루트
추세 → 계절성 → lag 변수 → 시간순 예측
AI 요청: 시간순 데이터를 무작위로 섞지 않고 예측 모델을 만드는 절차를 설명해줘.

공간·지도 데이터

데이터 형태
위도, 경도, 측정값, 장소특성
추천 분석 루트
지도화 → 거리 기반 분석 → 격자화 → 공간 패턴 해석
AI 요청: 위치별 미세먼지 측정값을 지도화하고 도로 거리와의 관계를 분석하는 방법을 알려줘.

생명정보 공개자료

데이터 형태
서열, 발현량, 샘플정보
추천 분석 루트
품질 점검 → 특징 추출 → PCA/군집 → 분류
AI 요청: 공개 생명정보 데이터에서 PCA와 군집화를 적용할 때 전처리와 해석 주의점을 알려줘.

시뮬레이션 데이터

데이터 형태
입력조건, 반복번호, 결과값
추천 분석 루트
민감도 분석 → 몬테카를로 → 시나리오 비교 → 최적화
AI 요청: 입력값 불확실성을 반영해 결과 분포를 계산하고 시나리오를 비교하는 방법을 알려줘.

Python 코드 레시피

코드는 그대로 복사해서 시작하되, 열 이름과 파일명을 자신의 데이터에 맞게 바꿔야 합니다. AI에게 "이 코드가 내 데이터 구조에 맞는지 수정해줘"라고 요청하면 분석 자동화 속도가 크게 올라갑니다.

실행 환경 안내: 모든 코드는 Python 3.9+, pandas 2.x, scikit-learn 1.x, matplotlib 3.x 기준입니다. Google Colab, Jupyter Notebook, VS Code의 Python 환경에서 모두 실행됩니다. 한국어 그래프 라벨이 깨질 때는 matplotlib.rcParams['font.family']='Malgun Gothic'(Windows) 또는 'AppleGothic'(Mac)을 설정하세요.
CODE 01

CSV 데이터 품질 진단

데이터 분석의 첫 단계는 원자료가 분석 가능한 상태인지 확인하는 것이다.

import pandas as pd

# 1) CSV 불러오기 (한글 깨짐 시 encoding='cp949' 또는 'utf-8-sig' 시도)
df = pd.read_csv('data.csv')

# 2) 기본 구조 확인
print('행, 열 개수:', df.shape)
print(df.head(10))
print(df.info())

# 3) 결측치 확인
missing = df.isna().sum().sort_values(ascending=False)
missing_rate = (df.isna().mean() * 100).round(2)
print(pd.DataFrame({'결측개수': missing, '결측률(%)': missing_rate}))

# 4) 수치형 변수 요약
print(df.describe())

# 5) 범주형 변수 고유값 확인 (오타 발견용)
for col in df.select_dtypes(include='object').columns:
    print(f'\n[{col}] 고유값 {df[col].nunique()}개')
    print(df[col].value_counts().head(10))

# 6) 중복 행 확인
print('중복 행 수:', df.duplicated().sum())
CODE 02

반복 측정 요약과 오차막대

조건별 반복 측정값을 평균과 표준편차로 요약하고 그래프로 보여준다.

import pandas as pd
import matplotlib.pyplot as plt

# 예: condition 열에는 조건명, value 열에는 측정값이 있다고 가정
df = pd.read_csv('experiment.csv')

summary = df.groupby('condition')['value'].agg(['count', 'mean', 'std']).reset_index()
summary['se'] = summary['std'] / (summary['count'] ** 0.5)  # 표준오차
print(summary)

# 표준편차(SD) 오차막대: 자료 자체의 흩어짐
# 표준오차(SE) 오차막대: 평균 추정의 불확실성
# 그래프 캡션에 어떤 오차인지 반드시 명시할 것
plt.figure(figsize=(8, 5))
plt.bar(summary['condition'], summary['mean'], yerr=summary['std'],
        capsize=5, color='#2563eb', alpha=0.7, edgecolor='#0f2454')
plt.xlabel('Condition')
plt.ylabel('Mean value (단위 명시)')
plt.title(f'Mean ± SD by condition (n={summary["count"].iloc[0]})')
plt.tight_layout()
plt.show()
CODE 03

이상치 후보 찾기 (IQR)

IQR 기준으로 극단값 후보를 찾고, 삭제 전 검토 목록을 만든다.

import pandas as pd

df = pd.read_csv('data.csv')
col = 'value'

# IQR 방식 (분포 가정 없음, 일반적으로 권장)
q1 = df[col].quantile(0.25)
q3 = df[col].quantile(0.75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr

outliers = df[(df[col] < lower) | (df[col] > upper)]
print(f'IQR 기준 하한: {lower:.3f}, 상한: {upper:.3f}')
print(f'이상치 후보 수: {len(outliers)} / 전체 {len(df)}')
print(outliers)

# z-score 방식은 정규분포 가정에 가까울 때만 사용
# 치우친 분포에서는 IQR 또는 비율 기준이 더 안전
z_scores = ((df[col] - df[col].mean()) / df[col].std()).abs()
print(f'\nz-score > 3인 행 수: {(z_scores > 3).sum()}')

# 삭제하기 전 확인할 것:
# 1. 측정 당시 장비 오류가 있었는가?
# 2. 단위 입력 오류인가?
# 3. 실제로 의미 있는 특이 사례인가?
# 4. 삭제 전후 결론이 달라지는가? (sensitivity check)
CODE 04

상관행렬과 산점도

여러 변수 간 관계 후보를 찾고 시각화한다.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 수치형 열만 선택
df = pd.read_csv('data.csv')
num = df.select_dtypes(include='number')

corr = num.corr()
print(corr.round(3))

# Heatmap: 발산형 색(diverging) 사용 - 양수/음수 상관을 시각적으로 구분
plt.figure(figsize=(8, 6))
plt.imshow(corr, aspect='auto', cmap='RdBu_r', vmin=-1, vmax=1)
plt.colorbar(label='Correlation')
plt.xticks(range(len(corr.columns)), corr.columns, rotation=90)
plt.yticks(range(len(corr.columns)), corr.columns)
# 셀에 값 표시
for i in range(len(corr.columns)):
    for j in range(len(corr.columns)):
        plt.text(j, i, f'{corr.iloc[i,j]:.2f}', ha='center', va='center',
                 color='white' if abs(corr.iloc[i,j])>0.5 else 'black', fontsize=8)
plt.title('Correlation matrix')
plt.tight_layout()
plt.show()

# 두 변수 산점도 예시
plt.figure(figsize=(6, 5))
plt.scatter(df['x'], df['y'], alpha=0.6, edgecolor='white')
plt.xlabel('x (단위)')
plt.ylabel('y (단위)')
plt.title(f'Scatter plot (n={len(df)})')
plt.tight_layout()
plt.show()
CODE 05

단순선형회귀

x가 y를 얼마나 설명하는지 회귀식과 R²로 확인한다.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_absolute_error

df = pd.read_csv('data.csv').dropna(subset=['x', 'y'])
X = df[['x']]
y = df['y']

model = LinearRegression()
model.fit(X, y)
pred = model.predict(X)

print(f'회귀식: y = {model.coef_[0]:.4f} * x + {model.intercept_:.4f}')
print(f'R²: {r2_score(y, pred):.3f}')
print(f'MAE: {mean_absolute_error(y, pred):.3f}')

# 잔차 분석: 패턴이 있으면 선형 가정 위반 가능
residuals = y - pred
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.scatter(df['x'], y, label='data', alpha=0.6)
plt.plot(df['x'], pred, color='red', label='linear fit')
plt.xlabel('x'); plt.ylabel('y'); plt.legend()
plt.title(f'Linear regression (R²={r2_score(y, pred):.3f})')

plt.subplot(1, 2, 2)
plt.scatter(pred, residuals, alpha=0.6)
plt.axhline(0, color='red', linestyle='--')
plt.xlabel('Predicted'); plt.ylabel('Residual')
plt.title('Residual plot (패턴이 없어야 함)')
plt.tight_layout()
plt.show()
CODE 06

다중회귀와 검증 분리 (+VIF)

여러 변수를 이용해 결과를 예측하고 다중공선성·과적합을 점검한다.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_absolute_error

df = pd.read_csv('data.csv')
features = ['x1', 'x2', 'x3']
X = df[features]
y = df['target']

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

model = LinearRegression()
model.fit(X_train, y_train)

# 훈련/검증 성능 비교: 격차가 크면 과적합
for name, X_part, y_part in [('train', X_train, y_train), ('test', X_test, y_test)]:
    pred = model.predict(X_part)
    print(f'{name}  R²={r2_score(y_part, pred):.3f}  MAE={mean_absolute_error(y_part, pred):.3f}')

# 계수 (영향 크기 순서)
coef = pd.Series(model.coef_, index=features).sort_values(key=abs, ascending=False)
print('\n[계수]\n', coef)

# 다중공선성 확인: VIF가 10 이상이면 변수 간 중복이 심함
# (statsmodels 설치: pip install statsmodels)
try:
    from statsmodels.stats.outliers_influence import variance_inflation_factor
    vif = pd.DataFrame({
        'feature': features,
        'VIF': [variance_inflation_factor(X.values, i) for i in range(len(features))]
    })
    print('\n[VIF] (10 이상이면 다중공선성 의심)\n', vif)
except ImportError:
    # statsmodels 없으면 상관행렬로 대체 점검
    print('\n[변수 간 상관 (|r|>0.8이면 중복 의심)]')
    print(X.corr().round(2))
CODE 07

분류 모델과 혼동행렬

정상/이상, 성공/실패 같은 분류 문제를 평가한다.

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, classification_report, ConfusionMatrixDisplay

df = pd.read_csv('classification.csv')
features = ['x1', 'x2', 'x3']
X = df[features]
y = df['label']

# stratify=y : 클래스 비율을 유지하며 분리 (불균형 데이터에 필수)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# class_weight='balanced' : 소수 클래스에 가중치
model = RandomForestClassifier(random_state=42, class_weight='balanced', n_estimators=100)
model.fit(X_train, y_train)
pred = model.predict(X_test)

print('=== 혼동행렬 ===')
print(confusion_matrix(y_test, pred))
print('\n=== 분류 리포트 ===')
print(classification_report(y_test, pred))

# 시각화
ConfusionMatrixDisplay.from_predictions(y_test, pred, cmap='Blues')
plt.title('Confusion Matrix')
plt.tight_layout()
plt.show()

# 변수 중요도 (예측 기여도 - 인과 효과 아님!)
importance = pd.Series(model.feature_importances_, index=features).sort_values()
plt.figure(figsize=(7, 4))
importance.plot(kind='barh', color='#06b6d4')
plt.xlabel('Importance (예측 기여도)')
plt.title('Feature importance')
plt.tight_layout()
plt.show()
CODE 08

K-means 군집화와 PCA 시각화

라벨 없는 데이터를 비슷한 유형으로 묶고 2차원으로 시각화한다.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA

df = pd.read_csv('data.csv')
features = ['x1', 'x2', 'x3', 'x4']
X = df[features].dropna()

# 표준화: 단위가 다른 변수를 동등하게 비교
X_scaled = StandardScaler().fit_transform(X)

# Elbow method: 적절한 k 찾기
inertias = []
ks = range(2, 8)
for k in ks:
    km = KMeans(n_clusters=k, random_state=42, n_init=10)
    km.fit(X_scaled)
    inertias.append(km.inertia_)

plt.figure(figsize=(6, 4))
plt.plot(ks, inertias, 'o-', color='#2563eb')
plt.xlabel('Number of clusters (k)')
plt.ylabel('Inertia (within-cluster sum of squares)')
plt.title('Elbow method')
plt.tight_layout()
plt.show()

# 최종 모델 (예시: k=3, elbow 결과 보고 조정)
k = 3
kmeans = KMeans(n_clusters=k, random_state=42, n_init=10)
clusters = kmeans.fit_predict(X_scaled)
X['cluster'] = clusters

# PCA로 2차원 시각화 (군집별 색 구분 + 범례)
pca = PCA(n_components=2)
XY = pca.fit_transform(X_scaled)

plt.figure(figsize=(7, 5))
colors = ['#2563eb', '#10b981', '#f59e0b', '#7c3aed', '#ef4444', '#06b6d4']
for c in range(k):
    mask = clusters == c
    plt.scatter(XY[mask, 0], XY[mask, 1], c=colors[c], label=f'Cluster {c}',
                alpha=0.7, edgecolor='white', s=50)
plt.xlabel(f'PC1 ({pca.explained_variance_ratio_[0]*100:.1f}%)')
plt.ylabel(f'PC2 ({pca.explained_variance_ratio_[1]*100:.1f}%)')
plt.title(f'K-means clusters (k={k}) projected by PCA')
plt.legend()
plt.tight_layout()
plt.show()

# 군집별 프로파일: 각 군집의 평균값으로 이름 붙이기
print('=== 군집별 평균값 (원자료 단위) ===')
print(X.groupby('cluster')[features].mean().round(3))
CODE 09

시계열 이동평균과 이상 구간 (개선)

센서 로그에서 큰 흐름과 비정상 구간을 찾는다. 전체 평균이 아닌 이동 통계 기반으로 이상 구간을 탐지한다.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('sensor.csv')
df['time'] = pd.to_datetime(df['time'])
df = df.sort_values('time').reset_index(drop=True)

col = 'value'
window = 12  # 이동 창 크기 (데이터 간격에 맞게 조정)

# 이동평균과 이동표준편차 (rolling): 시계열 추세를 반영한 이상 탐지
df['moving_avg'] = df[col].rolling(window=window, min_periods=1, center=True).mean()
df['moving_std'] = df[col].rolling(window=window, min_periods=1, center=True).std()

# 이상 구간: 이동평균 ± 3 * 이동표준편차 범위를 벗어난 점
df['upper'] = df['moving_avg'] + 3 * df['moving_std']
df['lower'] = df['moving_avg'] - 3 * df['moving_std']
df['anomaly'] = (df[col] > df['upper']) | (df[col] < df['lower'])

print(f'전체 {len(df)}개 중 이상 후보: {df["anomaly"].sum()}개')

plt.figure(figsize=(12, 5))
plt.plot(df['time'], df[col], label='raw', color='#cbd5e1', linewidth=0.8)
plt.plot(df['time'], df['moving_avg'], label='moving average', color='#2563eb', linewidth=2)
plt.fill_between(df['time'], df['lower'], df['upper'], alpha=0.15, color='#2563eb', label='±3 SD band')
plt.scatter(df.loc[df['anomaly'], 'time'], df.loc[df['anomaly'], col],
            color='#ef4444', label='anomaly', zorder=5, s=40)
plt.xlabel('Time')
plt.ylabel(col)
plt.title(f'Rolling mean anomaly detection (window={window})')
plt.legend()
plt.tight_layout()
plt.show()

# 이상으로 표시된 점이 정말 이상인지 원자료와 측정 로그를 직접 확인할 것
# 센서 고장, 정상 변동, 진짜 이상사건을 구분하는 것은 사람의 몫
CODE 10

한국어 텍스트 키워드 빈도 분석

한국어는 조사가 단어에 붙어 단순 split이 부정확하다. 형태소 분석 라이브러리(KoNLPy 등)를 권장한다.

from collections import Counter
import pandas as pd
import matplotlib.pyplot as plt
import re

df = pd.read_csv('text.csv')
texts = df['text'].dropna().astype(str)

# ====== 방법 A: 라이브러리 없이 간단 처리 (영문/단순 한글) ======
# - 빠르지만 한국어 조사가 단어에 붙어 나옴 ("학교는", "학교를"이 다른 단어로 카운트됨)
stopwords = {'그리고','하지만','또한','대한','관련','으로','에서','이다','있다','이다','하는',
             '이런','그런','저런','우리','저희','때문','정도','이번','다음','경우'}

words = []
for text in texts:
    # 특수문자 제거
    cleaned = re.sub(r'[^\w\s가-힣]', ' ', text)
    for w in cleaned.split():
        w = w.strip()
        if len(w) >= 2 and w not in stopwords:
            words.append(w)

counter = Counter(words)
top = pd.DataFrame(counter.most_common(20), columns=['word', 'count'])
print(top)

plt.figure(figsize=(9, 5))
plt.barh(top['word'][::-1], top['count'][::-1], color='#2563eb')
plt.xlabel('Count')
plt.title('Top 20 keywords (간단 처리)')
plt.tight_layout()
plt.show()

# ====== 방법 B: KoNLPy로 명사만 추출 (정확하지만 설치 필요) ======
# pip install konlpy   (Mac/Linux는 Java 설치 필요)
# from konlpy.tag import Okt
# okt = Okt()
# nouns = []
# for text in texts:
#     for n in okt.nouns(text):
#         if len(n) >= 2 and n not in stopwords:
#             nouns.append(n)
# Counter(nouns).most_common(20)

# ====== 방법 C: 형태소 분석 없이도 정확도를 올리는 방법 ======
# - 조사 목록을 만들어 단어 끝에서 제거
# - 자주 등장하는 어미("입니다", "합니다") 제외
# - 길이 3자 이상만 유지
CODE 11

TF-IDF 특징어 추출

여러 문서에서 각 문서를 구분하는 특징 단어를 찾는다.

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

df = pd.read_csv('documents.csv')
texts = df['text'].fillna('').astype(str).tolist()

# 한국어는 token_pattern을 한글 포함으로 설정
vectorizer = TfidfVectorizer(
    max_features=1000,
    token_pattern=r'(?u)\b[\w가-힣]{2,}\b',
    min_df=2  # 최소 2개 문서에 등장한 단어만
)
X = vectorizer.fit_transform(texts)
terms = vectorizer.get_feature_names_out()

# 각 문서별 특징어 상위 10개
for doc_idx in range(min(5, len(texts))):  # 처음 5개 문서만 출력
    row = X[doc_idx].toarray().ravel()
    top_idx = row.argsort()[-10:][::-1]
    print(f'\n[문서 {doc_idx}] 특징어:')
    for i in top_idx:
        if row[i] > 0:
            print(f'  {terms[i]}: {row[i]:.3f}')
CODE 12

이미지 RGB 평균 분석

사진의 색상 변화를 숫자로 바꿔 조건별로 비교한다.

# pip install Pillow numpy pandas
from PIL import Image
import numpy as np
import pandas as pd
from pathlib import Path

records = []
image_folder = Path('images')

for file in sorted(image_folder.glob('*.jpg')):
    img = Image.open(file).convert('RGB')
    arr = np.array(img)
    mean_rgb = arr.reshape(-1, 3).mean(axis=0)
    brightness = arr.mean()  # 전체 픽셀 평균 밝기
    # HSV로 변환해 색조(Hue) 평균도 함께 추출
    hsv = np.array(img.convert('HSV'))
    hue_mean = hsv[..., 0].mean()
    records.append({
        'file': file.name,
        'R_mean': round(mean_rgb[0], 2),
        'G_mean': round(mean_rgb[1], 2),
        'B_mean': round(mean_rgb[2], 2),
        'brightness': round(brightness, 2),
        'hue_mean': round(hue_mean, 2)
    })

result = pd.DataFrame(records)
print(result)
result.to_csv('image_color_summary.csv', index=False, encoding='utf-8-sig')

# 주의: 촬영 조명·각도·거리·배경이 달라지면 색 변화가 왜곡됨
# - 같은 조명, 같은 거리, 같은 배경으로 촬영
# - 색 표준카드(컬러체커)나 흰색 기준판을 함께 촬영해 보정
CODE 13

몬테카를로 시뮬레이션

측정 오차가 결과에 미치는 영향을 확률적으로 확인한다.

import numpy as np
import matplotlib.pyplot as plt

# 재현성: 같은 seed로 결과 고정
rng = np.random.default_rng(seed=42)

# 예: 밀도 = 질량 / 부피
# 질량은 평균 10.0g, 표준편차 0.2g / 부피는 평균 5.0mL, 표준편차 0.1mL라고 가정
n = 10000
mass = rng.normal(loc=10.0, scale=0.2, size=n)
volume = rng.normal(loc=5.0, scale=0.1, size=n)
density = mass / volume

p025, p975 = np.percentile(density, [2.5, 97.5])
print(f'평균 밀도: {density.mean():.4f} g/mL')
print(f'표준편차: {density.std():.4f}')
print(f'95% 범위: [{p025:.4f}, {p975:.4f}]')
print(f'특정 기준(2.05 g/mL) 초과 확률: {(density > 2.05).mean()*100:.2f}%')

plt.figure(figsize=(8, 5))
plt.hist(density, bins=50, color='#2563eb', alpha=0.7, edgecolor='white')
plt.axvline(density.mean(), color='red', linestyle='--', label=f'mean={density.mean():.3f}')
plt.axvline(p025, color='orange', linestyle=':', label=f'95% CI')
plt.axvline(p975, color='orange', linestyle=':')
plt.xlabel('Density (g/mL)')
plt.ylabel('Frequency')
plt.title(f'Monte Carlo simulation (n={n})')
plt.legend()
plt.tight_layout()
plt.show()

# 주의: 입력 분포 가정(여기서는 정규분포)이 틀리면 결과도 틀림
# - 실제 측정값으로 분포 확인 후 가정 변경 가능 (균등, 삼각, 로그정규 등)
CODE 14

AI 활용 기록표 만들기

AI가 한 일과 학생이 검증한 일을 분리해 기록한다.

import pandas as pd
from datetime import datetime

# 분석 과정에서 한 줄씩 추가
log = pd.DataFrame([
    {
        'date': '2026-05-14',
        'step': 1,
        'purpose': '결측치 점검 코드 작성',
        'ai_model': 'ChatGPT-4',
        'prompt_summary': '결측률 계산 pandas 코드 요청',
        'ai_suggestion': 'isna().sum(), 결측률 계산 코드 제안',
        'my_verification': '원자료 3개 행을 직접 확인해 실제 결측과 일치하는지 검토',
        'revision': '측정 불가로 기록된 NA는 삭제하지 않고 별도 범주로 유지',
        'used_in_report': 'yes'
    },
    {
        'date': '2026-05-15',
        'step': 2,
        'purpose': '회귀분석 코드 검증',
        'ai_model': 'Claude',
        'prompt_summary': '회귀 결과 해석 요청',
        'ai_suggestion': 'R²=0.72라서 강한 관계라고 해석',
        'my_verification': '잔차에 곡선 패턴 발견, 선형 가정 위반 가능성 확인',
        'revision': '2차 다항회귀로 변경, 해석을 "관계"로 표현',
        'used_in_report': 'yes'
    }
])

log.to_csv('ai_usage_log.csv', index=False, encoding='utf-8-sig')
print(log[['date', 'step', 'purpose', 'used_in_report']])

# 보고서에 첨부할 수 있도록 마크다운으로도 출력
print('\n=== 보고서용 요약 ===')
for _, row in log.iterrows():
    print(f"- [{row['date']}] {row['purpose']}")
    print(f"  · AI 제안: {row['ai_suggestion']}")
    print(f"  · 내 검증: {row['my_verification']}")
    print(f"  · 수정: {row['revision']}")

AI 프롬프트 실전 라이브러리

좋은 프롬프트는 “분석해줘”가 아니라, 데이터의 맥락·열 구조·분석 목표·검증 기준·출력 형식을 함께 제시하는 분석 명세서입니다. 아래 템플릿은 실제 데이터를 붙여 넣고 바로 수정해 사용할 수 있도록 구체적으로 구성했습니다.

Prompt Architecture

AI 분석 프롬프트 6요소

AI에게 분석을 맡길수록 학생이 제공해야 할 정보는 더 구체적이어야 합니다.

맥락어떤 수업·실험·공공데이터에서 나온 자료인지 설명
자료열 이름, 단위, 샘플 10행, 표본 수, 결측 여부 제공
목표비교·관계·예측·분류·군집·최적화 중 목적을 명시
제약고등학생 수준, Python 사용, 학교 실험실 자료 등 조건 제시
검증데이터 누수, 이상치, 과적합, 인과 과장 점검 요청
출력표, 코드, 그래프, 보고서 문장, 체크리스트 등 형식 지정
Before → After

뻔한 요청을 분석 명세서로 바꾸기

부족한 요청

“이 CSV 분석해줘.”
“그래프 그려줘.”
“머신러닝 해줘.”

좋은 요청

“열 이름과 샘플 10행을 보고 단위·결측·이상치를 점검한 뒤, 조건별 평균 비교와 오차막대 그래프를 그리는 pandas 코드를 작성해줘. 결과 해석은 인과가 아니라 경향으로 표현해줘.”

39개 템플릿

프로젝트 착수용 만능 프롬프트

언제분석을 시작하기 전, AI에게 전체 분석의 큰 그림을 잡게 할 때
입력자료데이터 출처, 열 이름, 샘플 10행, 분석 목표, 사용 가능한 도구
받을결과분석 절차, 전처리, 추천 분석법, 검증 기준, 산출물 목록
너는 고등학생 데이터 분석 멘토이자 Python 분석 코치야. 아래 정보를 바탕으로 분석 계획을 세워줘. [데이터 출처와 수집 방식] {예: 학교 실험실에서 온도 조건별 효소 반응속도를 5회 반복 측정} [열 이름과 단위] {예: temperature_C, trial, absorbance_change_per_min} [샘플 데이터 10행] {붙여넣기} [분석 목표] {예: 온도 조건에 따른 반응속도 차이를 비교하고 최적 온도 범위를 찾기} 다음 형식으로 답해줘. 1. 데이터 구조에서 먼저 확인해야 할 점 2. 가능한 분석 질문 5개 3. 추천 분석법 3개와 선택 이유 4. 필요한 전처리 단계 5. Python 코드 작성 순서 6. 그래프 종류와 축·단위 7. 결과 해석 시 피해야 할 과장 표현 8. 검증 체크리스트 9. 보고서에 남길 AI 활용 기록 항목

프롬프트 개선 요청

언제AI 답변이 추상적이거나 코드가 바로 실행되지 않을 때
입력자료처음 사용한 프롬프트, AI 답변, 부족했던 점
받을결과더 정확한 후속 프롬프트와 추가 질문 목록
아래는 내가 AI에게 보낸 프롬프트와 받은 답변이야. 답변이 너무 추상적이거나 실행하기 어렵다. 더 구체적인 분석 결과를 얻기 위해 프롬프트를 개선해줘. [내가 보낸 프롬프트] {붙여넣기} [AI가 준 답변] {붙여넣기} [부족했던 점] {예: 데이터 단위 확인이 없음 / 코드가 실행되지 않음 / 그래프 해석이 과장됨} 다음 형식으로 답해줘. 1. 기존 프롬프트의 약점 2. AI가 오해할 수 있는 표현 3. 개선된 프롬프트 완성본 4. 분석 전에 추가로 제공해야 할 정보 5. 후속 질문 5개

데이터 딕셔너리 만들기

언제열 이름이 많거나 공공데이터 설명서를 함께 읽어야 할 때
입력자료열 이름, 데이터 설명서 일부, 샘플 행
받을결과열별 의미, 단위, 자료형, 분석 가능성, 확인 질문
다음 데이터의 데이터 딕셔너리를 만들어줘. 열 이름만 보고 단정하지 말고, 확실하지 않은 내용은 “확인 필요”로 표시해줘. [데이터 설명서 또는 수집 맥락] {붙여넣기} [열 이름] {붙여넣기} [샘플 10행] {붙여넣기} 표 형식으로 정리해줘. - 열 이름 - 추정 의미 - 단위 - 자료형: 수치형/범주형/날짜형/텍스트형 - 분석에 사용할 수 있는지 - 주의할 오류 가능성 - 내가 원자료에서 확인해야 할 질문

결측치·중복·오타 점검

언제엑셀이나 CSV를 처음 불러온 직후
입력자료데이터 구조, 결측이 의심되는 열, 범주형 열
받을결과점검 코드와 처리 기준
다음 데이터에서 결측치, 중복 행, 범주형 오타, 날짜 형식 오류를 점검하고 싶다. [데이터 설명] {붙여넣기} [열 이름과 샘플] {붙여넣기} pandas 코드와 함께 다음 내용을 제시해줘. 1. 열별 결측률 계산 코드 2. 중복 행 확인 코드 3. 범주형 값의 고유값 확인 코드 4. 날짜 형식 변환 코드 5. 삭제·대체·보류를 결정하는 기준 6. 처리 전후 표본 수를 기록하는 방법 7. 결측치 처리가 결론에 줄 수 있는 영향

단위 변환과 스케일 점검

언제℃/K, mg/L/ppm, 날짜/시간 등 단위가 섞여 있을 때
입력자료열별 단위, 측정 방식, 분석 목표
받을결과단위 변환식, 표준화 여부, 검증 질문
다음 데이터는 여러 단위가 섞여 있을 가능성이 있다. 단위 오류를 막기 위한 점검표를 만들어줘. [열 이름과 단위] {예: temp_C, pressure_hPa, concentration_mg_L, time_sec} [분석 목표] {붙여넣기} 다음 형식으로 답해줘. 1. 반드시 통일해야 할 단위 2. 변환식과 변환 후 열 이름 3. 단위를 변환하면 안 되는 열 4. 모델 학습 전 표준화/정규화가 필요한 열 5. 단위 변환 전후 확인용 코드 6. 그래프 축에 표시해야 할 단위 7. 단위 오류가 결론을 왜곡하는 예시

실험 변인 구조 검토

언제실험데이터를 분석하기 전 조작변인·종속변인·통제변인을 정리할 때
입력자료실험 목적, 실험 조건, 측정값, 반복 수
받을결과변인표, 분석법 후보, 통제 실패 가능성
다음 실험을 데이터 분석 관점에서 검토해줘. [실험 목적] {붙여넣기} [실험 조건] {예: 온도 20/30/40/50℃, 조건당 5회 반복} [측정값] {예: 반응속도, 전압, 길이 변화, 색상값} [통제하려고 한 조건] {붙여넣기} 다음 표로 정리해줘. - 조작변인 - 종속변인 - 통제변인 - 반복 측정 구조 - 조건 간 비교에 적절한 분석법 - 오차가 생길 수 있는 지점 - 분석 전에 추가로 기록해야 할 정보

공공데이터 병합 전 점검

언제날씨+대기질, 인구+지역, 교통+위치처럼 여러 자료를 합칠 때
입력자료각 데이터의 키 열, 기간, 지역 단위, 샘플 행
받을결과병합 전략, 키 정합성 점검 코드
두 개 이상의 공공데이터를 병합하려고 한다. 잘못된 병합을 피하기 위한 절차를 설계해줘. [데이터 A] 출처: {붙여넣기} 키 열: {예: 날짜, 지역코드} 샘플: {붙여넣기} [데이터 B] 출처: {붙여넣기} 키 열: {예: 날짜, 지역코드} 샘플: {붙여넣기} 다음 순서로 답해줘. 1. 병합 기준 열 후보 2. 날짜·지역·ID 단위가 맞는지 확인할 질문 3. 중복 키와 누락 키 확인 코드 4. inner/left/right merge 중 어떤 방식을 쓸지 5. 병합 실패 행을 따로 저장하는 코드 6. 병합 후 생길 수 있는 가짜 상관 위험

분석 목적 분류와 방법 추천

언제어떤 분석법을 써야 할지 모를 때
입력자료분석 목표, 데이터 유형, 변수 목록, 표본 수
받을결과방법 후보 5개, 난이도, 장단점, 산출물
내 데이터에 맞는 분석법을 추천해줘. 단순히 어려운 방법을 추천하지 말고, 고등학생이 설명 가능한 방법부터 심화 방법까지 단계적으로 제시해줘. [분석 목표] {예: 비교 / 관계 확인 / 예측 / 분류 / 군집 / 이상 탐지 / 최적화} [데이터 유형] {예: 반복 측정 실험데이터, 공공데이터, 센서 로그, 이미지, 텍스트, 설문} [주요 변수] {붙여넣기} [표본 수] {예: 총 120행, 조건별 10회} 표 형식으로 답해줘. - 분석법 - 적합한 이유 - 필요한 전제 - 필요한 그래프 - Python 라이브러리 - 해석할 때 주의점 - 고등학생 발표 난이도

평균 비교 분석 설계

언제두 조건 또는 여러 조건의 실험 결과를 비교할 때
입력자료조건명, 반복 수, 측정값, 단위
받을결과요약통계, 오차막대, 효과크기, 해석 기준
조건별 측정값을 비교하려고 한다. 평균만 비교하지 말고 분산과 반복 수까지 고려한 분석 절차를 제안해줘. [조건] {예: pH 4, 6, 8, 10} [측정값과 단위] {예: reaction_rate(abs/min)} [반복 수] {예: 조건당 5회} 다음 내용을 포함해줘. 1. 조건별 평균, 중앙값, 표준편차, 표준오차 계산 코드 2. 오차막대 그래프 코드 3. 효과크기 또는 차이의 크기를 표현하는 방법 4. 반복 수가 적을 때 해석 주의점 5. “차이가 있다”와 “차이가 커 보인다”를 구분하는 문장 예시 6. 추가 실험이 필요한 경우

상관·회귀 분석 설계

언제두 변수의 관계를 보고 싶을 때
입력자료독립변수 후보, 종속변수, 산점도 맥락
받을결과상관, 회귀, 잔차, 인과 주의 문장
두 변수 사이의 관계를 분석하려고 한다. 상관분석과 회귀분석 중 무엇이 적절한지 판단하고, 인과 과장을 피하는 분석 절차를 제안해줘. [보고 싶은 관계] {예: 기온과 전력 사용량 / CO2 농도와 기공 개폐 정도 / 공부 시간과 점수} [변수와 단위] X: {붙여넣기} Y: {붙여넣기} [자료 수집 방식] {붙여넣기} 다음 형식으로 답해줘. 1. 먼저 그릴 산점도와 추세선 2. Pearson/Spearman 중 선택 기준 3. 단순회귀 코드 4. 잔차분석에서 볼 점 5. 누락 변수 후보 6. 인과 표현을 피한 결과 문장 예시 7. 후속 분석 아이디어

시계열 분석 루트

언제시간 순서가 중요한 센서·기상·주가·전력 데이터
입력자료시간 열, 측정 간격, 측정값, 분석 기간
받을결과이동평균, 추세, 이상 구간, 예측 주의점
시간순 데이터 분석 절차를 설계해줘. 시간 순서를 무작위로 섞는 방법은 피하고, 추세와 이상 구간을 구분해서 분석하고 싶다. [시간 열] {예: timestamp, 날짜, 측정시간} [측정 간격] {예: 1분마다, 하루마다, 월별} [측정값] {예: 온도, 미세먼지, 전압, 습도} [분석 목표] {예: 추세 확인, 이상 구간 탐지, 전후 비교, 간단한 예측} 다음 내용을 제시해줘. 1. 날짜형 변환과 정렬 코드 2. 결측 시간 구간 확인 코드 3. 이동평균과 원자료를 함께 그리는 그래프 4. 이상 구간 후보 탐지 방법 5. 시간 기반 train/test 분리 방법 6. 예측 결과 해석 주의점

분류 모델 설계

언제정상/이상, 합격/불합격, 종 종류 등 라벨을 예측할 때
입력자료라벨 열, 입력 변수, 표본 수, 클래스 비율
받을결과기준모델, 분류 모델, 혼동행렬, F1
라벨이 있는 데이터를 분류 모델로 분석하려고 한다. 정확도만 보지 말고 클래스 불균형과 오분류 사례까지 확인하는 절차를 제안해줘. [라벨 열] {예: normal/abnormal, species, pass/fail} [입력 변수] {붙여넣기} [클래스별 표본 수] {붙여넣기} 다음 순서로 답해줘. 1. 기준모델을 먼저 만드는 이유 2. train/test 분리 코드 3. 로지스틱 회귀 또는 결정트리 코드 4. 혼동행렬, 정밀도, 재현율, F1 계산 코드 5. 오분류 사례를 추출하는 코드 6. 어떤 오류가 더 중요한지 판단하는 질문 7. 보고서 해석 문장 예시

군집·PCA 분석 설계

언제라벨이 없는 다변량 데이터에서 유형을 찾고 싶을 때
입력자료수치형 변수 목록, 표본 수, 분석 목적
받을결과표준화, PCA, 군집, 군집 프로파일
라벨이 없는 다변량 데이터에서 패턴을 찾고 싶다. PCA와 K-means 군집분석을 적용할 수 있는지 검토해줘. [데이터 설명] {붙여넣기} [수치형 변수 목록] {붙여넣기} [표본 수] {붙여넣기} 다음 내용을 포함해줘. 1. 표준화가 필요한 이유와 코드 2. PCA를 먼저 해볼 때의 장점 3. K-means 군집 수 후보를 정하는 방법 4. 군집별 평균값 프로파일 표 5. 2차원 산점도 시각화 코드 6. 군집을 이름 붙일 때 주의점 7. 군집이 실제 원인 집단이라고 단정하지 않는 문장

텍스트 데이터 분석 설계

언제기사, 보고서, 설문 서술형 응답, 댓글을 분석할 때
입력자료텍스트 원문, 날짜/집단 열, 분석 목표
받을결과정제, 키워드, TF-IDF, 감성/주제 한계
텍스트 데이터를 분석하려고 한다. 단어 빈도만 세는 수준을 넘어, 전처리와 해석의 한계를 함께 고려한 절차를 제안해줘. [텍스트 데이터 종류] {예: 과학 기사 제목, 설문 서술형 응답, 동아리 활동 소감문} [비교하고 싶은 기준] {예: 시기별, 집단별, 주제별} [샘플 텍스트 10개] {붙여넣기} 다음 형식으로 답해줘. 1. 전처리 단계: 불용어, 특수문자, 중복 제거 2. 키워드 빈도 분석 코드 3. TF-IDF로 특징어 추출하는 방법 4. 워드클라우드보다 더 좋은 시각화 후보 5. 짧은 텍스트 분석의 한계 6. 개인정보와 민감 표현 처리 기준 7. 결과 문장 예시

이미지 데이터 분석 설계

언제식물 잎, 색 변화, 현미경 사진, 구름 사진 등을 수치화할 때
입력자료이미지 종류, 촬영 조건, 측정하고 싶은 특징
받을결과색상, 면적, 객체 수, 촬영 조건 검증
이미지 데이터를 수치화해서 분석하고 싶다. 딥러닝부터 제안하지 말고, 고등학생 수준에서 가능한 색상·면적·객체 수 분석부터 설계해줘. [이미지 대상] {예: 식물 잎, pH 지시약 색 변화, 현미경 세포 사진, 구름 사진} [촬영 조건] {예: 같은 조명, 같은 거리, 같은 배경 여부} [측정하고 싶은 특징] {예: 녹색 정도, 병반 면적, 객체 개수, 밝기 변화} 다음 내용을 포함해줘. 1. 촬영 조건을 통제해야 하는 이유 2. RGB/HSV 색상값으로 분석하는 방법 3. 임계값 분할로 면적을 구하는 절차 4. ImageJ 또는 Python 활용 방법 5. 결과 검증을 위해 사람이 확인할 표본 6. 이미지 분석에서 생길 수 있는 오류 7. 보고서 그래프와 캡션 예시

공간·지도 데이터 분석 설계

언제위도·경도, 지역별 미세먼지, 도시 열섬, 소음 측정값을 분석할 때
입력자료좌표, 지역 단위, 측정값, 기준점
받을결과지도화, 거리 분석, 격자화, 공간 해석 주의
위치 데이터 또는 지역별 데이터를 분석하려고 한다. 지도 시각화와 거리 기반 분석을 어떻게 할지 설계해줘. [데이터 설명] {예: 학교 주변 30개 지점에서 측정한 소음 dB와 위도·경도} [위치 정보] {예: 위도·경도 / 행정동 / 시군구} [측정값] {붙여넣기} [분석 목표] {예: 도로와의 거리와 소음의 관계, 지역별 열섬 패턴} 다음 내용을 제시해줘. 1. 좌표·지역명 오류 점검 방법 2. 지도에 측정값을 표시하는 방법 3. 기준점과 거리 계산 아이디어 4. 거리-측정값 산점도와 회귀분석 5. 공간 데이터에서 인과 과장을 피하는 이유 6. 개인정보·위치정보 주의점

pandas 분석 시작 코드

언제CSV/엑셀 파일을 Python에서 처음 불러올 때
입력자료파일명, 인코딩, 열 설명, 분석 목표
받을결과불러오기, 구조 확인, 기본 요약 코드
다음 데이터 파일을 pandas로 분석하기 위한 시작 코드를 작성해줘. 코드가 실행될 수 있도록 단계별로 주석을 달아줘. [파일 형식] {CSV/엑셀} [파일명] {예: data.csv} [열 설명] {붙여넣기} [분석 목표] {붙여넣기} 필수 포함 사항: 1. 라이브러리 import 2. 파일 불러오기 3. 행·열 수 확인 4. 상위 10행 출력 5. 자료형 확인 6. 결측치 요약 7. 수치형 기초통계 8. 범주형 고유값 확인 9. 이후 분석을 위한 주석 처리된 다음 단계

전처리 파이프라인 코드

언제수작업 전처리 대신 재현 가능한 코드를 만들 때
입력자료전처리 규칙, 결측 처리 기준, 파생변수
받을결과원자료 보존, 전처리본 생성, 로그 저장
원자료를 보존하면서 전처리본을 만드는 Python 코드를 작성해줘. [원자료 파일명] {붙여넣기} [전처리해야 할 내용] - 결측치: {처리 기준} - 이상치: {처리 기준} - 단위 변환: {처리 기준} - 파생변수: {계산식} 다음 조건을 지켜줘. 1. 원자료 파일은 수정하지 않는다. 2. 전처리 과정을 함수로 나눈다. 3. 처리 전후 행 수와 열 수를 출력한다. 4. 삭제된 행 또는 수정된 값을 로그로 남긴다. 5. 전처리본을 processed_data.csv로 저장한다. 6. 각 코드 줄에 목적을 주석으로 설명한다.

그래프 코드 정교화

언제그래프가 예쁘기보다 정확하게 읽히도록 만들 때
입력자료그래프 목적, x/y 변수, 단위, 비교 집단
받을결과축·단위·범례·캡션 포함 그래프 코드
다음 분석 결과를 시각화하려고 한다. 그래프를 정확하게 읽을 수 있도록 Python matplotlib 코드를 작성해줘. [그래프 목적] {예: 조건별 평균 비교 / 두 변수 관계 / 시간 변화 / 집단별 비율} [x축 변수와 단위] {붙여넣기} [y축 변수와 단위] {붙여넣기} [비교 집단] {있으면 입력} 다음 조건을 지켜줘. 1. 그래프 제목은 분석 질문을 반영한다. 2. x축·y축에 단위를 표시한다. 3. 표본 수가 필요하면 그래프 또는 캡션에 표시한다. 4. 평균 비교는 오차막대를 포함한다. 5. 색만으로 정보를 구분하지 않도록 범례를 넣는다. 6. 그래프 아래에 쓸 캡션 예시를 작성한다.

코드 오류 해결 요청

언제AI가 만든 코드가 실행되지 않거나 에러가 날 때
입력자료에러 메시지, 코드, 데이터 열 이름
받을결과오류 원인, 수정 코드, 예방 방법
아래 Python 코드에서 오류가 발생했다. 단순히 고친 코드만 주지 말고, 왜 오류가 났는지와 다시 막는 방법까지 설명해줘. [오류 메시지] {붙여넣기} [실행한 코드] {붙여넣기} [데이터 열 이름] {붙여넣기} 다음 형식으로 답해줘. 1. 오류의 직접 원인 2. 데이터 구조와 관련된 원인 가능성 3. 수정 코드 4. 수정 코드가 하는 일 5. 비슷한 오류를 막기 위한 점검 코드 6. 분석 결과가 달라질 수 있는 부분

머신러닝 기본 코드 요청

언제예측·분류 모델을 만들되 과적합을 피하고 싶을 때
입력자료입력 변수, 목표 변수, 데이터 크기, 문제 유형
받을결과분리, 기준모델, 학습, 평가, 해석 코드
다음 데이터로 머신러닝 모델을 만들려고 한다. 복잡한 모델보다 기준모델과 검증을 포함한 기본 코드를 작성해줘. [문제 유형] {회귀/분류} [목표 변수] {붙여넣기} [입력 변수] {붙여넣기} [데이터 크기] {예: 300행, 입력 변수 8개} 다음 내용을 포함해줘. 1. train/test 분리 코드 2. 기준모델 baseline 설정 3. 간단한 모델 1개 학습 코드 4. 회귀/분류에 맞는 평가 지표 5. 결과표 출력 코드 6. 과적합 여부를 확인하는 방법 7. 변수 중요도 또는 계수 해석 주의점 8. 데이터 누수 점검 질문

분석 노트북 주석 달기

언제코드 제출·공유·발표 전 코드 설명을 정리할 때
입력자료Python 코드 전체
받을결과셀별 목적, 코드 주석, 발표 설명문
아래 Python 분석 코드에 고등학생이 이해할 수 있는 주석을 달아줘. 단, 코드의 의미를 과장하지 말고 실제 동작만 설명해줘. [코드] {붙여넣기} 다음 형식으로 답해줘. 1. 코드 전체 흐름 요약 2. 셀 또는 블록별 목적 3. 주석이 포함된 수정 코드 4. 각 결과물이 분석에서 어떤 역할을 하는지 5. 발표에서 설명할 때 사용할 쉬운 문장 6. 코드가 틀릴 수 있는 부분과 확인 방법

AI 생성 코드 검증

언제AI가 만든 코드를 그대로 믿기 전에
입력자료코드, 데이터 구조, 원하는 결과
받을결과오류 가능성, 수정 코드, 검증 테스트
다음 코드를 데이터 분석 검토자 관점에서 점검해줘. 실행 가능성만 보지 말고 분석 오류도 찾아줘. [데이터 구조] {열 이름, 자료형, 샘플} [코드] {붙여넣기} [내가 얻고 싶은 결과] {붙여넣기} 검토 항목: 1. 열 이름이나 자료형 오류 2. 결측치 처리 오류 3. 단위 변환 오류 4. 데이터 누수 가능성 5. train/test 분리 오류 6. 통계 방법 부적절성 7. 그래프 축·단위 오류 8. 인과 해석 과장 9. 수정 코드 10. 수정 후 확인할 테스트

데이터 누수 집중 점검

언제모델 성능이 비정상적으로 높거나 예측 모델을 만들 때
입력자료목표 변수, 입력 변수 목록, 각 변수 측정 시점
받을결과누수 의심 변수, 제거 기준, 재분석 절차
예측 모델에서 데이터 누수가 있는지 점검해줘. [목표 변수] {붙여넣기} [입력 변수 목록] {붙여넣기} [각 변수의 측정 시점] {예: 결과 발생 전/후, 동시에 측정, 나중에 기록} 다음 표로 답해줘. - 변수명 - 누수 위험: 높음/중간/낮음 - 위험한 이유 - 제거 또는 수정 방법 - 제거 후 성능을 다시 비교하는 방법 마지막에 “성능이 높아도 믿기 어려운 경우”를 5가지로 정리해줘.

과적합·일반화 점검

언제모델이 훈련 데이터에서는 잘 맞지만 새 데이터에서 불안할 때
입력자료훈련 성능, 검증 성능, 데이터 크기, 모델 종류
받을결과과적합 판단, 교차검증, 단순 모델 비교
모델이 과적합되었는지 판단하고 싶다. 아래 정보를 바탕으로 점검 절차와 개선 방법을 알려줘. [모델 종류] {붙여넣기} [훈련 성능] {붙여넣기} [검증 또는 테스트 성능] {붙여넣기} [데이터 크기] {붙여넣기} 답변에 포함할 것: 1. 과적합 가능성 판단 2. 성능 차이를 해석하는 방법 3. 교차검증 코드 또는 절차 4. 더 단순한 모델과 비교하는 이유 5. 모델 복잡도를 줄이는 방법 6. 보고서에 쓸 수 있는 한계 문장

통계 가정 점검

언제t-test, ANOVA, 회귀분석 등 통계 방법을 쓸 때
입력자료분석법 후보, 데이터 분포, 표본 수
받을결과가정, 대안 분석법, 해석 주의
다음 분석법을 사용해도 되는지 통계적 가정을 점검해줘. 고등학생 수준으로 설명하되, 무리한 결론을 피하게 해줘. [사용하려는 분석법] {예: t-test, ANOVA, Pearson 상관, 선형회귀} [데이터 설명] {붙여넣기} [표본 수] {붙여넣기} 다음 형식으로 답해줘. 1. 이 분석법이 요구하는 기본 가정 2. 내 데이터에서 확인해야 할 그래프 3. 가정이 약하게 만족될 때 쓸 수 있는 대안 4. 분석 결과를 안전하게 표현하는 문장 5. 표본 수가 적을 때의 한계 6. 추가 실험 또는 추가 데이터가 필요한 경우

반례와 대체 설명 찾기

언제결론이 너무 그럴듯해 보여 비판적 검토가 필요할 때
입력자료주장, 근거 수치, 그래프, 데이터 수집 방식
받을결과반례, 누락 변수, 대체 설명, 추가 검증
내 분석 결론을 비판적으로 검토해줘. 결론을 무조건 강화하지 말고, 반례와 대체 설명을 적극적으로 찾아줘. [내 결론] {붙여넣기} [근거 수치 또는 그래프 설명] {붙여넣기} [데이터 수집 방식] {붙여넣기} 다음 항목으로 답해줘. 1. 결론을 약화시킬 수 있는 반례 2. 누락된 변수 후보 3. 같은 결과를 설명할 수 있는 다른 원인 4. 추가로 확인해야 할 그래프 5. 추가 실험 또는 데이터 수집 제안 6. 더 신중한 결론 문장으로 수정한 예시

재현 가능성 최종 점검

언제보고서 제출 전, 다른 사람이 같은 결과를 재현할 수 있게 만들 때
입력자료폴더 구조, 파일명, 코드, 결과물
받을결과재현 체크리스트, 누락 항목, 실행 순서
내 데이터 분석이 재현 가능한지 점검해줘. [폴더 구조] {붙여넣기} [파일 목록] {붙여넣기} [분석 코드 또는 노트북 구성] {붙여넣기} 다음 체크리스트로 답해줘. 1. 원자료가 보존되어 있는가 2. 전처리 과정이 코드로 남아 있는가 3. 그래프와 표가 어떤 코드에서 생성됐는가 4. 무작위성이 있다면 seed가 고정되어 있는가 5. 사용한 라이브러리와 버전 기록이 있는가 6. 결과를 다시 만들기 위한 실행 순서 7. 누락된 기록과 보완 방법

결과 문단 작성

언제분석 결과를 보고서 문장으로 바꿀 때
입력자료주요 수치, 그래프 설명, 분석법, 한계
받을결과관찰 사실·해석·한계가 분리된 문단
다음 분석 결과를 보고서의 결과 및 해석 문단으로 바꿔줘. 수치 근거 없이 단정하지 말고, 관찰된 사실과 가능한 해석을 분리해줘. [분석법] {예: 조건별 평균 비교, 상관분석, 선형회귀, 분류 모델} [주요 수치] {붙여넣기} [그래프에서 보이는 패턴] {붙여넣기} [한계] {붙여넣기} 문단 구조: 1. 관찰된 결과 2. 수치 근거 3. 가능한 해석 4. 대체 설명 또는 한계 5. 후속 분석 필요성 주의: 상관관계를 인과관계처럼 표현하지 말아줘.

그래프 캡션 작성

언제보고서와 발표자료에 그래프를 넣을 때
입력자료그래프 종류, 축 이름, 핵심 패턴, 표본 수
받을결과제목, 캡션, 발표 설명문
아래 그래프에 들어갈 제목과 캡션을 작성해줘. 그래프가 보여주는 사실과 해석을 구분해줘. [그래프 종류] {예: 산점도, 오차막대 그래프, 히스토그램, 혼동행렬, 시계열 그래프} [x축] {이름과 단위} [y축] {이름과 단위} [표본 수] {예: n=60, 조건당 5회} [핵심 패턴] {붙여넣기} 다음 형식으로 답해줘. 1. 그래프 제목 3안 2. 보고서용 캡션 2안 3. 발표에서 말할 30초 설명 4. 그래프 해석에서 피해야 할 표현 5. 축·단위·표본 수 표시 점검표

한계와 후속 분석 작성

언제결과가 나온 뒤 보고서의 논의 부분을 쓸 때
입력자료분석 결과, 데이터 제한, 실험 조건, 오류 가능성
받을결과한계, 보완 방법, 후속 분석
내 분석의 한계와 후속 분석을 작성해줘. “시간이 부족했다” 같은 일반적 표현이 아니라 데이터와 방법 중심으로 써줘. [분석 결과 요약] {붙여넣기} [데이터 제한] {예: 표본 수, 기간, 지역, 측정 장비, 반복 수} [분석법 제한] {붙여넣기} 다음 항목으로 정리해줘. 1. 데이터 품질의 한계 2. 표본 수와 대표성의 한계 3. 분석법 가정의 한계 4. 누락 변수 가능성 5. 결과 해석에서 조심할 점 6. 후속 분석 5가지 7. 후속 실험 또는 데이터 수집 계획

AI 활용 기록표 작성

언제AI 사용 과정을 투명하게 남길 때
입력자료사용한 프롬프트, AI 제안, 내가 수정한 부분
받을결과AI 활용 로그, 학생 판단 기록
내가 AI를 활용한 분석 과정을 투명하게 기록하려고 한다. 아래 내용을 바탕으로 AI 활용 기록표를 만들어줘. [사용한 AI 도구] {예: ChatGPT, Gemini, Claude 등} [프롬프트] {붙여넣기} [AI가 제안한 내용] {붙여넣기} [내가 직접 검증한 내용] {붙여넣기} [최종적으로 수정·반영한 내용] {붙여넣기} 표의 열은 다음과 같이 해줘. - 날짜 - 사용 목적 - 입력한 자료 - 프롬프트 요약 - AI 제안 - 직접 검증한 근거 - 수정한 내용 - 최종 반영 여부 - 남은 한계

발표 예상 질문 생성

언제발표나 면접 전에 분석 과정 질문을 준비할 때
입력자료보고서 요약, 데이터, 분석법, 결과, 한계
받을결과예상 질문, 답변 키워드, 추가 확인 자료
아래 데이터 분석 보고서를 바탕으로 발표에서 받을 수 있는 예상 질문을 만들어줘. 질문은 분석 과정을 실제로 이해했는지 확인하는 수준으로 만들어줘. [보고서 요약] {붙여넣기} [데이터와 분석법] {붙여넣기} [핵심 결과] {붙여넣기} [한계] {붙여넣기} 다음 영역별로 질문을 만들어줘. 1. 데이터 수집과 신뢰도 5개 2. 전처리와 이상치 5개 3. 분석법 선택 이유 5개 4. 그래프와 수치 해석 5개 5. 모델 검증과 한계 5개 6. AI 활용 과정 5개 각 질문마다 답변 키워드도 함께 제시해줘.

파생변수·특징공학 아이디어

언제원자료만으로 관계가 잘 보이지 않아 의미 있는 지표를 만들 때
입력자료원자료 변수, 교과 개념, 분석 목표
받을결과파생변수 후보, 계산식, 데이터 누수 위험
원자료에서 분석에 더 의미 있는 파생변수 또는 특징을 만들고 싶다. 교과 개념과 연결되는 변수만 제안해줘. [원자료 변수] {붙여넣기} [관련 교과 개념] {예: 속도, 가속도, 효율, 농도, 반응속도, 밀도, 엔트로피, 생장률, 다양도} [분석 목표] {붙여넣기} 다음 표로 답해줘. - 파생변수 이름 - 계산식 - 단위 - 관련 교과 개념 - 분석에 도움이 되는 이유 - 데이터 누수 위험 여부 - 그래프 또는 모델에서 활용 방법 - 해석 시 주의점

기준모델 baseline 설정

언제머신러닝 모델이 정말 의미 있는지 비교 기준이 필요할 때
입력자료예측/분류 문제, 목표 변수, 기존 간단한 규칙
받을결과baseline, 비교 지표, 개선 정도
내 모델이 의미 있는지 판단하기 위한 기준모델 baseline을 설계해줘. [문제 유형] {회귀/분류} [목표 변수] {붙여넣기} [현재 사용하려는 모델] {붙여넣기} [데이터 설명] {붙여넣기} 다음 내용을 제시해줘. 1. 가장 단순한 기준모델 정의 2. 기준모델 코드 3. 내 모델과 비교할 평가 지표 4. 개선율을 계산하는 방법 5. 기준모델보다 조금 나은 결과를 과장하지 않는 표현 6. 기준모델이 의외로 강할 때 해석하는 방법

설명가능성·변수 중요도 해석

언제모델이 어떤 변수를 중요하게 보는지 설명하고 싶을 때
입력자료모델 종류, 변수 목록, 성능 결과
받을결과중요도, 계수, 해석 주의, 후속 실험
모델의 변수 중요도를 해석하고 싶다. 단, 변수 중요도를 인과관계로 오해하지 않도록 설명해줘. [모델 종류] {예: 선형회귀, 로지스틱 회귀, 결정트리, 랜덤포레스트} [입력 변수 목록] {붙여넣기} [성능 결과] {붙여넣기} 다음 형식으로 답해줘. 1. 이 모델에서 변수 중요도가 계산되는 방식 2. 변수 중요도 그래프 코드 3. 중요도가 높은 변수의 해석 문장 4. 중요도와 인과관계의 차이 5. 상관된 변수 때문에 생길 수 있는 왜곡 6. 후속 실험 또는 검증 아이디어

오차 사례 분석

언제평균 성능보다 실패한 사례를 분석해 모델을 개선하고 싶을 때
입력자료실제값, 예측값, 입력 변수, 오차 기준
받을결과오차 상위 사례, 공통 특징, 개선안
모델이 크게 틀린 사례를 분석하고 싶다. 평균 성능만 보지 말고 오차가 큰 행의 공통 특징을 찾아줘. [실제값 열] {붙여넣기} [예측값 열] {붙여넣기} [입력 변수] {붙여넣기} [오차 기준] {예: 절대오차 상위 10개, 오분류 사례} 다음 내용을 포함해줘. 1. 오차 열을 만드는 코드 2. 오차가 큰 상위 사례 추출 코드 3. 오차 사례의 공통 특징을 찾는 방법 4. 측정 오류와 모델 한계를 구분하는 질문 5. 모델 개선 방법 6. 보고서에 쓸 오차 분석 문장

몬테카를로 시뮬레이션 설계

언제측정 오차나 불확실성이 결과에 미치는 영향을 보고 싶을 때
입력자료계산식, 입력값 범위, 오차 범위, 반복 횟수
받을결과시뮬레이션 절차, 결과 분포, 확률 해석
측정값의 불확실성을 반영해 몬테카를로 시뮬레이션을 해보고 싶다. [계산하려는 결과값] {예: 효율, 예상 농도, 에너지 절감량, 위험지수} [계산식] {붙여넣기} [입력 변수와 오차 범위] {예: 질량 10.0±0.2g, 시간 5.0±0.1s} [반복 횟수] {예: 10,000회} 다음 내용을 포함해줘. 1. 입력값을 어떤 분포로 가정할지 2. Python 시뮬레이션 코드 3. 결과값 평균, 표준편차, 신뢰구간 계산 4. 결과 분포 히스토그램 코드 5. 특정 기준을 넘을 확률 계산 6. 분포 가정의 한계 문장

최적화 분석 설계

언제조건 조합 중 가장 좋은 조건을 찾을 때
입력자료조작 가능한 변수, 결과 지표, 제약조건
받을결과grid search, 순위표, 검증 실험
여러 조건 조합에서 최적 조건을 찾고 싶다. 무작정 최고값 하나만 고르지 말고, 제약조건과 검증 실험까지 포함해 설계해줘. [조작 가능한 변수] {예: 온도, pH, 농도, 시간, 센서 위치} [결과 지표] {예: 반응속도, 정확도, 에너지 효율, 비용} [제약조건] {예: 안전 범위, 비용, 시간, 장비 한계} [측정 데이터] {붙여넣기} 다음 형식으로 답해줘. 1. 조건 조합표 구성 방법 2. grid search 또는 순위표 코드 3. 최고 조건과 안정적인 조건을 구분하는 기준 4. 조건별 결과 시각화 방법 5. 최적 조건 주변에서 추가 실험을 설계하는 방법 6. “최적”이라고 말할 수 있는 범위와 한계

프롬프트 조립기

데이터 유형과 분석 목표를 입력하면, AI에게 바로 보낼 수 있는 분석 요청문을 자동으로 구성합니다.

위 항목을 채운 뒤 “프롬프트 생성”을 누르세요.

AI 데이터 분석에서 자주 생기는 오류

AI를 활용할수록 결과가 그럴듯해 보이기 때문에, 오류를 찾는 루틴이 더 중요합니다.

데이터 누수

정답을 알 수 있는 미래 정보가 입력 변수에 들어가 성능이 비정상적으로 높아지는 오류입니다. 예: 시계열을 무작위 셔플하기, 결과값에서 만든 파생변수 포함.

인과 과장

상관분석이나 회귀분석 결과를 "원인"으로 단정하지 말고 관계·경향·가능성으로 표현합니다. 관찰 데이터로는 인과를 입증하기 어렵습니다.

🎯과적합

훈련 데이터에서는 잘 맞지만 새 데이터에서는 실패하는 모델입니다. 훈련/검증 점수 차이가 크면 의심합니다. 검증 분리와 교차검증이 필요합니다.

📏단위 오류

mg/L, ppm, ℃, K, 시간 단위가 섞이면 그래프와 모델이 모두 틀어집니다. 분석 전 단위 통일 점검표를 만드세요.

표본 불균형

정상 데이터가 대부분이면 정확도 95% 모델도 이상을 전혀 못 찾을 수 있습니다. 정밀도·재현율·F1을 함께 보세요.

📊그래프 왜곡

축 범위 조작, 부적절한 로그 스케일, 표본 수 누락, 오차막대 생략은 결론을 과장할 수 있습니다.

🤖AI 환각

AI가 없는 라이브러리, 틀린 통계 개념, 존재하지 않는 함수·논문·출처를 자신 있게 제안할 수 있습니다. 코드는 반드시 실행해 검증하세요.

📚출처·저작권

공공데이터, 이미지, 논문, 기사 자료는 출처와 이용 조건을 확인해야 합니다. 무단 사용은 표절·저작권 침해가 됩니다.

🔒개인정보

설문, 위치, 건강, 성적 관련 데이터는 익명화하고 민감정보를 AI에 직접 입력하지 않습니다. 이름·학번·연락처는 분석 전 마스킹합니다.

분석에 쓸 수 있는 공공·공개 데이터 출처

실제 데이터로 분석을 시작할 때 참고할 수 있는 한국·해외 데이터 포털입니다. 모든 데이터는 이용 조건과 저작권을 확인한 뒤 사용하세요.

공공데이터포털 한국

중앙·지방·공공기관 데이터의 통합 창구. 기상, 교통, 환경, 보건, 교육 등 광범위한 분야의 CSV·API 제공.

data.go.kr

국가통계포털(KOSIS) 한국

인구·가구·경제·사회 통계의 공식 출처. 시계열·지역별 비교 데이터에 강점.

kosis.kr

기상자료개방포털 한국

기상청의 관측·예보 데이터. 기온·강수·풍속·미세먼지 시계열 분석에 적합.

data.kma.go.kr

에어코리아 환경

전국 대기질 측정망 데이터. 미세먼지·오존·CO·NO₂ 등 시간별 측정값.

airkorea.or.kr

서울 열린데이터광장 지자체

서울시 행정·교통·관광·환경 데이터. 지역 단위 탐구에 유용. 다른 광역시도 비슷한 포털 운영.

data.seoul.go.kr

한국교육학술정보원 RISS 학술

국내 학술논문·학위논문·연구보고서 검색. 선행연구 정리에 활용.

riss.kr

Kaggle Datasets 해외

전 세계 사용자 공유 데이터셋과 노트북. 머신러닝 연습용 데이터가 풍부.

kaggle.com/datasets

UCI ML Repository 해외

오래 검증된 머신러닝용 데이터셋 모음. 분류·회귀·군집 학습용으로 적합.

archive.ics.uci.edu

Our World in Data 국제

인구·환경·보건·교육·경제의 국가 비교 데이터와 시각화. CSV 다운로드 제공.

ourworldindata.org

NASA Earth Data 과학

위성 관측, 기후, 해양 데이터. 환경·기후 탐구에 활용 가능.

earthdata.nasa.gov

NCBI / Ensembl 생명정보

유전자, 단백질, 생명정보 공개 데이터. 생명과학 탐구에 활용.

ncbi.nlm.nih.gov

국립국어원 모두의 말뭉치 텍스트

한국어 자연어 처리용 말뭉치. 텍스트 분석 학습에 활용.

corpus.korean.go.kr
데이터 사용 전 확인: ① 이용 약관과 라이선스(공공데이터 개방, CC-BY, MIT 등) ② 출처 표기 방법 ③ 개인정보 포함 여부 ④ 갱신 주기 ⑤ 측정 단위와 결측 표기 방식. 보고서에는 데이터 다운로드 날짜·URL·라이선스를 반드시 명시하세요.

AI 도구별 데이터 분석 활용 팁

대화형 AI마다 강점이 조금씩 다릅니다. 도구를 바꿔보고 결과를 비교하는 것도 중요한 검증 방법입니다.

대화형 LLM

ChatGPT, Claude, Gemini 등

분석 설계, 코드 초안, 결과 해석 문장 작성에 강점. 파일 업로드와 코드 실행을 지원하는 버전은 데이터 자체를 분석할 수도 있습니다.

분석 설계 코드 생성 해석 작성
활용 팁: 같은 질문을 두 개 이상의 도구에 보내 답변이 일치하는지 비교하면 환각을 줄일 수 있습니다.
코드 실행 환경

Google Colab, Jupyter

AI가 만든 Python 코드를 바로 실행해 결과를 확인할 수 있는 무료 클라우드 노트북. GPU도 일부 제공됩니다.

코드 실행 그래프 공유
활용 팁: 셀별로 실행하면서 중간 결과를 확인하세요. AI에게 코드를 받자마자 전부 실행하지 말고 한 셀씩 검증하는 것이 안전합니다.
No-code 분석

Excel, Google Sheets

코드 없이도 가능한 기초 분석 도구. AI 챗봇과 함께 쓰면 수식·피벗 사용법을 빠르게 익힐 수 있습니다.

기초 통계 차트 피벗
활용 팁: 100행 미만 소량 데이터의 EDA는 스프레드시트가 더 빠를 수 있습니다. 본격적 분석은 Python으로 전환하세요.
시각화

matplotlib, Plotly, Tableau Public

분석 결과를 발표용 그래프로 만드는 도구. matplotlib은 기본기에, Plotly는 인터랙티브에, Tableau Public은 대시보드에 강점.

정적 그래프 인터랙티브 대시보드
활용 팁: AI에게 "matplotlib으로 발표용 그래프를 만들어 줘. 제목, 축 라벨, 단위, 범례, 캡션 포함"이라고 요청하세요.
이미지·신호

ImageJ, OpenCV

이미지 분석 전문 도구. ImageJ는 GUI 기반으로 시작이 쉽고, OpenCV는 Python에서 정교한 처리가 가능.

면적 측정 색상 분석 객체 계수
활용 팁: 처음에는 ImageJ로 손쉽게 실험한 뒤, 반복 분석이 필요할 때 OpenCV로 자동화하면 좋습니다.
설문·수집

Google Forms, Kakao i Open

설문 데이터 수집과 CSV 내보내기. AI에게 설문 문항 검토와 응답 분석 코드까지 요청할 수 있습니다.

설문 자동 수집 CSV 출력
활용 팁: 설문 설계 단계부터 AI에게 "응답을 어떻게 분석할 수 있는지" 미리 물어 문항을 다듬으세요.
도구 비교 검증 루틴: ① 같은 데이터를 두 도구로 분석 ② 결과가 일치하면 신뢰도 ↑ ③ 일치하지 않으면 원인을 추적(전처리 차이, 함수 차이, 환경 차이) ④ 보고서에는 사용한 도구와 버전을 모두 기록.

AI·데이터 분석 윤리와 학술 정직성

기술적으로 가능하다는 것과 윤리적으로 정당하다는 것은 다릅니다. 보고서·논문·발표에 AI를 사용했다면 그 사실을 명시하는 것이 학술 정직성의 출발점입니다.

1개인정보·민감정보 보호

이름, 학번, 전화번호, 주소, 건강 정보, 가족 사항, 정확한 위치 등은 AI에 직접 입력하지 않습니다. 분석 전 단계에서 익명화·마스킹·집계 처리합니다.

  • 이름 → 일련번호로 치환
  • 주소 → 시군구 단위까지만 유지
  • 생년월일 → 연령대(10대, 20대)로 집계
  • 위도·경도 → 격자 단위로 흐리기

2저작권과 출처 표기

공공데이터, 논문, 이미지, 기사, 코드, AI 생성물 모두 출처와 라이선스를 확인합니다. CC-BY는 출처 표기 시 사용 가능, CC-NC는 비영리 한정, All Rights Reserved는 별도 허락 필요.

  • 데이터: 출처, URL, 다운로드 날짜, 라이선스
  • 코드: 참고한 글·라이브러리·AI 모델 명시
  • 이미지: 직접 촬영 / 라이선스 명시 / 출처 표기
  • AI 생성문: 어떤 AI를 어떻게 썼는지 기록

3AI 사용 명시

AI를 사용했다는 사실을 보고서·발표 자료에 명확히 적습니다. 어떤 부분에서 어떤 모델을 어떻게 사용했고, 학생이 어떻게 검증·수정했는지 함께 기록하면 표절 논란을 피할 수 있습니다.

  • 사용 모델과 버전(예: ChatGPT-4, Claude 3.5)
  • 사용 단계: 코드, 해석, 문장 다듬기 등
  • 학생이 직접 검증·수정한 내용
  • AI 생성문을 그대로 복붙하지 않기

4데이터 조작 금지

불리한 이상치를 임의로 삭제하거나 결과를 미리 정해놓고 분석하지 않습니다. 모든 전처리 결정은 측정 맥락과 사전 기준으로 정당화되어야 합니다.

  • 이상치 삭제 시 이유와 기준 기록
  • 여러 분석법 중 유리한 것만 골라 제시하지 않기
  • 그래프 축·스케일로 차이를 과장하지 않기
  • 분석 전 가설과 분석 후 결과를 구분해 기술

5표현의 정직성

실제 데이터가 보여준 것보다 더 강하게 해석하지 않습니다. "원인이다"보다 "관계가 관찰되었다", "증명되었다"보다 "지지하는 결과가 나왔다"가 정확합니다.

  • 인과 표현 자제: "원인" → "관계·경향"
  • 확정 표현 자제: "증명" → "시사·지지"
  • 적용 범위 명시: 측정 범위 밖 결론 금지
  • 한계 문단을 반드시 포함

6인간 대상 연구

친구·가족·학우를 대상으로 한 설문이나 측정은 사전에 연구 목적·익명성·중단 권리를 알리고 동의를 받습니다. 미성년자나 민감 주제는 보호자·교사와 상의합니다.

  • 참여 동의서(서면 또는 전자)
  • 익명 처리 약속
  • 중단 가능성 안내
  • 결과 공개 범위 합의
학교생활기록부·대회 제출 시 주의: AI를 사용한 부분을 숨기고 본인이 한 것처럼 작성하는 것은 학술 부정행위로 간주될 수 있습니다. "어떤 AI를 어떻게 활용했고, 어디서 직접 판단했는지"를 투명하게 적는 것이 오히려 AI 활용 역량을 보여주는 길입니다.

AI 데이터 분석 설계서 빌더

분석을 시작하기 전에 아래 항목을 채우면, AI에게 보낼 수 있는 분석 계획 프롬프트와 기록 양식이 만들어집니다.

위 항목을 채운 뒤 "분석 프롬프트 생성"을 누르세요. 결과는 ChatGPT, Claude, Gemini 등 대화형 AI에 바로 붙여 넣을 수 있는 형태로 만들어집니다.

자주 묻는 질문

고등학생들이 AI로 데이터 분석을 시작할 때 가장 많이 던지는 질문과 답변을 모았습니다.

가능합니다. 이 페이지의 코드 레시피를 그대로 Google Colab에 붙여 넣고 실행하면 결과를 볼 수 있습니다. 처음에는 코드를 읽고 어떤 단계가 무슨 일을 하는지 이해하는 것에 집중하세요. AI에게 "이 코드 한 줄씩 설명해줘"라고 요청하면 친절히 안내해 줍니다. 한 학기 정도 따라 하면 기본기는 충분히 갖춰집니다.
실행한 코드와 에러 메시지를 통째로 복사해 AI에게 다시 물어보세요. "이 에러가 났는데 원인과 해결책을 알려줘"라고 하면 대부분 해결됩니다. 자주 발생하는 원인은 ① 라이브러리 미설치(pip install로 해결) ② 파일 경로 오류 ③ 열 이름 불일치 ④ 데이터 자료형 문제입니다.
그대로 쓰면 안 됩니다. AI 답변은 ① 데이터 단위와 측정 맥락을 모릅니다 ② 환각으로 틀린 통계 개념을 자신 있게 말합니다 ③ 인과 과장 표현을 자주 씁니다. 반드시 학생이 결과를 검증하고, 본인의 언어로 다시 쓰며, 한계도 함께 기술해야 합니다. AI 사용 사실은 보고서에 명시하세요.
표본이 30개 미만이라면 머신러닝보다 기술통계와 시각화에 집중하는 편이 정직합니다. 분류 문제는 클래스당 30개 이상, 회귀 모델은 변수당 10개 이상의 표본을 권장합니다. 표본이 적으면 어떤 모델이든 과적합되기 쉽고, 결론이 표본 추출 운에 좌우됩니다. 부족한 데이터로 화려한 모델을 돌리는 것보다, 적은 데이터를 잘 설명하는 그래프와 한계 분석이 더 좋은 보고서를 만듭니다.
가설과 다른 결과도 훌륭한 결과입니다. 데이터가 보여주는 사실을 그대로 기술하고, 왜 가설과 달랐는지 가능한 이유를 분석하세요(① 가설의 전제 오류 ② 측정 조건 한계 ③ 표본 부족 ④ 통제하지 못한 변수). 가설에 맞도록 데이터를 조작하거나 분석법을 바꿔가며 유리한 결과를 고르는 것(cherry-picking)은 학술 부정행위입니다.
표본 수와 데이터 특성에 따라 다릅니다. 일반적으로 |r| ≥ 0.7은 강한 선형 관계로 해석하지만, ① 표본이 적으면 우연한 결과일 수 있고 ② 이상치 몇 개로 만들어진 상관일 수 있으며 ③ 비선형 관계는 r 값이 낮게 나옵니다. 산점도를 반드시 함께 확인하고, 잔차 분석으로 관계의 형태를 검토하세요. 그리고 "상관은 인과가 아니다"를 늘 기억하세요.
한국어는 조사가 단어에 붙어 영어식 공백 분리만으로는 정확한 분석이 어렵습니다. 해결책: ① KoNLPy 같은 형태소 분석 라이브러리 사용(Java 설치 필요) ② 간단한 분석은 명사만 추출 ③ 텍스트 길이가 짧으면 빈도보다는 키워드 클러스터로 접근. 환경 설치가 부담스럽다면 영문 자막·기사 데이터로 먼저 연습해보는 것도 방법입니다.
결과의 화려함보다 분석 과정의 진정성과 검증 노력이 더 중요합니다. 추천: ① 분석 질문을 본인 관심사에서 도출 ② AI 활용 단계와 본인의 판단을 구분해 기록 ③ 한계와 후속 분석 아이디어를 명확히 기술 ④ 분석에 사용한 데이터·코드·프롬프트를 정리한 별도 부록 작성. "AI가 다 해줬다"는 인상보다 "AI를 도구로 활용하면서도 본인이 주도했다"는 인상을 주는 것이 핵심입니다.
대부분의 AI 서비스는 입력 내용을 모델 학습이나 운영에 활용할 수 있습니다(약관 확인). 따라서 ① 개인정보·민감정보는 절대 업로드하지 않기 ② 학교·기관 비공개 자료는 사전 허락을 받기 ③ 가능하면 익명화된 샘플만 보여주기를 권장합니다. 일부 유료 플랜은 입력을 학습에 쓰지 않는다고 명시하기도 합니다.
파일 업로드와 코드 실행을 지원하는 AI(예: ChatGPT의 Advanced Data Analysis, Claude의 Analysis Tool 등)는 작은 데이터의 빠른 탐색에 매우 편리합니다. 다만 ① 데이터가 클라우드에 올라가는 점 ② 결과 재현이 어려운 점 ③ 보고서 코드로 그대로 쓰기 어려운 점이 있어, 탐색은 거기서, 최종 분석은 본인 환경(Colab/Jupyter)에서 재현하는 워크플로를 추천합니다.
메인