CoolFace
Apppublic

cadenza83/data-quality-checker

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
App README

πŸ” Data Quality Checker

λ°μ΄ν„°μ…‹μ˜ ν’ˆμ§ˆμ„ μ’…ν•© λΆ„μ„ν•˜κ³  ꡬ체적인 κ°œμ„  λ°©μ•ˆμ„ μ œμ‹œν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

✨ μ£Όμš” κΈ°λŠ₯

πŸ” μ’…ν•© ν’ˆμ§ˆ 뢄석

  • β€”κΈ°λ³Έ 톡계: 데이터 크기, νƒ€μž…, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 상세 뢄석
  • β€”ν’ˆμ§ˆ 문제 탐지: 쀑볡, κ²°μΈ‘κ°’, μ΄μƒμΉ˜, νƒ€μž… 뢈일치 μžλ™ 감지
  • —심각도 λΆ„λ₯˜: κΈ΄κΈ‰/주의/μ°Έκ³  μˆ˜μ€€μœΌλ‘œ μš°μ„ μˆœμœ„ μ œμ‹œ
  • —데이터 밀도: 전체 데이터 완성도 μΈ‘μ •

πŸ“Š 슀마트 데이터 뢄석

  • —뢄포 뢄석: μˆ˜μΉ˜ν˜•/λ²”μ£Όν˜• λ°μ΄ν„°μ˜ 톡계적 νŠΉμ„±
  • β€”ν΄λž˜μŠ€ λΆˆκ· ν˜•: 라벨 뢄포 λΆˆκ· ν˜• μžλ™ 탐지 및 λΉ„μœ¨ 계산
  • β€”ν…μŠ€νŠΈ 뢄석: NLP용 ν…μŠ€νŠΈ 길이 뢄석 및 ꢌμž₯사항
  • —상관관계: 컬럼 κ°„ 관계성 뢄석

πŸ“ˆ μΈν„°λž™ν‹°λΈŒ μ‹œκ°ν™”

  • β€”κ²°μΈ‘κ°’ 뢄포 차트: μ»¬λŸΌλ³„ λˆ„λ½ 데이터 μ‹œκ°ν™”
  • —데이터 뢄포 νžˆμŠ€ν† κ·Έλž¨: μˆ˜μΉ˜ν˜• 데이터 뢄포 및 λ°•μŠ€ν”Œλ‘―
  • β€”μΉ΄ν…Œκ³ λ¦¬ 파이차트: λ²”μ£Όν˜• 데이터 λΉ„μœ¨ μ‹œκ°ν™”
  • —상관관계 히트맡: λ³€μˆ˜ κ°„ 상관성 맀트릭슀

πŸ’‘ μ‹€μš©μ  κ°œμ„  μ œμ•ˆ

  • β€”μš°μ„ μˆœμœ„λ³„ μ‹€ν–‰ κ³„νš: 단계적 데이터 μ •μ œ λ‘œλ“œλ§΅
  • —ꡬ체적인 Python μ½”λ“œ: λ³΅μ‚¬ν•΄μ„œ λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ
  • β€”μ˜ˆμƒ 효과: μ •μ œ ν›„ κΈ°λŒ€λ˜λŠ” μ„±λŠ₯ κ°œμ„  정보
  • β€”μ²΄ν¬λ¦¬μŠ€νŠΈ: 데이터 ν’ˆμ§ˆ 관리 λͺ¨λ²” 사둀

πŸš€ μ‚¬μš©λ²•

1️⃣ 데이터 μ—…λ‘œλ“œ

μ§€μ›ν•˜λŠ” 파일 ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό μ—…λ‘œλ“œν•˜μ„Έμš”:

CSV μ˜ˆμ‹œ:

csv
name,age,city,salary
κΉ€μ² μˆ˜,25,μ„œμšΈ,3000
이영희,,λΆ€μ‚°,
λ°•λ―Όμˆ˜,30,λŒ€κ΅¬,4500
κΉ€μ² μˆ˜,25,μ„œμšΈ,3000

JSON μ˜ˆμ‹œ:

json
[
  {"name": "κΉ€μ² μˆ˜", "age": 25, "city": "μ„œμšΈ", "salary": 3000},
  {"name": "이영희", "age": null, "city": "λΆ€μ‚°", "salary": null},
  {"name": "λ°•λ―Όμˆ˜", "age": 30, "city": "λŒ€κ΅¬", "salary": 4500}
]

2️⃣ μžλ™ ν’ˆμ§ˆ 뢄석

"ν’ˆμ§ˆ 뢄석 μ‹€ν–‰" λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ λ‹€μŒ 뢄석이 μžλ™μœΌλ‘œ μˆ˜ν–‰λ©λ‹ˆλ‹€:

  • —데이터 ꡬ쑰 및 κΈ°λ³Έ 톡계
  • β€”ν’ˆμ§ˆ 문제 μžλ™ 탐지
  • —뢄포 및 κ· ν˜•λ„ 뢄석
  • β€”μ‹œκ°ν™” 차트 생성
  • β€”λ§žμΆ€ν˜• κ°œμ„  μ œμ•ˆ

3️⃣ κ²°κ³Ό 확인 및 적용

5개 νƒ­μ—μ„œ 뢄석 κ²°κ³Όλ₯Ό ν™•μΈν•˜κ³  μ œμ•ˆλœ μ½”λ“œλ₯Ό μ μš©ν•˜μ„Έμš”.

πŸ” 뢄석 ν•­λͺ©

κΈ°λ³Έ 정보 뢄석

  • —데이터 크기: ν–‰/μ—΄ 수, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰
  • —데이터 밀도: 전체 데이터 완성도 (%)
  • β€”μ»¬λŸΌ 정보: νƒ€μž…, κ²°μΈ‘κ°’, κ³ μœ κ°’, μƒ˜ν”Œ 데이터

ν’ˆμ§ˆ 문제 탐지

πŸ”„ 쀑볡 데이터
  • β€”λ™μΌν•œ ν–‰ μžλ™ 탐지
  • —쀑볡 λΉ„μœ¨ 계산
  • β€”drop_duplicates() μ½”λ“œ 제곡
❓ κ²°μΈ‘κ°’ 뢄석
  • β€”μ»¬λŸΌλ³„ κ²°μΈ‘κ°’ λΉ„μœ¨
  • —높은 κ²°μΈ‘λ₯  컬럼 κ²½κ³  (50% 이상)
  • β€”μ μ ˆν•œ 처리 방법 μ œμ•ˆ
πŸ”€ 데이터 νƒ€μž… 뢈일치
  • β€”μˆ«μž μ»¬λŸΌμ— 문자 데이터 혼재 탐지
  • β€”νƒ€μž… λ³€ν™˜ κ°€λŠ₯μ„± 뢄석
  • β€”μ •μ œ 방법 μ œμ•ˆ
πŸ“ˆ μ΄μƒμΉ˜ 탐지
  • β€”IQR λ°©λ²•μœΌλ‘œ 톡계적 μ΄μƒμΉ˜ 탐지
  • β€”μ΄μƒμΉ˜ 개수 및 λΉ„μœ¨ 계산
  • β€”κ°’ λ²”μœ„ 및 κ²€ν†  ꢌμž₯사항
βš–οΈ 클래슀 λΆˆκ· ν˜•
  • —라벨 뢄포 λΆˆκ· ν˜• μžλ™ 탐지
  • β€”μ΅œλŒ€:μ΅œμ†Œ λΉ„μœ¨ 계산
  • β€”μƒ˜ν”Œλ§ 기법 μ œμ•ˆ (SMOTE λ“±)

뢄포 뢄석

πŸ“Š μˆ˜μΉ˜ν˜• 데이터
  • —평균, 쀑앙값, ν‘œμ€€νŽΈμ°¨
  • β€”μ΅œμ†Ÿκ°’, μ΅œλŒ“κ°’
  • —뢄포 νžˆμŠ€ν† κ·Έλž¨
🏷️ λ²”μ£Όν˜• 데이터
  • β€”μΉ΄ν…Œκ³ λ¦¬λ³„ λΉˆλ„ 및 λΉ„μœ¨
  • β€”μƒμœ„ 10개 μΉ΄ν…Œκ³ λ¦¬ ν‘œμ‹œ
  • β€”νŒŒμ΄μ°¨νŠΈ μ‹œκ°ν™”
πŸ“ ν…μŠ€νŠΈ 데이터 (NLP용)
  • —평균/μ΅œλ‹¨/졜μž₯ ν…μŠ€νŠΈ 길이
  • —길이 뢄포 뢄석
  • β€”ν…μŠ€νŠΈ 처리 ꢌμž₯사항

μ‹œκ°ν™”

κ²°μΈ‘κ°’ 뢄포
python
# μ»¬λŸΌλ³„ κ²°μΈ‘κ°’ 개수λ₯Ό λ§‰λŒ€μ°¨νŠΈλ‘œ ν‘œμ‹œ
missing_data = df.isnull().sum()
데이터 뢄포
python
# νžˆμŠ€ν† κ·Έλž¨ + λ°•μŠ€ν”Œλ‘―μœΌλ‘œ 뢄포 νŠΉμ„± νŒŒμ•…
px.histogram(df, x='column', marginal="box")
상관관계 히트맡
python
# μˆ˜μΉ˜ν˜• 컬럼 κ°„ 상관성 μ‹œκ°ν™”
corr_matrix = df.corr()
px.imshow(corr_matrix)

πŸ’‘ κ°œμ„  μ œμ•ˆ μ‹œμŠ€ν…œ

μš°μ„ μˆœμœ„λ³„ μ‹€ν–‰ κ³„νš

도ꡬ가 발견된 문제λ₯Ό μ‹¬κ°λ„λ³„λ‘œ λΆ„λ₯˜ν•˜κ³  단계적 ν•΄κ²° λ°©μ•ˆμ„ μ œμ‹œν•©λ‹ˆλ‹€:

🚨 κΈ΄κΈ‰ 쑰치 ν•„μš”
  • —쀑볡 데이터 5% 이상
  • β€”κ²°μΈ‘κ°’ 50% 이상 컬럼
  • β€”μ‹¬κ°ν•œ 클래슀 λΆˆκ· ν˜• (50:1 이상)
⚠️ 주의 ν•„μš”
  • —쀑볡 데이터 1-5%
  • —데이터 νƒ€μž… 뢈일치
  • —쀑간 정도 클래슀 λΆˆκ· ν˜• (10-50:1)
ℹ️ 참고사항
  • β€”κ²½λ―Έν•œ μ΄μƒμΉ˜ (1-5%)
  • β€”λ©”λͺ¨λ¦¬ μ΅œμ ν™” κ°€λŠ₯
  • β€”ν…μŠ€νŠΈ 길이 ꢌμž₯사항

ꡬ체적인 Python μ½”λ“œ

각 λ¬Έμ œμ— λŒ€ν•΄ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” μ½”λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€:

python
# 쀑볡 제거
df_clean = df.drop_duplicates()

# κ²°μΈ‘κ°’ 처리
df_clean = df.dropna()  # λ˜λŠ”
df_clean = df.fillna(method="forward")

# λ©”λͺ¨λ¦¬ μ΅œμ ν™”
for col in df.select_dtypes(include=["object"]).columns:
    if df[col].nunique() < len(df) * 0.5:
        df[col] = df[col].astype("category")

# 클래슀 λΆˆκ· ν˜• ν•΄κ²°
from imblearn.over_sampling import SMOTE
smote = SMOTE()
X_resampled, y_resampled = smote.fit_resample(X, y)

🎯 μ‚¬μš© 사둀

AI/ML μ—°κ΅¬μž

  • β€”λͺ¨λΈ ν•™μŠ΅ μ „ 데이터 검증: ν’ˆμ§ˆ λ¬Έμ œκ°€ μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯ 사전 νŒŒμ•…
  • —데이터 μ „μ²˜λ¦¬ κ³„νš: 체계적인 μ •μ œ λ‘œλ“œλ§΅ 수립
  • β€”μ‹€ν—˜ μž¬ν˜„μ„±: 데이터 ν’ˆμ§ˆ κΈ°μ€€ λ¬Έμ„œν™”

데이터 μ‚¬μ΄μ–Έν‹°μŠ€νŠΈ

  • β€”EDA μžλ™ν™”: 탐색적 데이터 뢄석 μ‹œκ°„ 단좕
  • —데이터 νŒŒμ΄ν”„λΌμΈ: ν’ˆμ§ˆ 체크λ₯Ό μžλ™ν™”λœ μ›Œν¬ν”Œλ‘œμš°μ— 톡합
  • β€”μ„±λŠ₯ μ΅œμ ν™”: 데이터 ν’ˆμ§ˆ κ°œμ„ μ„ ν†΅ν•œ λͺ¨λΈ μ„±λŠ₯ ν–₯상

κΈ°μ—… λ°μ΄ν„°νŒ€

  • —데이터 κ±°λ²„λ„ŒμŠ€: 전사 데이터 ν’ˆμ§ˆ ν‘œμ€€ 수립
  • β€”λΉ„μš© μ΅œμ ν™”: λΆˆν•„μš”ν•œ 데이터 μ €μž₯ 및 처리 λΉ„μš© μ ˆμ•½
  • β€”μ»΄ν”ŒλΌμ΄μ–ΈμŠ€: 데이터 ν’ˆμ§ˆ 감사 및 보고

ꡐ윑 & ν•™μŠ΅

  • —데이터 λ¦¬ν„°λŸ¬μ‹œ: 데이터 ν’ˆμ§ˆμ˜ μ€‘μš”μ„± ν•™μŠ΅
  • β€”μ‹€μŠ΅ 도ꡬ: λ‹€μ–‘ν•œ λ°μ΄ν„°μ…‹μœΌλ‘œ ν’ˆμ§ˆ 뢄석 μ—°μŠ΅
  • β€”λͺ¨λ²” 사둀: μ „λ¬Έκ°€ μˆ˜μ€€μ˜ 데이터 처리 방법 ν•™μŠ΅

πŸ”— μ™„λ²½ν•œ AI 개발 μ›Œν¬ν”Œλ‘œμš°

이 λ„κ΅¬λŠ” μ™„μ „ν•œ AI 개발 μƒνƒœκ³„μ˜ 핡심 κ΅¬μ„±μš”μ†Œμž…λ‹ˆλ‹€:

1️⃣ 데이터 ν’ˆμ§ˆ 확인

Data Quality Checker둜 데이터 문제 νŒŒμ•… 및 μ •μ œ λ°©μ•ˆ 수립 ← ν˜„μž¬ 도ꡬ

2️⃣ 데이터 μ •μ œ μž‘μ—…

μ œμ•ˆλœ Python μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€μ œ 데이터 μ •μ œ μˆ˜ν–‰

3️⃣ 포맷 λ³€ν™˜

[Dataset Converter](https://huggingface.co/spaces/cadenza83/dataset-converter)둜 μ •μ œλœ 데이터λ₯Ό Hugging Face ν‘œμ€€ 포맷으둜 λ³€ν™˜

4️⃣ λͺ¨λΈ 선택

[Model Search Tool](https://huggingface.co/spaces/cadenza83/model-search-tool)μ—μ„œ 데이터에 μ΅œμ ν™”λœ 사전 ν›ˆλ ¨ λͺ¨λΈ 탐색

5️⃣ 데λͺ¨ 생성

[Demo Generator](https://huggingface.co/spaces/cadenza83/demo-generator)둜 λͺ¨λΈ μ„±λŠ₯ μ‹œμ—°μš© μΈν„°λž™ν‹°λΈŒ 데λͺ¨ μ œμž‘

6️⃣ λ¬Έμ„œν™”

[Model Card Generator](https://huggingface.co/spaces/cadenza83/model-card-generator)둜 전문적인 λͺ¨λΈ λ¬Έμ„œ 및 메타데이터 생성

πŸ“Š ν’ˆμ§ˆ 점수 μ‹œμŠ€ν…œ

도ꡬ가 μžλ™μœΌλ‘œ κ³„μ‚°ν•˜λŠ” 데이터 ν’ˆμ§ˆ 점수:

  • β€”πŸŸ’ 우수 (90-100점): μ£Όμš” ν’ˆμ§ˆ 문제 μ—†μŒ, λ°”λ‘œ μ‚¬μš© κ°€λŠ₯
  • β€”πŸŸ‘ μ–‘ν˜Έ (70-89점): κ²½λ―Έν•œ 문제, κ°„λ‹¨ν•œ μ •μ œ ν›„ μ‚¬μš© κ°€λŠ₯
  • β€”πŸŸ  주의 (50-69점): 일뢀 ν’ˆμ§ˆ 문제, 체계적 μ •μ œ ν•„μš”
  • β€”πŸ”΄ λΆˆλŸ‰ (0-49점): μ‹¬κ°ν•œ ν’ˆμ§ˆ 문제, λŒ€λŒ€μ μΈ μ •μ œ ν•„μš”

πŸ› οΈ 기술적 νŠΉμ§•

κ°•κ±΄ν•œ 뢄석 μ—”μ§„

  • —닀쀑 파일 ν˜•μ‹: CSV, JSON, JSONL 지원
  • β€”λŒ€μš©λŸ‰ 처리: 효율적인 λ©”λͺ¨λ¦¬ 관리
  • β€”μ—λŸ¬ 처리: μ†μƒλœ 데이터에 λŒ€ν•œ μ•ˆμ „ν•œ 처리

μ§€λŠ₯ν˜• 문제 탐지

  • —톡계 기반: IQR, ν‘œμ€€νŽΈμ°¨ λ“± 톡계적 방법 ν™œμš©
  • —도메인 νŠΉν™”: ML/NLP에 νŠΉν™”λœ ν’ˆμ§ˆ κΈ°μ€€
  • β€”μž„κ³„κ°’ μ΅œμ ν™”: μ‹€λ¬΄μ§„μ˜ ν”Όλ“œλ°±μ„ λ°˜μ˜ν•œ 합리적 κΈ°μ€€

ν™•μž₯ κ°€λŠ₯ν•œ μ•„ν‚€ν…μ²˜

  • β€”λͺ¨λ“ˆν™”: μƒˆλ‘œμš΄ 뢄석 κΈ°λŠ₯ μ‰½κ²Œ μΆ”κ°€ κ°€λŠ₯
  • β€”μ»€μŠ€ν„°λ§ˆμ΄μ§•: 도메인별 특수 μš”κ΅¬μ‚¬ν•­ 반영 κ°€λŠ₯
  • β€”API 연동: μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Όμ˜ 톡합 지원

πŸ“ˆ μ„±λŠ₯ μ΅œμ ν™”

λ©”λͺ¨λ¦¬ νš¨μœ¨μ„±

  • —청크 λ‹¨μœ„ 처리둜 λŒ€μš©λŸ‰ 데이터 지원
  • β€”μΉ΄ν…Œκ³ λ¦¬ νƒ€μž… μžλ™ λ³€ν™˜μœΌλ‘œ λ©”λͺ¨λ¦¬ μ ˆμ•½
  • β€”λΆˆν•„μš”ν•œ 데이터 볡사 μ΅œμ†Œν™”

처리 속도

  • β€”λ²‘ν„°ν™”λœ μ—°μ‚° μ‚¬μš©
  • —쀑볡 계산 μ΅œμ†Œν™”
  • —병렬 처리 κ°€λŠ₯ν•œ λΆ€λΆ„ μ΅œμ ν™”

Made with ❀️ for the AI community

"κ³ ν’ˆμ§ˆ 데이터가 κ³ μ„±λŠ₯ λͺ¨λΈμ˜ μ‹œμž‘μž…λ‹ˆλ‹€"

톡계: 이 λ„κ΅¬λ‘œ λΆ„μ„λœ 데이터셋은 평균 23% 더 λ‚˜μ€ λͺ¨λΈ μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€.