AI를 활용한 공학적 연구 방법론
Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리
AI를 활용한 공학적 연구 방법론

전처리·시각화 +
크롤링 윤리

Session 4 / 8

pandas · matplotlib · seaborn · 논문 Figure · robots.txt · 판례

박수현 · aSSIST University · 2026

🎨 이미지 프롬프트(배경): "A balanced scale with data visualization charts on one side and a legal book with gavel on the other, soft teal and red lighting, editorial illustration, no text, 16:9"

LLM · API · 웹스크래핑 기반 연구 데이터 파이프라인
AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

이번 시간을 마치면

개념적으로

  • ✅ pandas 5대 동사(filter, select, groupby, sort, merge) 를 구분
  • ✅ matplotlib vs seaborn 의 역할 분담
  • 논문 Figure 의 디자인 원칙
  • ✅ robots.txt 의 법적 효력 한계
  • ✅ 크롤링 관련 국내외 판례 4건

실습으로

  • ✅ 회차 3 데이터로 5종 차트 생성
  • ✅ 차트를 논문급 PNG (300 DPI) 저장 — DPI (Dots Per Inch) = 인쇄 해상도, 학술지 표준 300 DPI
  • ✅ HiQ vs LinkedIn 판례 토론

robots.txt = 사이트 루트의 텍스트 파일, 봇에게 어디까지 접근 허용할지 알려주는 약속 — 법적 강제력 ❌, 그러나 무시 = 차단·소송 빌미

📖 도서 매핑: Ch.6 §1~3 + Ch.9 §1~2 + Ch.4 §6

PART A

pandas
정제의 기술

엑셀의 100배 빠른 일을 한 줄로

키워드: DataFrame · groupby · merge · pivot · 결측치

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

엑셀 → pandas DataFrame — 첫 장면 비교

📊 엑셀 vs pandas 의 차이

작업 엑셀 pandas
1만 행 정렬 5초 < 1ms
그룹별 평균 피벗 4클릭 groupby 1줄
두 표 합치기 VLOOKUP 수동 merge 1줄
자동화 매크로 함수
재현성 수동 단계 코드로 기록

🎯 핵심 자료구조

  • Series = 한 컬럼 (1차원)
  • DataFrame = 2차원 표 (= 엑셀 시트)
  • Index = 행 라벨

엑셀에서 pandas 로

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기참고: examples/ch06/

DataFrame 핵심 5대 연산

💻 1·2·3 — Filter (조건 추출) / Select (컬럼 선택) / GroupBy (집계)

import pandas as pd
df = pd.read_csv("my_books.csv")

# 1) FILTER
df[df["rating"] >= 4]
df.query("price > 30 and rating >= 3")

# 2) SELECT
df[["title", "price"]]

# 3) GROUPBY
df.groupby("rating").agg(
    n=("title", "count"),
    avg_price=("price", "mean"),
    std_price=("price", "std"),
)

💻 4·5 — Sort (정렬) / Merge (병합)

# 4) SORT
df.sort_values("price",
               ascending=False).head(10)

# 5) MERGE
df.merge(other_df,
         on="title", how="left")

Split / Apply / Combine

🎯 이 5개로 연구 데이터 80% 처리.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

위 5대 연산을 만든 프롬프트

💬 Antigravity / ChatGPT 입력 analyze_books.py

📋 prompt prompts/ch06_prompts.md 📄 example examples/ch06/analyze_books.py

Python 스크립트 analyze_books.py 를 만들어 줘.
목적: 현재 디렉토리의 books.csv (컬럼: title, price,
rating, link; price 는 "£12.34" 같은 문자열)를
pandas 로 로드하고 구조/분포를 간단히 요약한다.

요구사항:
1. 라이브러리: pandas>=2.2
2. 파일 읽기: pd.read_csv("books.csv",
   encoding="utf-8-sig")
3. 단계별 동작:
   1) print(df.shape, df.dtypes) 로 구조 확인
   2) 가격 문자열에서 숫자만 추출:
      df["price_num"] = df["price"].str.replace(
          r"[^\d.]", "", regex=True).astype(float)
   3) df["rating"].value_counts().sort_index() 로
      평점 분포 출력
   4) df["price_num"].describe() 로 가격 분포 요약
4. 출력은 모두 print 로 — 터미널에서 바로 확인 가능
5. 에러 처리:
   - books.csv 가 없으면 안내 후 종료
   - price 변환 시 errors="coerce" 금지,
     실패 시 예외 출력
6. 0행이면 "데이터가 비어 있습니다." 후 종료

환경: Python 3.11, venv. 코드만, 한국어 주석 최소.

🎯 이 프롬프트의 핵심 패턴

  • 결과 파일명 명시 (analyze_books.py) → 단일 산출물
  • 입력 데이터 스키마 기술price 는 "£12.34" 같은 문자열 ← 이 한 줄이 AI 의 가격 파싱 코드를 정확하게 만듦
  • 단계별 동작 1) 2) 3) — 출력 순서까지 못박음
  • 에러 처리의 구체성 — "errors='coerce' 금지" 처럼 하지 말라는 것까지 적기
  • 0행 케이스 — 빈 데이터 안전망

💡 나만의 데이터에 적용 하려면:
"books.csv" → 본인 CSV 경로,
"rating" / "price" → 본인 컬럼명,
분포 종류는 그대로 두면 자동 적응.

📖 출처: ch06_prompts.md §13 — 실습 미니 프로젝트.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

결측치·중복·이상치 — 분석 전 3대 정제

IQR (Inter-Quartile Range) = Q3(75% 분위수) − Q1(25% 분위수). Tukey 의 1.5×IQR 규칙: Q1 − 1.5·IQR 미만 또는 Q3 + 1.5·IQR 초과 = 이상치 후보.

💻 점검 코드

# 1) 결측치 (NaN)
df.isna().sum()
df = df.dropna(subset=["price"])
df["stock"] = df["stock"].fillna("Unknown")

# 2) 중복
df.duplicated().sum()
df = df.drop_duplicates(subset=["title"])

# 3) 이상치 (IQR)
q1, q3 = df["price"].quantile([0.25, 0.75])
iqr = q3 - q1
mask = (df["price"] >= q1 - 1.5*iqr) & \
       (df["price"] <= q3 + 1.5*iqr)
df_clean = df[mask]

📋 결측치 처리 4가지

방법 사용 시점
dropna() 데이터 충분, 결측 적음
fillna(0) 0이 의미 있을 때
fillna(mean) 분포 보존
interpolate() 시계열
AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

groupby — 회차 3 책 데이터로 통계 표 작성

# 별점별 가격 통계
agg = df.groupby("rating").agg(
    count=("title", "size"),
    avg=("price", "mean"),
    median=("price", "median"),
    std=("price", "std"),
).round(2)
print(agg)
#         count    avg  median   std
# rating
# 1          50  35.21   34.80  9.43
# 2          ...

# pivot_table — 2차원 교차
df.pivot_table(
    index="rating", columns="in_stock",
    values="price", aggfunc="mean",
)

📌 groupby = 한 키로 묶어 집계 / pivot_table = groupby + 행/열 재배치 (멀티 인덱스도 가능).

PART B

matplotlib + seaborn
논문 Figure

한 그림에 한 메시지

키워드: Figure · Axes · 컬러팔레트 · 300 DPI

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

표 vs 차트 — 같은 데이터의 두 표현 방식

📋 표

별점 평균가(£) 표본(n)
1 35.21 50
2 38.45 100
3 41.30 250
4 43.10 300
5 47.88 200

£ = 영국 파운드 (books.toscrape 데이터)

표는 정확한 값을 본다. 학회 발표에서는 차트가 먼저.

📊 차트는 한 눈에

별점별 평균가 막대

표 vs 차트

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

matplotlib vs seaborn — 역할 분담

⚙️ matplotlib

  • 저수준 — Figure / Axes 객체를 직접 제어
  • 어떤 차트도 만들 수 있음
  • 기본 스타일이 단조로워 다듬어야 함
  • 코드 길어짐 자주

🎨 seaborn

  • 고수준 — 통계 차트 한 줄
  • 예쁜 기본값, 통계 분석 차트
  • 자유도 낮음
  • matplotlib 위에서 동작 (반환 Axes 를 matplotlib 으로 다듬을 수 있음)
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme(style="whitegrid", palette="colorblind")  # 톤
fig, ax = plt.subplots(figsize=(7, 4))
sns.barplot(data=df, x="rating", y="price", ax=ax)        # seaborn
ax.set_title("Average Price by Rating")                   # matplotlib
fig.savefig("fig1.png", dpi=300, bbox_inches="tight")     # matplotlib

🎯 seaborn 으로 그리고, matplotlib 으로 다듬는다.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기참고: examples/ch09/

논문급 차트 5종 — bar / line / scatter / box / heatmap

KDE (Kernel Density Estimation, 커널 밀도 추정) = 히스토그램에 곡선을 덧씌워 분포를 부드럽게 추정. cmap="vlag" = 양/음 발산 컬러맵 (상관계수 ±부호 시각화에 적합), center=0 = 0 을 중간 색으로.

💻 1줄 코드

# 1) 막대
sns.barplot(data=df, x="rating",
            y="price", errorbar="sd")

# 2) 박스
sns.boxplot(data=df, x="rating", y="price")

# 3) 히스토그램
sns.histplot(df["price"], bins=30, kde=True)

# 4) 산점도
sns.scatterplot(data=df, x="price",
                y="reviews", hue="rating")

# 5) 히트맵 — 상관관계
sns.heatmap(
    df[["price","rating","reviews"]].corr(),
    annot=True, cmap="vlag", center=0)

🖼️ 실제 출력 5종

📌 5종으로 학위논문의 90% 커버.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

5종 차트 — 코드와 실제 출력 매핑

📊 막대

bar

📊 히스토그램

hist

📈 박스플롯

box

📈 산점도

scatter

🎯 시각적 선택의 기준 = 무엇을 보여주고 싶은가.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

한 장 요약 차트를 만든 프롬프트

💬 Antigravity / ChatGPT 입력 books_summary.py

📋 prompt prompts/ch09_prompts.md 📄 example examples/ch09/books_summary.py

Python 스크립트 books_summary.py 를 만들어 줘.
목적: books.csv 에서 파생 변수 price_num 을 만들고
2x2 서브플롯으로 한 장짜리 데이터 요약 차트를
PNG 로 저장한다.

요구사항:
1. 라이브러리: pandas, matplotlib, seaborn.
   한글 폰트는 fontconf.setup_korean_font() 호출.
2. sns.set_theme(style="whitegrid") 적용.
3. 데이터 로드: pd.read_csv("books.csv",
   encoding="utf-8-sig"). price_num 파생.
4. fig, axes = plt.subplots(2, 2, figsize=(13, 9))
5. 서브플롯 4장:
   - axes[0,0] 평점 분포 막대 (#00b894)
   - axes[0,1] 가격 히스토그램, bins=30 (#6c5ce7)
   - axes[1,0] 평점별 가격 박스플롯 (palette="Set2")
   - axes[1,1] 가격 vs 평점 regplot (#e17055)
6. plt.suptitle("books.toscrape.com · 1000권 요약")
   + plt.tight_layout()
7. plt.savefig("books_summary.png", dpi=180,
              bbox_inches="tight")

에러 처리:
- books.csv 가 없거나 0행이면 안내 후 종료
- 한글 폰트 설정 실패 시 경고만 출력하고 진행

환경: Python 3.11, venv. 코드만, 한국어 주석 최소.

🎯 차트 프롬프트의 핵심 요소

  • 레이아웃 명시2x2 서브플롯, figsize=(13, 9)
    → AI 가 임의로 1x4 같은 다른 배치를 못 함
  • 각 셀의 차트 종류 + 색상 코드 까지 못박기
    → 브랜드 컬러 일관성 확보
  • 저장 옵션 (dpi=180, bbox_inches="tight") 까지 명시
    → 논문 게재 가능한 해상도 보장
  • 한글 폰트 헬퍼 호출 — 환경 의존 코드 분리

💡 연구용 응용 — 본인 분석 변수에 맞춰
"평점→온도", "가격→측정값" 으로
치환하면 즉시 본인 논문 Figure 1 로 사용 가능.

📖 출처: ch09_prompts.md §10 — 실습 books.csv 한 장 요약.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

seaborn 통계 차트 — heatmap / regplot 한 줄

🔥 상관관계 히트맵

sns.heatmap(df.corr(numeric_only=True),
    annot=True, cmap="vlag", center=0)

📉 회귀 + 신뢰구간

# 가격 vs 리뷰 수 — 두 연속형 변수의 회귀선 + 95% 신뢰구간
sns.regplot(data=df,
    x="price", y="reviews",
    scatter_kws={"alpha":0.4})

📌 별점(rating, 1~5 정수)처럼 범주형 변수는 regplot 보다 lmplot + x_jitter 권장 — 회귀선의 통계적 의미가 살아남.

📖 도서 참조: Ch.9 §6 — "seaborn 통계 분석 한 줄로"

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

논문 Figure 디자인 7원칙 — 학술지 게재 기준

📋 7원칙

# 원칙 코드 단서
1 300 DPI 이상 dpi=300
2 벡터 PDF/SVG (확대해도 안 깨짐) savefig("fig.pdf")
3 8.5~17 cm 너비 (대다수 학술지: 단일 컬럼 ≈ 8.5cm, 더블 컬럼 ≈ 17cm) figsize=(3.5, 2.5)
4 글꼴 8~10pt font.size=10
5 colorblind 팔레트 palette="colorblind"
6 축 라벨·단위 set_xlabel("Price (£)")
7 여백 자동 트림 bbox_inches="tight"

💻 한 번에 적용

plt.rcParams.update({
    "font.size": 10,
    "axes.titlesize": 11,
    "axes.labelsize": 10,
    "savefig.dpi": 300,
    "savefig.bbox": "tight",
    "font.family": "sans-serif",
})
AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

OS 별 한글 폰트 설정

import platform, matplotlib.pyplot as plt
from matplotlib import font_manager

if platform.system() == "Darwin":      # macOS
    plt.rcParams["font.family"] = "AppleGothic"
elif platform.system() == "Windows":
    plt.rcParams["font.family"] = "Malgun Gothic"
else:                                   # Linux/Colab
    # NanumGothic 설치: !apt-get install fonts-nanum
    plt.rcParams["font.family"] = "NanumGothic"

plt.rcParams["axes.unicode_minus"] = False  # 음수 깨짐 방지

자주 만나는 에러

  • □ □ □ (영문권에선 tofu — 폰트에 해당 글리프가 없을 때 표시되는 사각형) → 폰트 미설정
  • 음수 부호 깨짐 → unicode_minus=False

🎯 한 번 설정 → 모든 차트 적용.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기참고: prompts/ch09_prompts.md

30줄로 논문 Figure 1장

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 0) 폰트·테마
sns.set_theme(style="whitegrid", palette="colorblind",
              font_scale=1.0,
              rc={"axes.spines.top": False,
                  "axes.spines.right": False})

# 1) 로드
df = pd.read_csv("my_books.csv")

# 2) 차트
fig, ax = plt.subplots(figsize=(7, 4))
sns.barplot(data=df, x="rating", y="price", ax=ax,
            errorbar=("ci", 95))
ax.set_title("Average book price by star rating", fontsize=11)
ax.set_xlabel("Star rating")
ax.set_ylabel("Price (£)")

# 3) 저장
fig.savefig("fig_price_by_rating.pdf", dpi=300, bbox_inches="tight")
fig.savefig("fig_price_by_rating.png", dpi=300, bbox_inches="tight")
PART C

스크래핑 윤리
법적 책임과 매너

robots.txt 한 줄을 무시한 대가는 수억 원의 손해배상 — 야놀자·여기어때 사건에서 실제로 일어난 일입니다.

키워드: 법적 효력 · 이용약관 · 손해배상 · 판례

스크래핑 윤리

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

위반 5단계 — 합법 → 회색지대 → 약관 → 업무방해 → 개인정보

A 🟢 안전 robots.txt 준수
공개 · 합리적 빈도

B 🟡 회색 robots.txt 무시
but 공개 데이터

C 🟠 약관 위반 로그인·약관 명시
(민사 손해배상)

D 🔴 업무방해 과도한 요청
(형사 + 민사)

E ⚫ PII 위반 개인정보 수집
(형사·과징금)

단계 위험
🟢 A 안전 — 사이트 의사 존중 + 합리적 빈도
🟡 B 회색지대 — 법적 책임 약함, 도덕적 비난·차단 가능
🟠 C 약관 위반 (민사 손해배상 — 한국 판례에서 약관 위반 단독은 형사 무죄가 일반적)
🔴 D 업무방해 — 형법 §314 (컴퓨터등업무방해) + 민사
⚫ E 개인정보보호법 위반 (형사·과징금)

⚠️ 연구라도 C/D/E 영역은 IRB·법자문 필수.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

회차 0(OT)에서 다룬 판례 — 빠른 복습

판례 결과 주요 메시지
🇺🇸 HiQ vs LinkedIn 합의 종결, 사업 종료 CFAA (Computer Fraud and Abuse Act, 미국 컴퓨터사기남용법) 면해도 약관·계약은 살아있다
🇰🇷 잡코리아 vs 사람인 (2018) 민사 합의 — 약 120억 원 체계적·반복 크롤링 = 명백한 위법
🇰🇷 야놀자 vs 여기어때 (2022) 형사 무죄 / 민사 10억 형사 면해도 민사는 못 피함
🇰🇷 네이버 vs 다윈중개 (2024) 7~8천만 원 배상 DB 제작자 권리(§93) 적극 보호

🔑 시각화·분석 단계에서도 같은 원칙

수집 단계의 윤리 가 분석·시각화·재배포 모든 단계에 그대로 작동.
데이터셋을 공개 배포 할 때 잡코리아·다윈중개 판례가 그대로 적용 가능.

📚 상세 사실관계·출처 링크 → 회차 0(OT) PART C 참고

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

한국법 핵심 5조항 — 저작권 §93·§35의5 / 부경법 / 정통망법 / 개보법

법·조항 핵심 (웹스크래핑 맥락)
저작권법 제93조 (데이터베이스권) 사이트가 모아둔 DB 자체를 무단 복제·배포하면 위반 — 크롤링에서 가장 자주 걸리는 조항
저작권법 제35조의5 (공정이용) 비영리·교육·연구는 일부 허용 — 단 4요소(목적·성격·양·시장 영향) 종합 판단
부정경쟁방지법 제2조 (성과 도용) 남이 노력해 만든 결과물 무임승차 금지 — 최근 판례 다수
정보통신망법 제48조 (정보통신망 침해행위 등의 금지) 허락 없는 정보통신망 침입·장애 — 과도 크롤링이 여기 해당 가능 (형사 처벌 영역)
개인정보보호법 제15·17조 §15 수집 시 본인 동의 / §17 제3자 제공 시 별도 동의

연구자가 자주 의지하는 조항

저작권법 §35의5 (공정이용) — 비영리·교육·연구 목적이면 일부 허용.
단, 4가지 요소 종합 판단 (목적, 성격, 양, 시장 영향).

⚠️ "연구라서 괜찮다" 만으로는 방어 불충분. IRB + 법자문 권장.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

유럽 사이트 스크래핑 시 — GDPR

🇪🇺 GDPR 적용 대상

GDPR = General Data Protection Regulation (EU 일반 데이터 보호 규정, 2018)

  • EU 거주자의 개인정보
  • IP 주소·쿠키도 일부 포함
  • 위반 시 2천만 € 또는 전세계 매출 4% — 둘 중 큰 금액 (whichever is higher)

7원칙

  1. 적법성·공정성·투명성
  2. 목적 제한
  3. 데이터 최소화
  4. 정확성
  5. 저장 제한
  6. 무결성·기밀성
  7. 책임성

📌 회차 7 에서 한 시간 분량으로 자세히 다룸.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

윤리적 스크래퍼 체크리스트 — 시작 전 8문항 점검

  • [ ] 목적이 정당 한가? (연구·공익)
  • [ ] 공개 데이터 인가? (로그인 필요? → 회차 7)
  • [ ] 약관 (ToS — Terms of Service, 이용약관) 에 명시적 금지가 있나?
  • [ ] robots.txt 가 허용하나?
  • [ ] 요청 빈도 가 매너있나? (초당 1회 이하 권장)
  • [ ] 개인정보 가 포함되는가? (이름·전화·주소)
  • [ ] 재배포 의도가 있나?
  • [ ] 본인이 차단 통지 를 받으면 멈출 수 있나?

🎯 8개 중 1개라도 빨강 이면 → 멈추고 자문.

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

토론 (3-4명 그룹)

# 시나리오 의견?
1 본인 학위논문용으로 네이버 영화 별점 1만 건 수집 🟢 🟡 🔴 ?
2 같은 데이터를 GitHub 에 공개 데이터셋 으로 배포 🟢 🟡 🔴 ?
3 인스타그램 공개 게시물의 댓글 수집 (로그인 X) 🟢 🟡 🔴 ?
4 동일 데이터를 LLM 훈련 데이터 로 사용 🟢 🟡 🔴 ?
5 정부 공공데이터포털 API 로 5만 건 다운 🟢 🟡 🔴 ?
PART D

미니 실습
논문 Figure 1장

30줄로 다듬은 PDF 1장

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

미니 실습 — 본인 데이터로 논문 Figure 1장

1단계 — 데이터

  • [ ] 회차 3 의 my_books.csv 또는 본인 수집 데이터
  • [ ] df.describe() 확인

2단계 — 시각화

  • [ ] Figure 1: 별점별 평균가 (barplot, 95% CI)
  • [ ] Figure 2: 가격 분포 (histplot, kde=True)
  • [ ] Figure 3: 별점 vs 가격 (boxplot)

3단계 — 논문급 다듬기

  • [ ] 300 DPI PNG + PDF 저장
  • [ ] 한글 폰트 설정
  • [ ] 축 라벨 영문
  • [ ] 컬러팔레트 colorblind

제출

  • figures/ 폴더에 PNG + PDF 6개 + viz.py
PART E

데이터로 말하는
윤리적 연구자

AI를 활용한 공학적 연구 방법론·Session 4 · 데이터 전처리 및 시각화 + 크롤링 윤리출처: 바이브코딩 도서2Ch.6 pandas · Ch.9 차트로 말하기

오늘의 정리 8가지

  1. pandas 5대 동사 — filter / select / groupby / sort / merge
  2. 결측치·중복·이상치 = 분석 전 필수 점검
  3. groupby + agg — 통계표 1줄
  4. seaborn 으로 그리고, matplotlib 로 다듬기
  5. 300 DPI + bbox_inches="tight" = 논문 표준
  6. 한글 폰트 + unicode_minus=False
  7. 국내 판례 4건 — 잡코리아·여기어때·네이버 모두 손해배상
  8. 윤리 체크리스트 8항목 — 1개라도 빨강이면 멈춤

"예쁜 그림 + 단단한 논거 = 게재 통과의 절반."

1 / 29

목차 — Session 4

키보드 단축키 (뷰어)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차M

화면

전체화면F
테마 전환D
글자 크게 / 작게+ -
원래 크기 (100%)=
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
강의 종료 (메인으로)Q

키보드 단축키 (강사)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차 (Menu)M
전체화면F

화면

테마 전환D
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
툴바 펼치기 / 접기[ ]
강의 종료 (메인으로)Q

화면 확대

글자 크게 / 작게+ -
원래 크기 (100%)=
돋보기 (마우스 따라 2× 확대)V

발표자 도구 (PPT 호환)

화이트 화면W ,
블랙 화면B .
레이저 포인터L
펜 모드 ON/OFFP
펜 색상1 2 3 4
펜 자국 지우기 (현재 슬라이드)E
펜 — 마지막 스트로크 취소 (Undo)Z
펜 — 다시 (Redo)R
⏰ 쉬는시간 타이머T
📱 노트뷰 QR (휴대폰 동기화)N

PDF / 종료

PDF 저장 (슬라이드)Ctrl+P
강의 종료 (메인으로)Q X